Add ungleich customer section, templates and migration
This commit is contained in:
parent
609a49cdbb
commit
85289c2eed
5 changed files with 138 additions and 2 deletions
|
@ -4,7 +4,8 @@ from cms.plugin_pool import plugin_pool
|
||||||
from .models import (
|
from .models import (
|
||||||
UngelichContactUsSection, UngelichTextSection, Service, ServiceItem,
|
UngelichContactUsSection, UngelichTextSection, Service, ServiceItem,
|
||||||
About, AboutItem, SectionWithImage, UngleichServiceItem, UngleichHeader,
|
About, AboutItem, SectionWithImage, UngleichServiceItem, UngleichHeader,
|
||||||
UngleichHeaderItem, UngleichProductItem, UngleichProduct
|
UngleichHeaderItem, UngleichProductItem, UngleichProduct, UngleichCustomer,
|
||||||
|
UngleichCustomerItem
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -241,3 +242,35 @@ class UngleichProductsItemPlugin(CMSPluginBase):
|
||||||
)
|
)
|
||||||
context['instance'] = instance
|
context['instance'] = instance
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
@plugin_pool.register_plugin
|
||||||
|
class UngleichCustomerSectionPlugin(CMSPluginBase):
|
||||||
|
name = "ungleich Customer Section Plugin"
|
||||||
|
model = UngleichCustomer
|
||||||
|
render_template = "ungleich_page/ungleich/section_customers.html"
|
||||||
|
cache = False
|
||||||
|
allow_children = True
|
||||||
|
child_classes = ['UngleichCustomerItemPlugin']
|
||||||
|
|
||||||
|
def render(self, context, instance, placeholder):
|
||||||
|
context['customer_instance'] = instance
|
||||||
|
context['section_id'] = get_section_id(instance, 'customer')
|
||||||
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
@plugin_pool.register_plugin
|
||||||
|
class UngleichCustomerItemPlugin(CMSPluginBase):
|
||||||
|
name = "ungleich Customer Item Plugin"
|
||||||
|
model = UngleichCustomerItem
|
||||||
|
render_template = "ungleich_page/ungleich/_customer_item.html"
|
||||||
|
cache = False
|
||||||
|
require_parent = True
|
||||||
|
parent_classes = ['UngleichCustomerSectionPlugin']
|
||||||
|
|
||||||
|
def render(self, context, instance, placeholder):
|
||||||
|
context = super(UngleichCustomerItemPlugin, self).render(
|
||||||
|
context, instance, placeholder
|
||||||
|
)
|
||||||
|
context['instance'] = instance
|
||||||
|
return context
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.4 on 2017-11-23 08:11
|
||||||
|
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', '0005_auto_20171015_0703'),
|
||||||
|
('cms', '0014_auto_20160404_1908'),
|
||||||
|
('ungleich_page', '0011_ungleichproduct_ungleichproductitem'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='UngleichCustomer',
|
||||||
|
fields=[
|
||||||
|
('service_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ungleich_page.Service')),
|
||||||
|
('section_class', models.CharField(blank=True, default='', max_length=100)),
|
||||||
|
('carousel_data_interval', models.IntegerField(default=3000)),
|
||||||
|
('bottom_text', djangocms_text_ckeditor.fields.HTMLField(default='<h3 class="section-subheading text-muted">*ungleich means not equal to (≠) U+2260.</h3>')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
bases=('ungleich_page.service',),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='UngleichCustomerItem',
|
||||||
|
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')),
|
||||||
|
('url', models.URLField(blank=True, default='', max_length=300)),
|
||||||
|
('description', djangocms_text_ckeditor.fields.HTMLField()),
|
||||||
|
('image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='customer_item_image', to='filer.Image')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
bases=('cms.cmsplugin',),
|
||||||
|
),
|
||||||
|
]
|
|
@ -123,4 +123,24 @@ class UngleichProductItem(ServiceItem):
|
||||||
|
|
||||||
|
|
||||||
class UngleichProduct(Service):
|
class UngleichProduct(Service):
|
||||||
section_class = models.CharField(max_length=100, default="", blank=True)
|
section_class = models.CharField(max_length=100, default="", blank=True)
|
||||||
|
|
||||||
|
|
||||||
|
class UngleichCustomer(Service):
|
||||||
|
section_class = models.CharField(max_length=100, default="", blank=True)
|
||||||
|
carousel_data_interval = models.IntegerField(default=3000)
|
||||||
|
bottom_text = HTMLField(
|
||||||
|
default='<h3 class="section-subheading text-muted">*ungleich means '
|
||||||
|
'not equal to (≠) U+2260.</h3>'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class UngleichCustomerItem(CMSPlugin):
|
||||||
|
image = FilerImageField(
|
||||||
|
null=True,
|
||||||
|
blank=True,
|
||||||
|
related_name="customer_item_image",
|
||||||
|
on_delete=models.SET_NULL
|
||||||
|
)
|
||||||
|
url = models.URLField(max_length=300, default="", blank=True)
|
||||||
|
description = HTMLField()
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
<a href="{{ instance.url }}"><img class="center-block img-client img-responsive" src="{{ instance.image.url}}"></a>
|
||||||
|
<p class="carousel-text text-muted text-center">{{ instance.description }}</p>
|
|
@ -0,0 +1,35 @@
|
||||||
|
{% load cms_tags custom_tags %}
|
||||||
|
<section id="{{section_id}}" class="{% if customer_instance.section_class %}{{ customer_instance.section_class }}{% else %}bg-light-gray{% endif %}">
|
||||||
|
<div class="container">
|
||||||
|
<div class="text-center wow fadeInDown" style="visibility: visible; animation-name: fadeInDown;">
|
||||||
|
<h2 class="section-heading">{{ customer_instance.title }}</h2>
|
||||||
|
<h3 class="text-muted">{{ customer_instance.sub_title }}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-10 col-sm-offset-1 wow fadeInDown" style="visibility: visible; animation-name: fadeInDown;">
|
||||||
|
<!-- start:recommendationSlider -->
|
||||||
|
<div id="carousel-recommendation-ungleich" class="carousel slide ungleich ungleich-gallery ungleich-gallery-text-carousel" data-ride="carousel" data-interval="{{ customer_instance.carousel_data_interval}}">
|
||||||
|
<!-- Indicators -->
|
||||||
|
<ol class="carousel-indicators">
|
||||||
|
{% for plugin in customer_instance.child_plugin_instances %}
|
||||||
|
<li data-target="#carousel-recommendation-ungleich" data-slide-to="{{forloop.counter0}}" {% if forloop.counter0 == 0 %}class="active" {% endif %}></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<!-- Wrapper for slides -->
|
||||||
|
<div class="carousel-inner" role="listbox">
|
||||||
|
{% for plugin in customer_instance.child_plugin_instances %}
|
||||||
|
<div class="item {% if forloop.counter0 == 0 %}active{% endif %}">
|
||||||
|
{% render_plugin plugin %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end:recommendationSlider -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="text-center">
|
||||||
|
{{customer_instance.bottom_text}}
|
||||||
|
</div>
|
||||||
|
</section>
|
Loading…
Reference in a new issue