Merge pull request #618 from tiwariav/task/4297/cms_favicon
Task/4297 dcl cms favicon as page attribute
This commit is contained in:
		
				commit
				
					
						d21e2a8abe
					
				
			
		
					 6 changed files with 94 additions and 6 deletions
				
			
		| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
from django.contrib import admin
 | 
					from django.contrib import admin
 | 
				
			||||||
from cms.admin.placeholderadmin import PlaceholderAdminMixin
 | 
					from cms.admin.placeholderadmin import PlaceholderAdminMixin
 | 
				
			||||||
from .cms_models import CMSIntegration
 | 
					from cms.extensions import PageExtensionAdmin
 | 
				
			||||||
 | 
					from .cms_models import CMSIntegration, CMSFaviconExtension
 | 
				
			||||||
from .models import VMPricing
 | 
					from .models import VMPricing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,5 +9,10 @@ class CMSIntegrationAdmin(PlaceholderAdminMixin, admin.ModelAdmin):
 | 
				
			||||||
    list_display = ('name', 'domain')
 | 
					    list_display = ('name', 'domain')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CMSFaviconExtensionAdmin(PageExtensionAdmin):
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
admin.site.register(CMSIntegration, CMSIntegrationAdmin)
 | 
					admin.site.register(CMSIntegration, CMSIntegrationAdmin)
 | 
				
			||||||
 | 
					admin.site.register(CMSFaviconExtension, CMSFaviconExtensionAdmin)
 | 
				
			||||||
admin.site.register(VMPricing)
 | 
					admin.site.register(VMPricing)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,12 @@
 | 
				
			||||||
 | 
					from cms.extensions import PageExtension
 | 
				
			||||||
 | 
					from cms.extensions.extension_pool import extension_pool
 | 
				
			||||||
from cms.models.fields import PlaceholderField
 | 
					from cms.models.fields import PlaceholderField
 | 
				
			||||||
from cms.models.pluginmodel import CMSPlugin
 | 
					from cms.models.pluginmodel import CMSPlugin
 | 
				
			||||||
from django.contrib.sites.models import Site
 | 
					from django.contrib.sites.models import Site
 | 
				
			||||||
from django.db import models
 | 
					from django.db import models
 | 
				
			||||||
from django.utils.safestring import mark_safe
 | 
					from django.utils.safestring import mark_safe
 | 
				
			||||||
from djangocms_text_ckeditor.fields import HTMLField
 | 
					from djangocms_text_ckeditor.fields import HTMLField
 | 
				
			||||||
 | 
					from filer.fields.file import FilerFileField
 | 
				
			||||||
from filer.fields.image import FilerImageField
 | 
					from filer.fields.image import FilerImageField
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from datacenterlight.models import VMPricing
 | 
					from datacenterlight.models import VMPricing
 | 
				
			||||||
| 
						 | 
					@ -32,9 +35,15 @@ class CMSIntegration(models.Model):
 | 
				
			||||||
        return self.name
 | 
					        return self.name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Models for CMS Plugins
 | 
					class CMSFaviconExtension(PageExtension):
 | 
				
			||||||
 | 
					    favicon = FilerFileField(related_name="cms_favicon_image")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extension_pool.register(CMSFaviconExtension)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Models for CMS Plugins
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DCLSectionPluginModel(CMSPlugin):
 | 
					class DCLSectionPluginModel(CMSPlugin):
 | 
				
			||||||
    heading = models.CharField(
 | 
					    heading = models.CharField(
 | 
				
			||||||
        blank=True, null=True, max_length=100,
 | 
					        blank=True, null=True, max_length=100,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								datacenterlight/cms_toolbar.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								datacenterlight/cms_toolbar.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					from cms.extensions.toolbar import ExtensionToolbar
 | 
				
			||||||
 | 
					from cms.toolbar_pool import toolbar_pool
 | 
				
			||||||
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .cms_models import CMSFaviconExtension
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@toolbar_pool.register
 | 
				
			||||||
 | 
					class CMSFaviconExtensionToolbar(ExtensionToolbar):
 | 
				
			||||||
 | 
					    # defineds the model for the current toolbar
 | 
				
			||||||
 | 
					    model = CMSFaviconExtension
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def populate(self):
 | 
				
			||||||
 | 
					        # setup the extension toolbar with permissions and sanity checks
 | 
				
			||||||
 | 
					        current_page_menu = self._setup_extension_toolbar()
 | 
				
			||||||
 | 
					        # if it's all ok
 | 
				
			||||||
 | 
					        if current_page_menu:
 | 
				
			||||||
 | 
					            # retrieves the instance of the current extension (if any) and the toolbar item url
 | 
				
			||||||
 | 
					            page_extension, url = self.get_page_extension_admin()
 | 
				
			||||||
 | 
					            if url:
 | 
				
			||||||
 | 
					                # adds a toolbar item
 | 
				
			||||||
 | 
					                current_page_menu.add_modal_item(
 | 
				
			||||||
 | 
					                    _('CMS Favicon'), url=url, disabled=not self.toolbar.edit_mode
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
							
								
								
									
										29
									
								
								datacenterlight/migrations/0019_cmsfaviconextension.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								datacenterlight/migrations/0019_cmsfaviconextension.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2018-04-12 03:16
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					import django.db.models.deletion
 | 
				
			||||||
 | 
					import filer.fields.file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('datacenterlight', '0018_auto_20180403_1930'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.CreateModel(
 | 
				
			||||||
 | 
					            name='CMSFaviconExtension',
 | 
				
			||||||
 | 
					            fields=[
 | 
				
			||||||
 | 
					                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 | 
				
			||||||
 | 
					                ('extended_object', models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, to='cms.Page')),
 | 
				
			||||||
 | 
					                ('favicon', filer.fields.file.FilerFileField(on_delete=django.db.models.deletion.CASCADE, related_name='cms_favicon_image', to='filer.File')),
 | 
				
			||||||
 | 
					                ('public_extension', models.OneToOneField(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='draft_extension', to='datacenterlight.CMSFaviconExtension')),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            options={
 | 
				
			||||||
 | 
					                'abstract': False,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
							
								
								
									
										16
									
								
								datacenterlight/migrations/0020_merge.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								datacenterlight/migrations/0020_merge.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2018-04-20 15:04
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('datacenterlight', '0019_auto_20180415_2236'),
 | 
				
			||||||
 | 
					        ('datacenterlight', '0019_cmsfaviconextension'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -8,9 +8,9 @@
 | 
				
			||||||
    <meta charset="utf-8">
 | 
					    <meta charset="utf-8">
 | 
				
			||||||
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
					    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
    <meta name="description" content="Data Center Light by ungleich">
 | 
					    <meta name="description" content="{% page_attribute 'meta_description' %}">
 | 
				
			||||||
    <meta name="author" content="ungleich glarus ag">
 | 
					    <meta name="author" content="ungleich glarus ag">
 | 
				
			||||||
    <title>{% page_attribute page_title %}</title>
 | 
					    <title>{% page_attribute "page_title" %}</title>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Vendor CSS -->
 | 
					    <!-- Vendor CSS -->
 | 
				
			||||||
    <!-- Bootstrap Core CSS -->
 | 
					    <!-- Bootstrap Core CSS -->
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,11 @@
 | 
				
			||||||
    <!-- External Fonts -->
 | 
					    <!-- External Fonts -->
 | 
				
			||||||
    <link href="//fonts.googleapis.com/css?family=Lato:300,400,600,700" rel="stylesheet" type="text/css">
 | 
					    <link href="//fonts.googleapis.com/css?family=Lato:300,400,600,700" rel="stylesheet" type="text/css">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <link rel="shortcut icon" href="{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon">
 | 
					    {% if request.current_page.cmsfaviconextension %}
 | 
				
			||||||
 | 
					        <link rel="shortcut icon" href="{% static request.current_page.cmsfaviconextension.favicon.url %}" type="image/x-icon">
 | 
				
			||||||
 | 
					    {% else %}
 | 
				
			||||||
 | 
					        <link rel="shortcut icon" href="{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon">
 | 
				
			||||||
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
 | 
					    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
 | 
				
			||||||
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
 | 
					    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
 | 
				
			||||||
| 
						 | 
					@ -52,7 +56,7 @@
 | 
				
			||||||
    {% placeholder 'Datacenterlight Header' or %}
 | 
					    {% placeholder 'Datacenterlight Header' or %}
 | 
				
			||||||
        <div class="dcl-header">
 | 
					        <div class="dcl-header">
 | 
				
			||||||
            <div class="container">
 | 
					            <div class="container">
 | 
				
			||||||
                <h1>{% page_attribute page_title %}</h1>
 | 
					                <h1>{% page_attribute "page_title" %}</h1>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    {% endplaceholder %}
 | 
					    {% endplaceholder %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue