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
Branches
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