diff --git a/ungleich_page/cms_plugins.py b/ungleich_page/cms_plugins.py index c8dbe735..766ccb8c 100644 --- a/ungleich_page/cms_plugins.py +++ b/ungleich_page/cms_plugins.py @@ -5,7 +5,9 @@ from .models import ( UngelichContactUsSection, UngelichTextSection, Service, ServiceItem, About, AboutItem, SectionWithImage, UngleichServiceItem, UngleichHeader, UngleichHeaderItem, UngleichProductItem, UngleichProduct, UngleichCustomer, - UngleichCustomerItem, UngleichHTMLOnly, UngleichSimpleHeader + UngleichCustomerItem, UngleichHTMLOnly, UngleichSimpleHeader, + UngleichHeaderWithBackgroundImageSlider, + UngleichHeaderWithBackgroundImageSliderItem ) @@ -224,6 +226,41 @@ class UngleichHeaderItemPlugin(CMSPluginBase): return context +@plugin_pool.register_plugin +class UngleichHeaderBackgroundImageAndTextSliderPlugin(CMSPluginBase): + name = "ungleich Header with Background and Image Slider Plugin" + model = UngleichHeaderWithBackgroundImageSlider + render_template = ( + 'ungleich_page/ungleich/header_with_background_image_slider.html' + ) + cache = False + allow_children = True + child_classes = ['UngleichHeaderBackgroundImageAndTextItemPlugin'] + + def render(self, context, instance, placeholder): + context['instance'] = instance + return context + + +@plugin_pool.register_plugin +class UngleichHeaderBackgroundImageAndTextItemPlugin(CMSPluginBase): + name = "ungleich Header with Background and Image and Text Item Plugin" + model = UngleichHeaderWithBackgroundImageSliderItem + render_template = ( + 'ungleich_page/ungleich/_header_with_background_image_slider_item.html' + ) + cache = False + require_parent = True + parent_classes = ['UngleichHeaderBackgroundImageAndTextSliderPlugin'] + + def render(self, context, instance, placeholder): + context = super( + UngleichHeaderBackgroundImageAndTextItemPlugin, self + ).render(context, instance, placeholder) + context['instance'] = instance + return context + + @plugin_pool.register_plugin class UngleichProductsPlugin(CMSPluginBase): name = "ungleich Products Plugin" diff --git a/ungleich_page/migrations/0016_ungleichheaderwithbackgroundimageslider_ungleichheaderwithbackgroundimageslideritem.py b/ungleich_page/migrations/0016_ungleichheaderwithbackgroundimageslider_ungleichheaderwithbackgroundimageslideritem.py new file mode 100644 index 00000000..acbff47b --- /dev/null +++ b/ungleich_page/migrations/0016_ungleichheaderwithbackgroundimageslider_ungleichheaderwithbackgroundimageslideritem.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2017-12-02 07:30 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import djangocms_text_ckeditor.fields +import filer.fields.image + + +class Migration(migrations.Migration): + + dependencies = [ + ('filer', '0004_auto_20160328_1434'), + ('cms', '0014_auto_20160404_1908'), + ('ungleich_page', '0015_ungleichsimpleheader'), + ] + + operations = [ + migrations.CreateModel( + name='UngleichHeaderWithBackgroundImageSlider', + fields=[ + ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')), + ('carousel_data_interval', models.IntegerField(default=2000)), + ], + options={ + 'abstract': False, + }, + bases=('cms.cmsplugin',), + ), + migrations.CreateModel( + name='UngleichHeaderWithBackgroundImageSliderItem', + fields=[ + ('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')), + ('description', djangocms_text_ckeditor.fields.HTMLField(default='<div class="intro-cap">We Design, Configure & Maintain <br>Your Linux Infrastructure</div><p class="intro_lead">Ruby on Rails, Django, Java, Webserver, Mailserver, any infrastructure that needs to configured, we provide comprehensive solutions. Amazon, rackspace or bare metal servers, we configure for you.</p><p style="text-align: right;"><a class="btn btn-trans" href="">Learn More</a></p>')), + ('background_image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ungleich_header_slider_item_image', to='filer.Image')), + ], + options={ + 'abstract': False, + }, + bases=('cms.cmsplugin',), + ), + ] diff --git a/ungleich_page/models.py b/ungleich_page/models.py index aec629ee..5c226ad4 100644 --- a/ungleich_page/models.py +++ b/ungleich_page/models.py @@ -124,6 +124,27 @@ class UngleichHeader(CMSPlugin): carousel_data_interval = models.IntegerField(default=5000) +class UngleichHeaderWithBackgroundImageSliderItem(CMSPlugin): + background_image = FilerImageField( + null=True, blank=True, + related_name="ungleich_header_slider_item_image", + on_delete=models.SET_NULL + ) + description = HTMLField( + default='<div class="intro-cap">We Design, Configure & Maintain ' + '<br>Your Linux Infrastructure</div><p class="intro_lead">' + 'Ruby on Rails, Django, Java, Webserver, Mailserver, any ' + 'infrastructure that needs to configured, we provide ' + 'comprehensive solutions. Amazon, rackspace or bare metal ' + 'servers, we configure for you.</p><p style="text-align: ' + 'right;"><a class="btn btn-trans" href="">Learn More</a></p>' + ) + + +class UngleichHeaderWithBackgroundImageSlider(CMSPlugin): + carousel_data_interval = models.IntegerField(default=2000) + + class UngleichHeaderItem(CMSPlugin): image = FilerImageField( null=True, diff --git a/ungleich_page/templates/ungleich_page/ungleich/_header_with_background_image_slider_item.html b/ungleich_page/templates/ungleich_page/ungleich/_header_with_background_image_slider_item.html new file mode 100644 index 00000000..063a0a7b --- /dev/null +++ b/ungleich_page/templates/ungleich_page/ungleich/_header_with_background_image_slider_item.html @@ -0,0 +1,4 @@ +<div class="bg_img" style="background-image:url({{ instance.background_image.url }})"></div> +<div class="container"> + {{ instance.description }} +</div> \ No newline at end of file diff --git a/ungleich_page/templates/ungleich_page/ungleich/header_with_background_image_slider.html b/ungleich_page/templates/ungleich_page/ungleich/header_with_background_image_slider.html new file mode 100644 index 00000000..a3ee0d37 --- /dev/null +++ b/ungleich_page/templates/ungleich_page/ungleich/header_with_background_image_slider.html @@ -0,0 +1,31 @@ +{% load cms_tags %} +<header class="header_slider"> + <div id="carousel-header-ungleich" class="carousel slide" data-interval="{{ instance.carousel_data_interval}}"> + <!-- Indicators --> + {% if instance.child_plugin_instances|length > 1 %} + <ol class="carousel-indicators"> + {% for plugin in instance.child_plugin_instances %} + <li data-target="#carousel-header-ungleich" data-slide-to="{{forloop.counter0}}" {% if forloop.counter0 == 0 %}class="active" {% endif %}></li> + {% endfor %} + </ol> + {% endif %} + <!-- Wrapper for slides --> + <div class="carousel-inner" role="listbox"> + {% for plugin in instance.child_plugin_instances %} + <div class="item {% if forloop.counter0 == 0 %}active{% endif %}"> + {% render_plugin plugin %} + </div> + {% endfor %} + </div> + {% if instance.child_plugin_instances|length > 1 %} + <a class="left carousel-control" href="#carousel-header-ungleich" role="button" data-slide="prev"> + <span class="fa fa-angle-left" aria-hidden="true"></span> + <span class="sr-only">Previous</span> + </a> + <a class="right carousel-control" href="#carousel-header-ungleich" role="button" data-slide="next"> + <span class="fa fa-angle-right" aria-hidden="true"></span> + <span class="sr-only">Next</span> + </a> + {% endif %} + </div> +</header> \ No newline at end of file