Merge branch 'master' into task/3672/cleaning_existing_tests
This commit is contained in:
commit
45777878d7
30 changed files with 846 additions and 16 deletions
|
@ -1,3 +1,6 @@
|
|||
Next release:
|
||||
* #3843: [ungleich] Add generic ungleich CMS template
|
||||
|
||||
1.2.9: 2017-11-13
|
||||
* #3848: [ungleich] Optimize ungleich.ch landing page
|
||||
* #3360: [ungleich] Ungleich.ch landing page animation fix
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
ungleich
|
||||
========
|
||||
|
||||
[![Build Status](https://travis-ci.org/ungleich/dynamicweb.svg?branch=master)](https://travis-ci.org/ungleich/dynamicweb)
|
||||
|
||||
dynamicweb
|
||||
----------
|
||||
Website for ungleich GmbH
|
||||
|
|
|
@ -31,3 +31,14 @@ def get_value_from_dict(dict_data, key):
|
|||
return dict_data.get(key)
|
||||
else:
|
||||
return ""
|
||||
|
||||
|
||||
@register.filter('multiply')
|
||||
def multiply(value, arg):
|
||||
"""
|
||||
usage: {{ quantity|multiply:price }}
|
||||
:param value:
|
||||
:param arg:
|
||||
:return:
|
||||
"""
|
||||
return value*arg
|
||||
|
|
|
@ -219,6 +219,7 @@ CMS_TEMPLATES = (
|
|||
# dcl
|
||||
('datacenterlight/cms_page.html', gettext('Data Center Light')),
|
||||
('ungleich_page/glasfaser_cms_page.html', gettext('Glasfaser')),
|
||||
('ungleich_page/ungleich_cms_page.html', gettext('ungleich')),
|
||||
)
|
||||
|
||||
DATABASES = {
|
||||
|
|
|
@ -3,7 +3,9 @@ from cms.plugin_pool import plugin_pool
|
|||
|
||||
from .models import (
|
||||
UngelichContactUsSection, UngelichTextSection, Service, ServiceItem,
|
||||
About, AboutItem, SectionWithImage
|
||||
About, AboutItem, SectionWithImage, UngleichServiceItem, UngleichHeader,
|
||||
UngleichHeaderItem, UngleichProductItem, UngleichProduct, UngleichCustomer,
|
||||
UngleichCustomerItem, UngleichHTMLOnly, UngleichSimpleHeader
|
||||
)
|
||||
|
||||
|
||||
|
@ -145,3 +147,157 @@ class GlasfaserAboutItemPlugin(CMSPluginBase):
|
|||
)
|
||||
context['instance'] = instance
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class UngleichServicesPlugin(CMSPluginBase):
|
||||
name = "ungleich Services Plugin"
|
||||
model = Service
|
||||
render_template = "ungleich_page/ungleich/section_services.html"
|
||||
cache = False
|
||||
allow_children = True
|
||||
child_classes = ['UngleichServicesItemPlugin']
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context['service_instance'] = instance
|
||||
context['section_id'] = get_section_id(instance, 'services')
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class UngleichServicesItemPlugin(CMSPluginBase):
|
||||
name = "ungleich Service Item Plugin"
|
||||
model = UngleichServiceItem
|
||||
render_template = "ungleich_page/ungleich/_services_item.html"
|
||||
cache = False
|
||||
require_parent = True
|
||||
parent_classes = ['UngleichServicesPlugin']
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context = super(UngleichServicesItemPlugin, self).render(
|
||||
context, instance, placeholder
|
||||
)
|
||||
context['instance'] = instance
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class UngleichHeaderWithTextAndImagePlugin(CMSPluginBase):
|
||||
name = "ungleich Header with Text and Image Plugin"
|
||||
model = UngleichSimpleHeader
|
||||
render_template = "ungleich_page/ungleich/header.html"
|
||||
cache = False
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context['instance'] = instance
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class UngleichHeaderWithTextAndImageSliderPlugin(CMSPluginBase):
|
||||
name = "ungleich Header with Text and Image Slider Plugin"
|
||||
model = UngleichHeader
|
||||
render_template = "ungleich_page/ungleich/header_with_slider.html"
|
||||
cache = False
|
||||
allow_children = True
|
||||
child_classes = ['UngleichHeaderItemPlugin']
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context['instance'] = instance
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class UngleichHeaderItemPlugin(CMSPluginBase):
|
||||
name = "ungleich Header Item Plugin"
|
||||
model = UngleichHeaderItem
|
||||
render_template = "ungleich_page/ungleich/_header_item.html"
|
||||
cache = False
|
||||
require_parent = True
|
||||
parent_classes = ['UngleichHeaderWithTextAndImageSliderPlugin']
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context = super(UngleichHeaderItemPlugin, self).render(
|
||||
context, instance, placeholder
|
||||
)
|
||||
context['instance'] = instance
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class UngleichProductsPlugin(CMSPluginBase):
|
||||
name = "ungleich Products Plugin"
|
||||
model = UngleichProduct
|
||||
render_template = "ungleich_page/ungleich/section_products.html"
|
||||
cache = False
|
||||
allow_children = True
|
||||
child_classes = ['UngleichProductsItemPlugin']
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context['product_instance'] = instance
|
||||
context['section_id'] = get_section_id(instance, 'products')
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class UngleichProductsItemPlugin(CMSPluginBase):
|
||||
name = "ungleich Product Item Plugin"
|
||||
model = UngleichProductItem
|
||||
render_template = "ungleich_page/ungleich/_products_item.html"
|
||||
cache = False
|
||||
require_parent = True
|
||||
parent_classes = ['UngleichProductsPlugin']
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context = super(UngleichProductsItemPlugin, self).render(
|
||||
context, instance, placeholder
|
||||
)
|
||||
context['instance'] = instance
|
||||
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
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class UngleichHTMLPlugin(CMSPluginBase):
|
||||
name = "ungleich HTML Plugin"
|
||||
model = UngleichHTMLOnly
|
||||
render_template = "ungleich_page/ungleich/html_block.html"
|
||||
cache = False
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context = super(UngleichHTMLPlugin, self).render(
|
||||
context, instance, placeholder
|
||||
)
|
||||
context['instance'] = instance
|
||||
return context
|
||||
|
|
21
ungleich_page/migrations/0007_auto_20171117_1011.py
Normal file
21
ungleich_page/migrations/0007_auto_20171117_1011.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2017-11-17 10:11
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
import djangocms_text_ckeditor.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ungleich_page', '0006_aboutitem_link_url'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ungelichpicture',
|
||||
name='title',
|
||||
field=djangocms_text_ckeditor.fields.HTMLField(),
|
||||
),
|
||||
]
|
29
ungleich_page/migrations/0008_ungleichserviceitem.py
Normal file
29
ungleich_page/migrations/0008_ungleichserviceitem.py
Normal file
|
@ -0,0 +1,29 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2017-11-17 18:49
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import filer.fields.image
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('filer', '0004_auto_20160328_1434'),
|
||||
('ungleich_page', '0007_auto_20171117_1011'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UngleichServiceItem',
|
||||
fields=[
|
||||
('serviceitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ungleich_page.ServiceItem')),
|
||||
('data_replaced_image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='service_item_data_replaced_image', to='filer.Image')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('ungleich_page.serviceitem',),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,44 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2017-11-19 11:28
|
||||
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', '0008_ungleichserviceitem'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UngleichHeader',
|
||||
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=5000)),
|
||||
('background_image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ungleich_header_background_image', to='filer.Image')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cms.cmsplugin',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UngleichHeaderItem',
|
||||
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()),
|
||||
('image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ungleich_header_item_image', to='filer.Image')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cms.cmsplugin',),
|
||||
),
|
||||
]
|
21
ungleich_page/migrations/0010_auto_20171119_1404.py
Normal file
21
ungleich_page/migrations/0010_auto_20171119_1404.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2017-11-19 14:04
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
import djangocms_text_ckeditor.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ungleich_page', '0009_ungleichheader_ungleichheaderitem'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='service',
|
||||
name='sub_title',
|
||||
field=djangocms_text_ckeditor.fields.HTMLField(),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,38 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2017-11-21 19:04
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ungleich_page', '0010_auto_20171119_1404'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UngleichProduct',
|
||||
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)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('ungleich_page.service',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UngleichProductItem',
|
||||
fields=[
|
||||
('serviceitem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ungleich_page.ServiceItem')),
|
||||
('url', models.URLField(blank=True, default='', max_length=300)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('ungleich_page.serviceitem',),
|
||||
),
|
||||
]
|
|
@ -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', '0004_auto_20160328_1434'),
|
||||
('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',),
|
||||
),
|
||||
]
|
29
ungleich_page/migrations/0013_ungleichhtmlonly.py
Normal file
29
ungleich_page/migrations/0013_ungleichhtmlonly.py
Normal file
|
@ -0,0 +1,29 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2017-11-23 11:49
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import djangocms_text_ckeditor.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cms', '0014_auto_20160404_1908'),
|
||||
('ungleich_page', '0012_ungleichcustomer_ungleichcustomeritem'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UngleichHTMLOnly',
|
||||
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')),
|
||||
('HTML', djangocms_text_ckeditor.fields.HTMLField()),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cms.cmsplugin',),
|
||||
),
|
||||
]
|
20
ungleich_page/migrations/0014_ungleichhtmlonly_name.py
Normal file
20
ungleich_page/migrations/0014_ungleichhtmlonly_name.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2017-11-24 07:00
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ungleich_page', '0013_ungleichhtmlonly'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='ungleichhtmlonly',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, default='', max_length=50),
|
||||
),
|
||||
]
|
33
ungleich_page/migrations/0015_ungleichsimpleheader.py
Normal file
33
ungleich_page/migrations/0015_ungleichsimpleheader.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2017-11-24 19:12
|
||||
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', '0014_ungleichhtmlonly_name'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UngleichSimpleHeader',
|
||||
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')),
|
||||
('text', djangocms_text_ckeditor.fields.HTMLField()),
|
||||
('background_image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ungleich_simple_header_background_image', to='filer.Image')),
|
||||
('image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ungleich_simple_header_image', to='filer.Image')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cms.cmsplugin',),
|
||||
),
|
||||
]
|
|
@ -11,7 +11,7 @@ class UngelichPicture(CMSPlugin):
|
|||
related_name="image",
|
||||
on_delete=models.SET_NULL
|
||||
)
|
||||
title = models.CharField(max_length=400)
|
||||
title = HTMLField()
|
||||
|
||||
|
||||
class SectionWithImage(UngelichPicture):
|
||||
|
@ -54,7 +54,7 @@ class UngelichTextSection(CMSPlugin):
|
|||
class Service(CMSPlugin):
|
||||
menu_text = models.CharField(max_length=100, default="", blank=True)
|
||||
title = models.CharField(max_length=200)
|
||||
sub_title = models.CharField(max_length=200)
|
||||
sub_title = HTMLField()
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
@ -87,3 +87,84 @@ class AboutItem(UngelichPicture):
|
|||
return "{alignment} - {title}".format(
|
||||
alignment=alignment, title=self.title
|
||||
)
|
||||
|
||||
|
||||
class UngleichServiceItem(ServiceItem):
|
||||
data_replaced_image = FilerImageField(
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="service_item_data_replaced_image",
|
||||
on_delete=models.SET_NULL
|
||||
)
|
||||
|
||||
|
||||
class UngleichSimpleHeader(CMSPlugin):
|
||||
background_image = FilerImageField(
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="ungleich_simple_header_background_image",
|
||||
on_delete=models.SET_NULL
|
||||
)
|
||||
image = FilerImageField(
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="ungleich_simple_header_image",
|
||||
on_delete=models.SET_NULL
|
||||
)
|
||||
text = HTMLField()
|
||||
|
||||
|
||||
class UngleichHeader(CMSPlugin):
|
||||
background_image = FilerImageField(
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="ungleich_header_background_image",
|
||||
on_delete=models.SET_NULL
|
||||
)
|
||||
carousel_data_interval = models.IntegerField(default=5000)
|
||||
|
||||
|
||||
class UngleichHeaderItem(CMSPlugin):
|
||||
image = FilerImageField(
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="ungleich_header_item_image",
|
||||
on_delete=models.SET_NULL
|
||||
)
|
||||
description = HTMLField()
|
||||
|
||||
|
||||
class UngleichProductItem(ServiceItem):
|
||||
url = models.URLField(max_length=300, default="", blank=True)
|
||||
|
||||
|
||||
class UngleichProduct(Service):
|
||||
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()
|
||||
|
||||
|
||||
class UngleichHTMLOnly(CMSPlugin):
|
||||
name = models.CharField(max_length=50, default="", blank=True)
|
||||
HTML = HTMLField()
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
|
|
@ -7,6 +7,17 @@
|
|||
color: #494949;
|
||||
}
|
||||
|
||||
.header-vh {
|
||||
height: 30px;
|
||||
}
|
||||
.intro-cap-sans-transform p {
|
||||
font-family: 'Raleway', 'Helvetica Neue', 'Open Sans Bold', Helvetica, Arial, 'Arial Bold', sans-serif;
|
||||
font-size: 26px;
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
.intro-cap {
|
||||
font-family: 'Raleway', 'Helvetica Neue', 'Open Sans Bold', Helvetica, Arial, 'Arial Bold', sans-serif;
|
||||
font-size: 26px;
|
||||
|
@ -111,3 +122,52 @@
|
|||
paddding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.header_slider {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.header_slider > .carousel {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.header_slider > .carousel .item {
|
||||
padding-top: 150px;
|
||||
}
|
||||
|
||||
|
||||
.timeline>li .timeline-panel {
|
||||
display: flex;
|
||||
min-height: 80px;
|
||||
align-items: center;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.flex-justify-content-end{
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.flex-justify-content-start{
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.timeline>li.timeline-inverted>.timeline-panel {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
@media (min-width: 768px) and (max-width: 991px) {
|
||||
.timeline>li .timeline-panel {
|
||||
min-height: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.timeline>li .timeline-panel {
|
||||
min-height: 170px;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<img class="img-circle img-responsive" src="{{ instance.image.url }}" alt="">
|
||||
</div>
|
||||
{% if instance.link_url %}</a>{% endif %}
|
||||
<div class="timeline-panel wow {% if instance.inverted %}slideInRight{% else %}slideInLeft{% endif %}">
|
||||
<div class="timeline-panel wow {% if instance.inverted %}slideInRight flex-justify-content-start {% else %}slideInLeft flex-justify-content-end{% endif %}">
|
||||
<div class="timeline-body">
|
||||
<p>{{ instance.title }}</p>
|
||||
</div>
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
{% render_plugin plugin %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
|
@ -1,17 +1,36 @@
|
|||
{% load static %}
|
||||
{% load i18n %}
|
||||
|
||||
<header>
|
||||
<div class="container">
|
||||
<div class="intro-text">
|
||||
<img src="{% static 'ungleich_page/img/logo_200x200.svg'%}" heigh="300" alt="" class="logo-image" img-responsive="" width="300" />
|
||||
<p></p><p></p><br>
|
||||
<div class="intro-cap">
|
||||
<span class="intro-cap">
|
||||
{% trans "We Design, Configure & Maintain <br> Your Linux Infrastructure " %}
|
||||
</span>
|
||||
</div>
|
||||
<header class="header_slider">
|
||||
<div id="carousel-header-ungleich" class="carousel slide" data-ride="carousel" data-interval="5000">
|
||||
<!-- Indicators -->
|
||||
<ol class="carousel-indicators">
|
||||
<li data-target="#carousel-header-ungleich" data-slide-to="0" class="active"></li>
|
||||
<li data-target="#carousel-header-ungleich" data-slide-to="1"></li>
|
||||
<li data-target="#carousel-header-ungleich" data-slide-to="2"></li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
<!-- Wrapper for slides -->
|
||||
<div class="carousel-inner" role="listbox">
|
||||
<div class="item active">
|
||||
<div class="container">
|
||||
<div>
|
||||
<img src="{% static 'ungleich_page/img/logo_200x200.svg'%}" heigh="300" alt="" class="logo-image" img-responsive="" width="300" />
|
||||
<p></p><p></p><br>
|
||||
<div class="intro-cap">
|
||||
<span class="intro-cap">
|
||||
{% trans "We Design, Configure & Maintain <br> Your Linux Infrastructure " %}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<h1 style="color: #fff; margin-top: 150px;">slide 2</h1>
|
||||
</div>
|
||||
<div class="item">
|
||||
<h1 style="color: #fff; margin-top: 150px;">slide 3</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
|
@ -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,14 @@
|
|||
<div class="container">
|
||||
<div>
|
||||
{% if instance.image %}
|
||||
<img src="{{ instance.image.url }}" alt=""
|
||||
class="logo-image" img-responsive="" width="300"/>
|
||||
<div class="header-vh"></div>
|
||||
{% endif %}
|
||||
<div>
|
||||
<span class="intro-cap-sans-transform">
|
||||
{{ instance.description }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,6 @@
|
|||
<a href="{{ instance.url }}"><img src="{{ instance.image.url}}" class="img-responsive inline-block" alt=""></a>
|
||||
<div class="portfolio-caption inline-block">
|
||||
<h4>{{ instance.title }}</h4>
|
||||
<p> </p>
|
||||
<p class="text-muted">{{ instance.description }}</p>
|
||||
</div>
|
|
@ -0,0 +1,8 @@
|
|||
<div class="team-member wow fadeInUp" data-wow-delay="0.25s">
|
||||
<img src="{{ instance.image.url }}" data-replaced="{{ instance.data_replaced_image.url }}" class="img-responsive img-circle img-toggle" alt="">
|
||||
<div class="team-member-caption inline-block">
|
||||
<h4 class="portfolio-caption">{{ instance.title }}</h4>
|
||||
<p> </p>
|
||||
<p><span class="text-muted">{{ instance.description }}</span></p>
|
||||
</div>
|
||||
</div>
|
15
ungleich_page/templates/ungleich_page/ungleich/header.html
Normal file
15
ungleich_page/templates/ungleich_page/ungleich/header.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% load cms_tags %}
|
||||
<!-- Header -->
|
||||
<header style="background-image: url({{ instance.background_image.url }})">
|
||||
<div class="container">
|
||||
<div class="intro-text">
|
||||
<img src="{{ instance.image.url }}" alt="" class="logo-image" img-responsive="" width="300" />
|
||||
<p></p><p></p><br>
|
||||
<div class="intro-cap">
|
||||
<span class="intro-cap">
|
||||
{{ instance.text }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
|
@ -0,0 +1,21 @@
|
|||
{% load cms_tags %}
|
||||
<header class="header_slider" style="background-image: url({{ instance.background_image.url }})">
|
||||
<div id="carousel-header-ungleich" class="carousel slide" data-ride="carousel" 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>
|
||||
</div>
|
||||
</header>
|
|
@ -0,0 +1,5 @@
|
|||
{% load cms_tags static %}
|
||||
{{instance.HTML}}
|
||||
{% for plugin in instance.child_plugin_instances %}
|
||||
{% render_plugin plugin %}
|
||||
{% endfor %}
|
|
@ -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>
|
|
@ -0,0 +1,20 @@
|
|||
{% load cms_tags custom_tags %}
|
||||
<section id="{{section_id}}" class="products-section {% if product_instance.section_class %}{{ product_instance.section_class }}{% else %}bg-light-gray{% endif %}">
|
||||
<div id="portfolio">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 text-center wow fadeInDown" style="visibility: visible; animation-name: fadeInDown;">
|
||||
<h2 class="section-heading">{{ product_instance.title }}</h2>
|
||||
{{ product_instance.sub_title }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
{% for plugin in product_instance.child_plugin_instances %}
|
||||
<div class="col-md-4 col-sm-6 portfolio-item wow fadeInUp" data-wow-delay="{{ forloop.counter|multiply:0.25 }}s" style="visibility: visible; animation-delay: {{ forloop.counter|multiply:0.25 }}s; animation-name: fadeInUp;">
|
||||
{% render_plugin plugin %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
|
@ -0,0 +1,16 @@
|
|||
{% load cms_tags %}
|
||||
<section id="{{section_id}}">
|
||||
<div class="container">
|
||||
<div class="text-center wow fadeInDown">
|
||||
<h2 class="section-heading">{{ service_instance.title }}</h2>
|
||||
{{ service_instance.sub_title }}
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
{% for plugin in service_instance.child_plugin_instances %}
|
||||
<div class="col-sm-4">
|
||||
{% render_plugin plugin %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
75
ungleich_page/templates/ungleich_page/ungleich_cms_page.html
Normal file
75
ungleich_page/templates/ungleich_page/ungleich_cms_page.html
Normal file
|
@ -0,0 +1,75 @@
|
|||
{% load static i18n cms_tags sekizai_tags %}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>{% page_attribute "page_title" %}</title>
|
||||
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="{% static 'ungleich_page/css/lib/animate.min.css' %}" rel="stylesheet">
|
||||
<link href="//fonts.googleapis.com/css?family=Raleway|Montserrat:400,700|Droid+Serif:400,700,400italic,700italic|Roboto+Slab:400,100,300,700" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- 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:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Custom CSS -->
|
||||
<link href="{% static 'ungleich_page/css/agency.css' %}" rel="stylesheet">
|
||||
<link href="{% static 'ungleich_page/css/ungleich.css' %}" rel="stylesheet">
|
||||
{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
|
||||
{% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %}
|
||||
<!-- Google analytics -->
|
||||
{% include "google_analytics.html" %}
|
||||
<!-- End Google Analytics -->
|
||||
|
||||
<link rel="shortcut icon" href="{% static 'ungleich_page/img/favicon.ico' %}" type="image/x-icon">
|
||||
</head>
|
||||
|
||||
<body id="page-top" class="index">
|
||||
{% cms_toolbar %}
|
||||
{% placeholder 'Ungleich Page Contents' %}
|
||||
|
||||
<!-- Footer -->
|
||||
{% include "ungleich_page/includes/_footer.html" %}
|
||||
|
||||
<!-- jQuery -->
|
||||
<script src="{% static 'ungleich_page/js/jquery.js' %}" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
if ($(".has-error").length != 0) {
|
||||
window.location = window.location.pathname + "#contact"
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- Bootstrap Core JavaScript -->
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" type="text/javascript"></script>
|
||||
|
||||
<!-- Plugin JavaScript -->
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js" type="text/javascript"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/classie/1.0.1/classie.min.js" type="text/javascript"></script>
|
||||
<script src="{% static 'ungleich_page/js/cbpAnimatedHeader.js' %}" type="text/javascript"></script>
|
||||
|
||||
<!-- Contact Form JavaScript -->
|
||||
<script src="{% static 'ungleich_page/js/jqBootstrapValidation.js' %}" type="text/javascript"></script>
|
||||
<!-- <script src="{% static 'ungleich_page/js/contact_me.js' %}" type="text/javascript"></script> -->
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js" type="text/javascript"></script>
|
||||
|
||||
<!-- Custom Theme JavaScript -->
|
||||
<script src="{% static 'ungleich_page/js/ungleich.js' %}" type="text/javascript"></script>
|
||||
|
||||
<!-- Custom Fonts -->
|
||||
<link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue