Skip to content
Snippets Groups Projects
Commit 67b79425 authored by Tomáš Valenta's avatar Tomáš Valenta Committed by jan.bednarik
Browse files

finish popout implementation

parent 082cf4ae
No related branches found
No related tags found
2 merge requests!720Release,!717Add new program types - crossroad, popout
......@@ -15,6 +15,28 @@ from wagtail.images.blocks import ImageChooserBlock
from shared.blocks import CardLinkBlockMixin, CardLinkWithHeadlineBlockMixin
class CardLinkBlock(CardLinkBlockMixin):
page = PageChooserBlock(
label="Stránka",
page_type=[
"main.MainArticlesPage",
"main.MainArticlePage",
"main.MainProgramPage",
"main.MainPeoplePage",
"main.MainPersonPage",
"main.MainSimplePage",
"main.MainContactPage",
"main.MainCrossroadPage",
],
required=False,
)
class Meta:
template = "main/blocks/card_link_block.html"
icon = "link"
label = "Karta odkazu"
class CTAMixin(StructBlock):
button_link = URLBlock(label="Odkaz tlačítka")
button_text = CharBlock(label="Text tlačítka")
......@@ -131,7 +153,7 @@ class PeopleOverviewBlock(StructBlock):
label = "Skupina osob"
class ProgramBlockRegular(StructBlock):
class ProgramBlock(StructBlock):
url = URLBlock(
label="Odkaz pokrývající celou tuto část",
required=False,
......@@ -148,36 +170,31 @@ class ProgramBlockRegular(StructBlock):
label = "Článek programu"
class ProgramBlockCrossroads(StructBlock):
url = URLBlock(
label="Odkaz pokrývající kartu",
)
image = ImageChooserBlock(
label="Obrázek",
)
title = CharBlock(label="Titulek karty")
text = RichTextBlock(label="Popis karty", required=False)
class ProgramBlockPopout(StructBlock):
title = CharBlock(label="Titulek vyskakovacího bloku")
content = RichTextBlock(label="Obsah")
class Meta:
icon = "date"
label = "Karta programu"
label = "Blok programu"
class ProgramBlockPopout(StructBlock):
class ProgramPopoutCategory(StructBlock):
name = CharBlock(label="Název")
icon = ImageChooserBlock(
label="Ikona",
required=False,
required=False
)
title = CharBlock(label="Titulek vyskakovacího bloku")
text = RichTextBlock(label="Obsah")
point_list = ListBlock(ProgramBlockPopout(), label="Jednotlivé bloky programu")
class Meta:
icon = "date"
label = "Blok programu"
label = "Vyskakovací bod programu"
class ProgramGroupBlockRegular(ProgramGroupBlockMixin):
point_list = ListBlock(ProgramBlockRegular(), label="Jednotlivé články programu")
class ProgramGroupBlock(ProgramGroupBlockMixin):
point_list = ListBlock(ProgramBlock(), label="Jednotlivé články programu")
class Meta:
icon = "date"
......@@ -185,7 +202,7 @@ class ProgramGroupBlockRegular(ProgramGroupBlockMixin):
class ProgramGroupBlockCrossroad(ProgramGroupBlockMixin):
point_list = ListBlock(ProgramBlockRegular(), label="Jednotlivé karty programu")
point_list = ListBlock(CardLinkBlock(), label="Karty programu")
class Meta:
icon = "date"
......@@ -193,7 +210,7 @@ class ProgramGroupBlockCrossroad(ProgramGroupBlockMixin):
class ProgramGroupBlockPopout(ProgramGroupBlockMixin):
point_list = ListBlock(ProgramBlockPopout(), label="Jednotlivé bloky programu")
categories = ListBlock(ProgramPopoutCategory(), label="Kategorie programu")
class Meta:
icon = "date"
......@@ -322,28 +339,6 @@ class TwoTextColumnBlock(StructBlock):
label = "Text ve dvou sloupcích"
class CardLinkBlock(CardLinkBlockMixin):
page = PageChooserBlock(
label="Stránka",
page_type=[
"main.MainArticlesPage",
"main.MainArticlePage",
"main.MainProgramPage",
"main.MainPeoplePage",
"main.MainPersonPage",
"main.MainSimplePage",
"main.MainContactPage",
"main.MainCrossroadPage",
],
required=False,
)
class Meta:
template = "main/blocks/card_link_block.html"
icon = "link"
label = "Karta odkazu"
class CardLinkWithHeadlineBlock(CardLinkWithHeadlineBlockMixin):
card_items = ListBlock(CardLinkBlock(), label="Karty odkazu")
......
# Generated by Django 4.1.5 on 2023-02-10 03:15
# Generated by Django 4.1.5 on 2023-02-10 17:00
from django.db import migrations
import wagtail.blocks
import wagtail.fields
import wagtail.images.blocks
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("main", "0043_alter_mainarticletag_content_object"),
('main', '0043_alter_mainarticletag_content_object'),
]
operations = [
migrations.AlterField(
model_name="mainprogrampage",
name="program",
field=wagtail.fields.StreamField(
[
(
"program_group",
wagtail.blocks.StructBlock(
[
(
"type",
wagtail.blocks.ChoiceBlock(
choices=[
("general", "Běžný"),
("crossroad", "Rozcestník"),
("popouts", "Vyskakovací"),
],
label="Typ",
),
),
(
"title",
wagtail.blocks.CharBlock(
label="Titulek části programu"
),
),
(
"slug",
wagtail.blocks.CharBlock(
help_text="Není třeba vyplňovat, bude automaticky vyplněno",
label="Slug části programu",
required=False,
),
),
(
"perex",
wagtail.blocks.RichTextBlock(
label="Perex části programu", required=False
),
),
(
"point_list",
wagtail.blocks.ListBlock(
wagtail.blocks.StructBlock(
[
(
"url",
wagtail.blocks.URLBlock(
label="Odkaz pokrývající celou tuto část",
required=False,
),
),
(
"icon",
wagtail.images.blocks.ImageChooserBlock(
label="Ikona", required=False
),
),
(
"title",
wagtail.blocks.CharBlock(
label="Titulek článku programu"
),
),
(
"text",
wagtail.blocks.RichTextBlock(
label="Obsah"
),
),
]
),
label="Jednotlivé články programu",
),
),
],
label="Část programu",
),
)
],
blank=True,
use_json_field=True,
verbose_name="Program",
),
model_name='mainprogrampage',
name='program',
field=wagtail.fields.StreamField([('program_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('slug', wagtail.blocks.CharBlock(help_text='Není třeba vyplňovat, bude automaticky vyplněno', label='Slug části programu', required=False)), ('perex', wagtail.blocks.RichTextBlock(label='Perex části programu', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('url', wagtail.blocks.URLBlock(label='Odkaz pokrývající celou tuto část', required=False)), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('title', wagtail.blocks.CharBlock(label='Titulek článku programu')), ('text', wagtail.blocks.RichTextBlock(label='Obsah'))]), label='Jednotlivé články programu'))])), ('program_group_crossroad', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('slug', wagtail.blocks.CharBlock(help_text='Není třeba vyplňovat, bude automaticky vyplněno', label='Slug části programu', required=False)), ('perex', wagtail.blocks.RichTextBlock(label='Perex části programu', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text', wagtail.blocks.RichTextBlock(label='Krátký text pod nadpisem', required=False)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['main.MainArticlesPage', 'main.MainArticlePage', 'main.MainProgramPage', 'main.MainPeoplePage', 'main.MainPersonPage', 'main.MainSimplePage', 'main.MainContactPage', 'main.MainCrossroadPage'], required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Karty programu'))])), ('program_group_popout', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('slug', wagtail.blocks.CharBlock(help_text='Není třeba vyplňovat, bude automaticky vyplněno', label='Slug části programu', required=False)), ('perex', wagtail.blocks.RichTextBlock(label='Perex části programu', required=False)), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název')), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek vyskakovacího bloku')), ('content', wagtail.blocks.RichTextBlock(label='Obsah'))]), label='Jednotlivé bloky programu'))]), label='Kategorie programu'))]))], blank=True, use_json_field=True, verbose_name='Program'),
),
]
# Generated by Django 4.1.5 on 2023-02-10 03:34
import wagtail.blocks
import wagtail.fields
import wagtail.images.blocks
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("main", "0044_alter_mainprogrampage_program"),
]
operations = [
migrations.AlterField(
model_name="mainprogrampage",
name="program",
field=wagtail.fields.StreamField(
[
(
"program_group_regular",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.CharBlock(
label="Titulek části programu"
),
),
(
"slug",
wagtail.blocks.CharBlock(
help_text="Není třeba vyplňovat, bude automaticky vyplněno",
label="Slug části programu",
required=False,
),
),
(
"perex",
wagtail.blocks.RichTextBlock(
label="Perex části programu", required=False
),
),
(
"point_list",
wagtail.blocks.ListBlock(
wagtail.blocks.StructBlock(
[
(
"url",
wagtail.blocks.URLBlock(
label="Odkaz pokrývající celou tuto část",
required=False,
),
),
(
"icon",
wagtail.images.blocks.ImageChooserBlock(
label="Ikona", required=False
),
),
(
"title",
wagtail.blocks.CharBlock(
label="Titulek článku programu"
),
),
(
"text",
wagtail.blocks.RichTextBlock(
label="Obsah"
),
),
]
),
label="Jednotlivé články programu",
),
),
]
),
),
(
"program_group_crossroad",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.CharBlock(
label="Titulek části programu"
),
),
(
"slug",
wagtail.blocks.CharBlock(
help_text="Není třeba vyplňovat, bude automaticky vyplněno",
label="Slug části programu",
required=False,
),
),
(
"perex",
wagtail.blocks.RichTextBlock(
label="Perex části programu", required=False
),
),
(
"point_list",
wagtail.blocks.ListBlock(
wagtail.blocks.StructBlock(
[
(
"url",
wagtail.blocks.URLBlock(
label="Odkaz pokrývající celou tuto část",
required=False,
),
),
(
"icon",
wagtail.images.blocks.ImageChooserBlock(
label="Ikona", required=False
),
),
(
"title",
wagtail.blocks.CharBlock(
label="Titulek článku programu"
),
),
(
"text",
wagtail.blocks.RichTextBlock(
label="Obsah"
),
),
]
),
label="Jednotlivé karty programu",
),
),
]
),
),
(
"program_group_popout",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.CharBlock(
label="Titulek části programu"
),
),
(
"slug",
wagtail.blocks.CharBlock(
help_text="Není třeba vyplňovat, bude automaticky vyplněno",
label="Slug části programu",
required=False,
),
),
(
"perex",
wagtail.blocks.RichTextBlock(
label="Perex části programu", required=False
),
),
(
"point_list",
wagtail.blocks.ListBlock(
wagtail.blocks.StructBlock(
[
(
"icon",
wagtail.images.blocks.ImageChooserBlock(
label="Ikona", required=False
),
),
(
"title",
wagtail.blocks.CharBlock(
label="Titulek vyskakovacího bloku"
),
),
(
"text",
wagtail.blocks.RichTextBlock(
label="Obsah"
),
),
]
),
label="Jednotlivé bloky programu",
),
),
]
),
),
],
blank=True,
use_json_field=True,
verbose_name="Program",
),
),
]
......@@ -582,7 +582,7 @@ class MainProgramPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
perex = RichTextField()
program = StreamField(
[
("program_group_regular", blocks.ProgramGroupBlockRegular()),
("program_group", blocks.ProgramGroupBlock()),
("program_group_crossroad", blocks.ProgramGroupBlockCrossroad()),
("program_group_popout", blocks.ProgramGroupBlockPopout()),
],
......
This diff is collapsed.
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -3,7 +3,7 @@
{% image self.image width-356 as img %}
{% firstof self.page.url self.link as target_url %}
<article class="card">
<div class="card">
<a href="{{ target_url }}">
<img
src="{{ img.url }}"
......@@ -21,4 +21,4 @@
{{ self.text | default_if_none:'' | richtext }}
</div>
</div>
</article>
</div>
......@@ -10,11 +10,13 @@
{% include_block headlined_card_block %}
{% endfor %}
{% if page.cards_content|length != 0 %}
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<ul class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{% for card_block in page.cards_content %}
<li>
{% include_block card_block %}
</li>
{% endfor %}
</div>
</ul>
{% endif %}
</div>
</div>
......
......@@ -42,9 +42,7 @@
</div>
{% endif %}
<!-- TODO -->
{{ program_group.block_type }}
{% if program_group.block_type == "program_group" %}
{% for item in program_group.value.point_list %}
{% if item.url %}
<a href="{{ item.url }}" class="hover:no-underline grid-container mb-12">
......@@ -70,6 +68,50 @@
</div>
{% endif %}
{% endfor %}
{% elif program_group.block_type == "program_group_crossroad" %}
<div class="grid-container mb-12">
<div class="grid-left-side-with-content">
<ul class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{% for item in program_group.value.point_list %}
<li>
{% include_block item %}
</li>
{% endfor %}
</ul>
</div>
</div>
{% elif program_group.block_type == "program_group_popout" %}
<div class="grid-container mb-12">
<div class="grid-left-side-with-content">
<ul class="flex flex-col gap-6">
{% for category in program_group.value.categories %}
<li class="grow">
<div class="flex gap-3 mb-3 items-center bg-grey-150 p-5">
{% image category.image height-20 as icon %}
<img
src="{{ icon.url }}"
alt=""{% comment %} (decorative image, https://stackoverflow.com/a/52557065) {% endcomment %}
>
<h2 class="font-alt text-2xl">{{ category.name }}</h2>
</div>
{% for point in category.point_list %}
<ui-popout>
<template slot="toggler">
{{ point.title }}
</template>
<ui-popout-content>
<div class="prose max-w-screen-lg">
<p>{{ point.content }}</p>
</div>
</ui-popout-content>
</ui-popout>
{% endfor %}
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
</template>
{% endfor %}
</ui-view-provider>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment