Allow Infoblocks in articles

This commit is contained in:
Oleg Lavrovsky 2017-04-19 17:57:29 +02:00
parent 11128a10a9
commit a31d2e2081
3 changed files with 74 additions and 11 deletions

View File

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-04-19 15:49
from __future__ import unicode_literals
from django.db import migrations
import wagtail.wagtailcore.blocks
import wagtail.wagtailcore.fields
import wagtail.wagtailimages.blocks
class Migration(migrations.Migration):
dependencies = [
('home', '0011_auto_20170412_1256'),
]
operations = [
migrations.AlterField(
model_name='articlepage',
name='body_de',
field=wagtail.wagtailcore.fields.StreamField((('paragraph', wagtail.wagtailcore.blocks.RichTextBlock()), ('image', wagtail.wagtailimages.blocks.ImageChooserBlock()), ('section', wagtail.wagtailcore.blocks.CharBlock(classname='full title')), ('info', wagtail.wagtailcore.blocks.StructBlock((('title', wagtail.wagtailcore.blocks.CharBlock(required=True)), ('photo', wagtail.wagtailimages.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.wagtailcore.blocks.RichTextBlock(required=True)), ('action', wagtail.wagtailcore.blocks.CharBlock(required=False)), ('url', wagtail.wagtailcore.blocks.URLBlock(required=False)))))), blank=True, null=True),
),
migrations.AlterField(
model_name='articlepage',
name='body_fr',
field=wagtail.wagtailcore.fields.StreamField((('paragraph', wagtail.wagtailcore.blocks.RichTextBlock()), ('image', wagtail.wagtailimages.blocks.ImageChooserBlock()), ('section', wagtail.wagtailcore.blocks.CharBlock(classname='full title')), ('info', wagtail.wagtailcore.blocks.StructBlock((('title', wagtail.wagtailcore.blocks.CharBlock(required=True)), ('photo', wagtail.wagtailimages.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.wagtailcore.blocks.RichTextBlock(required=True)), ('action', wagtail.wagtailcore.blocks.CharBlock(required=False)), ('url', wagtail.wagtailcore.blocks.URLBlock(required=False)))))), blank=True, null=True),
),
migrations.AlterField(
model_name='homepage',
name='infos_de',
field=wagtail.wagtailcore.fields.StreamField((('info', wagtail.wagtailcore.blocks.StructBlock((('title', wagtail.wagtailcore.blocks.CharBlock(required=True)), ('photo', wagtail.wagtailimages.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.wagtailcore.blocks.RichTextBlock(required=True)), ('action', wagtail.wagtailcore.blocks.CharBlock(required=False)), ('url', wagtail.wagtailcore.blocks.URLBlock(required=False))))),), blank=True, null=True),
),
migrations.AlterField(
model_name='homepage',
name='infos_fr',
field=wagtail.wagtailcore.fields.StreamField((('info', wagtail.wagtailcore.blocks.StructBlock((('title', wagtail.wagtailcore.blocks.CharBlock(required=True)), ('photo', wagtail.wagtailimages.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.wagtailcore.blocks.RichTextBlock(required=True)), ('action', wagtail.wagtailcore.blocks.CharBlock(required=False)), ('url', wagtail.wagtailcore.blocks.URLBlock(required=False))))),), blank=True, null=True),
),
]

View File

@ -17,6 +17,13 @@ from puput.models import EntryPage
from ..util import TranslatedField
class InfoBlock(blocks.StructBlock):
title = blocks.CharBlock(required=True)
photo = ImageChooserBlock(required=True)
summary = blocks.RichTextBlock(required=True)
action = blocks.CharBlock(required=False)
url = blocks.URLBlock(required=False)
class ArticleIndexPage(Page):
title_fr = models.CharField(max_length=255, default="")
trans_title = TranslatedField(
@ -71,11 +78,13 @@ class ArticlePage(Page):
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
('section', blocks.CharBlock(classname="full title")),
('info', InfoBlock()),
], null=True, blank=True)
body_fr = StreamField([
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
('section', blocks.CharBlock(classname="full title")),
('info', InfoBlock()),
], null=True, blank=True)
trans_body = TranslatedField(
'body_de',
@ -137,14 +146,7 @@ class ArticleRelatedLink(Orderable):
FieldPanel('name'),
FieldPanel('url'),
]
class InfoBlock(blocks.StructBlock):
title = blocks.CharBlock(required=True)
photo = ImageChooserBlock()
summary = blocks.RichTextBlock(required=True)
action = blocks.CharBlock()
url = blocks.URLBlock()
class HomePage(Page):
intro_de = RichTextField(default='')
intro_fr = RichTextField(default='')

View File

@ -12,9 +12,9 @@
{% image page.feed_image fill-940x400 class="img-responsive" %}
</div>
{% endif %}
<h2>{{ page.trans_title }}</h2>
<p class="lead">{{ page.trans_intro|richtext }}</p>
{% if page.date %}
@ -26,13 +26,36 @@
{% for block in page.trans_body %}
{% if block.block_type == 'heading' %}
<h3>{{ block.value }}</h3>
{% else %}
{% elif block.block_type != 'info' %}
<p class="block-{{ block.block_type }}">
{% include_block block %}
</p>
{% endif %}
{% endfor %}
</div>
<!-- Infoblocks -->
<div class="row">
{% for block in page.trans_body %}
{% if block.block_type == 'info' %}
<article class="col-md-4">
<div class="image">
{% image block.value.photo fill-300x300 %}
</div>
<header>
<h3>{{ block.value.title }}</h3>
</header>
{{ block.value.summary|richtext }}
{% if block.value.action %}
<footer>
<a href="{{ block.value.url }}" class="btn btn-default">{{ block.value.action }}</a>
</footer>
{% endif %}
</article>
{% endif %}
{% endfor %}
</div>
</div>
</section>
{% endblock %}