From 99b1a61252ec721ea6aec46bbab8fdeb063f8a79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <tomas@imaniti.org>
Date: Thu, 28 Mar 2024 14:38:50 +0100
Subject: [PATCH] add support for flip cards

---
 ..._alter_electionsfullprogrampage_content.py |  102 +
 main/blocks.py                                |   34 -
 .../0080_alter_mainprogrampage_program.py     |  261 ++
 main/models.py                                |    2 +-
 shared/blocks/main.py                         |   34 +
 uniweb/blocks.py                              |    2 +
 ...ter_uniwebflexiblepage_content_and_more.py | 3596 +++++++++++++++++
 uniweb/models.py                              |    3 +-
 uniweb/templates/uniweb/base.html             |  152 +
 9 files changed, 4150 insertions(+), 36 deletions(-)
 create mode 100644 elections/migrations/0023_alter_electionsfullprogrampage_content.py
 create mode 100644 main/migrations/0080_alter_mainprogrampage_program.py
 create mode 100644 uniweb/migrations/0060_alter_uniwebflexiblepage_content_and_more.py

diff --git a/elections/migrations/0023_alter_electionsfullprogrampage_content.py b/elections/migrations/0023_alter_electionsfullprogrampage_content.py
new file mode 100644
index 00000000..9fde4d78
--- /dev/null
+++ b/elections/migrations/0023_alter_electionsfullprogrampage_content.py
@@ -0,0 +1,102 @@
+# Generated by Django 4.1.13 on 2024-03-28 12:48
+
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("elections", "0022_alter_electionshomepage_content_and_more"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="electionsfullprogrampage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    ("richtext", wagtail.blocks.RichTextBlock(label="Text")),
+                    (
+                        "popout_block",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "categories",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "name",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Název"
+                                                    ),
+                                                ),
+                                                (
+                                                    "icon",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Ikona", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "description",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        label="Popis", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "point_list",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.StructBlock(
+                                                            [
+                                                                (
+                                                                    "title",
+                                                                    wagtail.blocks.CharBlock(
+                                                                        label="Titulek vyskakovacího bloku"
+                                                                    ),
+                                                                ),
+                                                                (
+                                                                    "content",
+                                                                    wagtail.blocks.RichTextBlock(
+                                                                        features=[
+                                                                            "h3",
+                                                                            "h4",
+                                                                            "h5",
+                                                                            "bold",
+                                                                            "italic",
+                                                                            "ol",
+                                                                            "ul",
+                                                                            "hr",
+                                                                            "link",
+                                                                            "document-link",
+                                                                            "image",
+                                                                            "superscript",
+                                                                            "subscript",
+                                                                            "strikethrough",
+                                                                            "blockquote",
+                                                                            "embed",
+                                                                        ],
+                                                                        label="Obsah",
+                                                                    ),
+                                                                ),
+                                                            ]
+                                                        ),
+                                                        label="Jednotlivé bloky programu",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kategorie programu",
+                                    ),
+                                )
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Obsah",
+            ),
+        ),
+    ]
diff --git a/main/blocks.py b/main/blocks.py
index 969ecd84..ef5f376b 100644
--- a/main/blocks.py
+++ b/main/blocks.py
@@ -276,40 +276,6 @@ class TeamBlock(StructBlock):
         return value
 
 
-class FlipCardBlock(StructBlock):
-    bg_color = CharBlock(label="Barva pozadí", default="FEC900")
-
-    image = ImageChooserBlock(label="Obrázek", required=False)
-
-    title = TextBlock(label="Nadpis", help_text="Řádkování je manuální.")
-
-    content = RichTextBlock(label="Obsah")
-
-    button_text = CharBlock(
-        label="Nadpis tlačítka",
-        help_text="Pokud není vyplněn, tlačítko se neukáže.",
-        required=False,
-    )
-    button_url = CharBlock(label="Odkaz tlačítka", required=False)
-
-    class Meta:
-        icon = "view"
-        label = "Obracecí karta"
-        template = "styleguide2/includes/molecules/boxes/flip_card_box.html"
-
-
-class FlipCardsBlock(StructBlock):
-    cards = ListBlock(
-        FlipCardBlock(label="Karta"),
-        label="Karty",
-    )
-
-    class Meta:
-        icon = "group"
-        label = "Seznam obracecích karet"
-        template = "styleguide2/includes/organisms/cards/flip_card_list.html"
-
-
 class ElectionsProgramBlock(StructBlock):
     title = CharBlock(label="Titulek části programu")
 
diff --git a/main/migrations/0080_alter_mainprogrampage_program.py b/main/migrations/0080_alter_mainprogrampage_program.py
new file mode 100644
index 00000000..4f997cb9
--- /dev/null
+++ b/main/migrations/0080_alter_mainprogrampage_program.py
@@ -0,0 +1,261 @@
+# Generated by Django 4.1.13 on 2024-03-28 12:48
+
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("main", "0079_alter_mainprogrampage_program"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="mainprogrampage",
+            name="program",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "program_group",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "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(
+                                                        features=[
+                                                            "h3",
+                                                            "h4",
+                                                            "h5",
+                                                            "bold",
+                                                            "italic",
+                                                            "ol",
+                                                            "ul",
+                                                            "hr",
+                                                            "link",
+                                                            "document-link",
+                                                            "image",
+                                                            "superscript",
+                                                            "subscript",
+                                                            "strikethrough",
+                                                            "blockquote",
+                                                            "embed",
+                                                        ],
+                                                        label="Obsah",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Jednotlivé články programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program_group_crossroad",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "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"
+                                    ),
+                                ),
+                                (
+                                    "categories",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "name",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Název"
+                                                    ),
+                                                ),
+                                                (
+                                                    "icon",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Ikona", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "description",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        label="Popis", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "point_list",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.StructBlock(
+                                                            [
+                                                                (
+                                                                    "title",
+                                                                    wagtail.blocks.CharBlock(
+                                                                        label="Titulek vyskakovacího bloku"
+                                                                    ),
+                                                                ),
+                                                                (
+                                                                    "content",
+                                                                    wagtail.blocks.RichTextBlock(
+                                                                        features=[
+                                                                            "h3",
+                                                                            "h4",
+                                                                            "h5",
+                                                                            "bold",
+                                                                            "italic",
+                                                                            "ol",
+                                                                            "ul",
+                                                                            "hr",
+                                                                            "link",
+                                                                            "document-link",
+                                                                            "image",
+                                                                            "superscript",
+                                                                            "subscript",
+                                                                            "strikethrough",
+                                                                            "blockquote",
+                                                                            "embed",
+                                                                        ],
+                                                                        label="Obsah",
+                                                                    ),
+                                                                ),
+                                                            ]
+                                                        ),
+                                                        label="Jednotlivé bloky programu",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kategorie programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "elections_program",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "program_page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="Stránka",
+                                        page_type=[
+                                            "elections.ElectionsFullProgramPage"
+                                        ],
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Program",
+            ),
+        ),
+    ]
diff --git a/main/models.py b/main/models.py
index 45af703e..aacfb08d 100644
--- a/main/models.py
+++ b/main/models.py
@@ -487,7 +487,7 @@ class MainResultsPage(
 
     content = StreamField(
         [
-            (("flip_cards"), blocks.FlipCardsBlock()),
+            (("flip_cards"), shared_blocks.FlipCardsBlock()),
             (
                 "text",
                 RichTextBlock(
diff --git a/shared/blocks/main.py b/shared/blocks/main.py
index 63b88184..a2668a3c 100644
--- a/shared/blocks/main.py
+++ b/shared/blocks/main.py
@@ -199,3 +199,37 @@ class ProgramGroupBlockPopout(StructBlock):
     class Meta:
         icon = "date"
         label = "Vyskakovací program"
+
+
+class FlipCardBlock(StructBlock):
+    bg_color = CharBlock(label="Barva pozadí", default="FEC900")
+
+    image = ImageChooserBlock(label="Obrázek", required=False)
+
+    title = TextBlock(label="Nadpis", help_text="Řádkování je manuální.")
+
+    content = RichTextBlock(label="Obsah")
+
+    button_text = CharBlock(
+        label="Nadpis tlačítka",
+        help_text="Pokud není vyplněn, tlačítko se neukáže.",
+        required=False,
+    )
+    button_url = CharBlock(label="Odkaz tlačítka", required=False)
+
+    class Meta:
+        icon = "view"
+        label = "Obracecí karta"
+        template = "styleguide2/includes/molecules/boxes/flip_card_box.html"
+
+
+class FlipCardsBlock(StructBlock):
+    cards = ListBlock(
+        FlipCardBlock(label="Karta"),
+        label="Karty",
+    )
+
+    class Meta:
+        icon = "group"
+        label = "Seznam obracecích karet"
+        template = "styleguide2/includes/organisms/cards/flip_card_list.html"
diff --git a/uniweb/blocks.py b/uniweb/blocks.py
index 8e656697..b2b34d3d 100644
--- a/uniweb/blocks.py
+++ b/uniweb/blocks.py
@@ -9,6 +9,8 @@ from wagtail.blocks import (
 )
 from wagtail.contrib.table_block.blocks import TableBlock as ContribTableBlock
 
+from shared.blocks import CardLinkBlockMixin, CardLinkWithHeadlineBlockMixin
+
 
 class AlignedTableBlock(StructBlock):
     alignment = ChoiceBlock(
diff --git a/uniweb/migrations/0060_alter_uniwebflexiblepage_content_and_more.py b/uniweb/migrations/0060_alter_uniwebflexiblepage_content_and_more.py
new file mode 100644
index 00000000..d62c08ec
--- /dev/null
+++ b/uniweb/migrations/0060_alter_uniwebflexiblepage_content_and_more.py
@@ -0,0 +1,3596 @@
+# Generated by Django 4.1.13 on 2024-03-28 12:52
+
+import wagtail.blocks
+import wagtail.blocks.static_block
+import wagtail.contrib.table_block.blocks
+import wagtail.fields
+import wagtail.images.blocks
+from django.db import migrations
+
+import shared.blocks.base
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("uniweb", "0059_alter_uniwebflexiblepage_content_and_more"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="uniwebflexiblepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "title",
+                        wagtail.blocks.CharBlock(
+                            group="nadpisy",
+                            icon="title",
+                            label="nadpis",
+                            template="uniweb/blocks/title.html",
+                        ),
+                    ),
+                    (
+                        "advanced_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "picture_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr na výšku 75px nebo více (obrázek bude zmenšen na výšku 75px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text",
+                        wagtail.blocks.RichTextBlock(
+                            features=[
+                                "h2",
+                                "h3",
+                                "h4",
+                                "h5",
+                                "bold",
+                                "italic",
+                                "ol",
+                                "ul",
+                                "hr",
+                                "link",
+                                "document-link",
+                                "image",
+                                "superscript",
+                                "subscript",
+                                "strikethrough",
+                                "blockquote",
+                                "embed",
+                            ],
+                            group="texty",
+                            label="text",
+                            template="uniweb/blocks/text.html",
+                        ),
+                    ),
+                    (
+                        "advanced_text",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="text",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "advanced_text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "gallery",
+                        wagtail.blocks.ListBlock(
+                            wagtail.images.blocks.ImageChooserBlock(label="obrázek"),
+                            group="ostatní",
+                            icon="image",
+                            label="galerie",
+                            template="uniweb/blocks/gallery.html",
+                        ),
+                    ),
+                    (
+                        "picture_list",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.RichTextBlock(
+                                            features=[
+                                                "h2",
+                                                "h3",
+                                                "h4",
+                                                "h5",
+                                                "bold",
+                                                "italic",
+                                                "ol",
+                                                "ul",
+                                                "hr",
+                                                "link",
+                                                "document-link",
+                                                "image",
+                                                "superscript",
+                                                "subscript",
+                                                "strikethrough",
+                                                "blockquote",
+                                                "embed",
+                                            ],
+                                            label="odstavec",
+                                        ),
+                                        label="odstavce",
+                                    ),
+                                ),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr 25x25px nebo více (obrázek bude zmenšen na 25x25px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "aligned_table",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "alignment",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "Vlevo"),
+                                            ("center", "Vprostřed"),
+                                            ("right", "Vpravo"),
+                                            ("full", "Celá šířka obrazovky"),
+                                        ],
+                                        label="Zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "table",
+                                    wagtail.contrib.table_block.blocks.TableBlock(
+                                        label="Tabulka"
+                                    ),
+                                ),
+                            ],
+                            group="ostatní",
+                            template="uniweb/blocks/aligned_table.html",
+                        ),
+                    ),
+                    (
+                        "table",
+                        wagtail.contrib.table_block.blocks.TableBlock(
+                            group="ostatní",
+                            label="Tabulka",
+                            template="uniweb/blocks/table.html",
+                        ),
+                    ),
+                    (
+                        "articles",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="sekce článků",
+                                        page_type=["uniweb.UniwebArticlesIndexPage"],
+                                    ),
+                                ),
+                                (
+                                    "lines",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=1,
+                                        help_text="zobrazí se tři články na řádek",
+                                        label="počet řádků",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "calendar_agenda",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "info",
+                                    wagtail.blocks.static_block.StaticBlock(
+                                        admin_text="adresa kalendáře se zadává v nastavení hlavní stránky webu",
+                                        label="volba kalendáře",
+                                    ),
+                                ),
+                                (
+                                    "count",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=10, label="maximum událostí k zobrazení"
+                                    ),
+                                ),
+                                (
+                                    "event_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("future", "budoucí"),
+                                            ("past", "proběhlé"),
+                                        ],
+                                        label="druh událostí",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "button",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "chart",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Název", max_length=120
+                                    ),
+                                ),
+                                (
+                                    "chart_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("bar", "Graf se sloupci"),
+                                            (
+                                                "horizontalBar",
+                                                "Graf s vodorovnými sloupci",
+                                            ),
+                                            ("pie", "Koláčový graf"),
+                                            ("doughnut", "Donutový graf"),
+                                            ("polarArea", "Graf polární oblasti"),
+                                            ("radar", "Radarový graf"),
+                                            ("line", "Graf s liniemi"),
+                                        ],
+                                        label="Typ",
+                                    ),
+                                ),
+                                (
+                                    "hide_points",
+                                    wagtail.blocks.BooleanBlock(
+                                        help_text="Mění vzhled pouze u linových grafů.",
+                                        label="Schovat body",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_labels",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.CharBlock(
+                                            label="Skupina", max_length=40
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místně definované skupiny",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení zdroje dat",
+                                                        max_length=120,
+                                                    ),
+                                                ),
+                                                (
+                                                    "data",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.IntegerBlock(),
+                                                        default=[0],
+                                                        label="Data",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místní zdroje dat",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "redmine_issue_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "projects",
+                                                    wagtail.blocks.MultipleChoiceBlock(
+                                                        choices=shared.blocks.base.get_redmine_projects,
+                                                        label="Projekty",
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_open",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen otevřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_closed",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen uzavřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_min_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Min. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_max_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Max. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "updated_on",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Např. <=2023-01-01. Více informací na pi2.cz/redmine-api",
+                                                        label="Filtr pro datum aktualizace",
+                                                        max_length=128,
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "issue_label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení úkolů uvnitř grafu",
+                                                        max_length=128,
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "split_per_project",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Rozdělit podle projektu",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "only_grow",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Pouze růst nahoru",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                            ],
+                                            label="Redmine úkoly",
+                                        ),
+                                        blank=True,
+                                        default=[],
+                                        help_text="Úkoly, podle doby vytvoření. Pokud definuješ více zdrojů, datumy v nich musí být stejné.",
+                                        label="Zdroje dat z Redmine (úkoly)",
+                                        required=False,
+                                    ),
+                                ),
+                            ],
+                            template="uniweb/blocks/chart.html",
+                        ),
+                    ),
+                    (
+                        "cards",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "headline",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek bloku", required=False
+                                    ),
+                                ),
+                                (
+                                    "card_items",
+                                    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(
+                                                        help_text="Pokud je vybrána stránka, není nutno zadávat odkaz.",
+                                                        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
+                                                    ),
+                                                ),
+                                            ],
+                                            template="styleguide2/includes/molecules/boxes/card_box_block.html",
+                                        ),
+                                        label="Karty",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "newsletter",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "list_id",
+                                    wagtail.blocks.CharBlock(
+                                        label="ID newsletteru", required=True
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.CharBlock(
+                                        default="Fake news tam nenajdeš, ale dozvíš se, co chystáme doopravdy!",
+                                        label="Popis newsletteru",
+                                        required=True,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="obsah stránky",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="uniwebformpage",
+            name="content_after",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "title",
+                        wagtail.blocks.CharBlock(
+                            group="nadpisy",
+                            icon="title",
+                            label="nadpis",
+                            template="uniweb/blocks/title.html",
+                        ),
+                    ),
+                    (
+                        "advanced_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "picture_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr na výšku 75px nebo více (obrázek bude zmenšen na výšku 75px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text",
+                        wagtail.blocks.RichTextBlock(
+                            features=[
+                                "h2",
+                                "h3",
+                                "h4",
+                                "h5",
+                                "bold",
+                                "italic",
+                                "ol",
+                                "ul",
+                                "hr",
+                                "link",
+                                "document-link",
+                                "image",
+                                "superscript",
+                                "subscript",
+                                "strikethrough",
+                                "blockquote",
+                                "embed",
+                            ],
+                            group="texty",
+                            label="text",
+                            template="uniweb/blocks/text.html",
+                        ),
+                    ),
+                    (
+                        "advanced_text",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="text",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "advanced_text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "gallery",
+                        wagtail.blocks.ListBlock(
+                            wagtail.images.blocks.ImageChooserBlock(label="obrázek"),
+                            group="ostatní",
+                            icon="image",
+                            label="galerie",
+                            template="uniweb/blocks/gallery.html",
+                        ),
+                    ),
+                    (
+                        "picture_list",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.RichTextBlock(
+                                            features=[
+                                                "h2",
+                                                "h3",
+                                                "h4",
+                                                "h5",
+                                                "bold",
+                                                "italic",
+                                                "ol",
+                                                "ul",
+                                                "hr",
+                                                "link",
+                                                "document-link",
+                                                "image",
+                                                "superscript",
+                                                "subscript",
+                                                "strikethrough",
+                                                "blockquote",
+                                                "embed",
+                                            ],
+                                            label="odstavec",
+                                        ),
+                                        label="odstavce",
+                                    ),
+                                ),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr 25x25px nebo více (obrázek bude zmenšen na 25x25px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "aligned_table",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "alignment",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "Vlevo"),
+                                            ("center", "Vprostřed"),
+                                            ("right", "Vpravo"),
+                                            ("full", "Celá šířka obrazovky"),
+                                        ],
+                                        label="Zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "table",
+                                    wagtail.contrib.table_block.blocks.TableBlock(
+                                        label="Tabulka"
+                                    ),
+                                ),
+                            ],
+                            group="ostatní",
+                            template="uniweb/blocks/aligned_table.html",
+                        ),
+                    ),
+                    (
+                        "table",
+                        wagtail.contrib.table_block.blocks.TableBlock(
+                            group="ostatní",
+                            label="Tabulka",
+                            template="uniweb/blocks/table.html",
+                        ),
+                    ),
+                    (
+                        "articles",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="sekce článků",
+                                        page_type=["uniweb.UniwebArticlesIndexPage"],
+                                    ),
+                                ),
+                                (
+                                    "lines",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=1,
+                                        help_text="zobrazí se tři články na řádek",
+                                        label="počet řádků",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "calendar_agenda",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "info",
+                                    wagtail.blocks.static_block.StaticBlock(
+                                        admin_text="adresa kalendáře se zadává v nastavení hlavní stránky webu",
+                                        label="volba kalendáře",
+                                    ),
+                                ),
+                                (
+                                    "count",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=10, label="maximum událostí k zobrazení"
+                                    ),
+                                ),
+                                (
+                                    "event_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("future", "budoucí"),
+                                            ("past", "proběhlé"),
+                                        ],
+                                        label="druh událostí",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "button",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "chart",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Název", max_length=120
+                                    ),
+                                ),
+                                (
+                                    "chart_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("bar", "Graf se sloupci"),
+                                            (
+                                                "horizontalBar",
+                                                "Graf s vodorovnými sloupci",
+                                            ),
+                                            ("pie", "Koláčový graf"),
+                                            ("doughnut", "Donutový graf"),
+                                            ("polarArea", "Graf polární oblasti"),
+                                            ("radar", "Radarový graf"),
+                                            ("line", "Graf s liniemi"),
+                                        ],
+                                        label="Typ",
+                                    ),
+                                ),
+                                (
+                                    "hide_points",
+                                    wagtail.blocks.BooleanBlock(
+                                        help_text="Mění vzhled pouze u linových grafů.",
+                                        label="Schovat body",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_labels",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.CharBlock(
+                                            label="Skupina", max_length=40
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místně definované skupiny",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení zdroje dat",
+                                                        max_length=120,
+                                                    ),
+                                                ),
+                                                (
+                                                    "data",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.IntegerBlock(),
+                                                        default=[0],
+                                                        label="Data",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místní zdroje dat",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "redmine_issue_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "projects",
+                                                    wagtail.blocks.MultipleChoiceBlock(
+                                                        choices=shared.blocks.base.get_redmine_projects,
+                                                        label="Projekty",
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_open",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen otevřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_closed",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen uzavřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_min_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Min. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_max_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Max. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "updated_on",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Např. <=2023-01-01. Více informací na pi2.cz/redmine-api",
+                                                        label="Filtr pro datum aktualizace",
+                                                        max_length=128,
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "issue_label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení úkolů uvnitř grafu",
+                                                        max_length=128,
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "split_per_project",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Rozdělit podle projektu",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "only_grow",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Pouze růst nahoru",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                            ],
+                                            label="Redmine úkoly",
+                                        ),
+                                        blank=True,
+                                        default=[],
+                                        help_text="Úkoly, podle doby vytvoření. Pokud definuješ více zdrojů, datumy v nich musí být stejné.",
+                                        label="Zdroje dat z Redmine (úkoly)",
+                                        required=False,
+                                    ),
+                                ),
+                            ],
+                            template="uniweb/blocks/chart.html",
+                        ),
+                    ),
+                    (
+                        "cards",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "headline",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek bloku", required=False
+                                    ),
+                                ),
+                                (
+                                    "card_items",
+                                    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(
+                                                        help_text="Pokud je vybrána stránka, není nutno zadávat odkaz.",
+                                                        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
+                                                    ),
+                                                ),
+                                            ],
+                                            template="styleguide2/includes/molecules/boxes/card_box_block.html",
+                                        ),
+                                        label="Karty",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="obsah stránky za formulářem",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="uniwebformpage",
+            name="content_before",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "title",
+                        wagtail.blocks.CharBlock(
+                            group="nadpisy",
+                            icon="title",
+                            label="nadpis",
+                            template="uniweb/blocks/title.html",
+                        ),
+                    ),
+                    (
+                        "advanced_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "picture_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr na výšku 75px nebo více (obrázek bude zmenšen na výšku 75px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text",
+                        wagtail.blocks.RichTextBlock(
+                            features=[
+                                "h2",
+                                "h3",
+                                "h4",
+                                "h5",
+                                "bold",
+                                "italic",
+                                "ol",
+                                "ul",
+                                "hr",
+                                "link",
+                                "document-link",
+                                "image",
+                                "superscript",
+                                "subscript",
+                                "strikethrough",
+                                "blockquote",
+                                "embed",
+                            ],
+                            group="texty",
+                            label="text",
+                            template="uniweb/blocks/text.html",
+                        ),
+                    ),
+                    (
+                        "advanced_text",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="text",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "advanced_text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "gallery",
+                        wagtail.blocks.ListBlock(
+                            wagtail.images.blocks.ImageChooserBlock(label="obrázek"),
+                            group="ostatní",
+                            icon="image",
+                            label="galerie",
+                            template="uniweb/blocks/gallery.html",
+                        ),
+                    ),
+                    (
+                        "picture_list",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.RichTextBlock(
+                                            features=[
+                                                "h2",
+                                                "h3",
+                                                "h4",
+                                                "h5",
+                                                "bold",
+                                                "italic",
+                                                "ol",
+                                                "ul",
+                                                "hr",
+                                                "link",
+                                                "document-link",
+                                                "image",
+                                                "superscript",
+                                                "subscript",
+                                                "strikethrough",
+                                                "blockquote",
+                                                "embed",
+                                            ],
+                                            label="odstavec",
+                                        ),
+                                        label="odstavce",
+                                    ),
+                                ),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr 25x25px nebo více (obrázek bude zmenšen na 25x25px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "aligned_table",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "alignment",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "Vlevo"),
+                                            ("center", "Vprostřed"),
+                                            ("right", "Vpravo"),
+                                            ("full", "Celá šířka obrazovky"),
+                                        ],
+                                        label="Zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "table",
+                                    wagtail.contrib.table_block.blocks.TableBlock(
+                                        label="Tabulka"
+                                    ),
+                                ),
+                            ],
+                            group="ostatní",
+                            template="uniweb/blocks/aligned_table.html",
+                        ),
+                    ),
+                    (
+                        "table",
+                        wagtail.contrib.table_block.blocks.TableBlock(
+                            group="ostatní",
+                            label="Tabulka",
+                            template="uniweb/blocks/table.html",
+                        ),
+                    ),
+                    (
+                        "articles",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="sekce článků",
+                                        page_type=["uniweb.UniwebArticlesIndexPage"],
+                                    ),
+                                ),
+                                (
+                                    "lines",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=1,
+                                        help_text="zobrazí se tři články na řádek",
+                                        label="počet řádků",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "calendar_agenda",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "info",
+                                    wagtail.blocks.static_block.StaticBlock(
+                                        admin_text="adresa kalendáře se zadává v nastavení hlavní stránky webu",
+                                        label="volba kalendáře",
+                                    ),
+                                ),
+                                (
+                                    "count",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=10, label="maximum událostí k zobrazení"
+                                    ),
+                                ),
+                                (
+                                    "event_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("future", "budoucí"),
+                                            ("past", "proběhlé"),
+                                        ],
+                                        label="druh událostí",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "button",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "chart",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Název", max_length=120
+                                    ),
+                                ),
+                                (
+                                    "chart_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("bar", "Graf se sloupci"),
+                                            (
+                                                "horizontalBar",
+                                                "Graf s vodorovnými sloupci",
+                                            ),
+                                            ("pie", "Koláčový graf"),
+                                            ("doughnut", "Donutový graf"),
+                                            ("polarArea", "Graf polární oblasti"),
+                                            ("radar", "Radarový graf"),
+                                            ("line", "Graf s liniemi"),
+                                        ],
+                                        label="Typ",
+                                    ),
+                                ),
+                                (
+                                    "hide_points",
+                                    wagtail.blocks.BooleanBlock(
+                                        help_text="Mění vzhled pouze u linových grafů.",
+                                        label="Schovat body",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_labels",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.CharBlock(
+                                            label="Skupina", max_length=40
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místně definované skupiny",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení zdroje dat",
+                                                        max_length=120,
+                                                    ),
+                                                ),
+                                                (
+                                                    "data",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.IntegerBlock(),
+                                                        default=[0],
+                                                        label="Data",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místní zdroje dat",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "redmine_issue_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "projects",
+                                                    wagtail.blocks.MultipleChoiceBlock(
+                                                        choices=shared.blocks.base.get_redmine_projects,
+                                                        label="Projekty",
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_open",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen otevřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_closed",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen uzavřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_min_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Min. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_max_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Max. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "updated_on",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Např. <=2023-01-01. Více informací na pi2.cz/redmine-api",
+                                                        label="Filtr pro datum aktualizace",
+                                                        max_length=128,
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "issue_label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení úkolů uvnitř grafu",
+                                                        max_length=128,
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "split_per_project",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Rozdělit podle projektu",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "only_grow",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Pouze růst nahoru",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                            ],
+                                            label="Redmine úkoly",
+                                        ),
+                                        blank=True,
+                                        default=[],
+                                        help_text="Úkoly, podle doby vytvoření. Pokud definuješ více zdrojů, datumy v nich musí být stejné.",
+                                        label="Zdroje dat z Redmine (úkoly)",
+                                        required=False,
+                                    ),
+                                ),
+                            ],
+                            template="uniweb/blocks/chart.html",
+                        ),
+                    ),
+                    (
+                        "cards",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "headline",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek bloku", required=False
+                                    ),
+                                ),
+                                (
+                                    "card_items",
+                                    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(
+                                                        help_text="Pokud je vybrána stránka, není nutno zadávat odkaz.",
+                                                        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
+                                                    ),
+                                                ),
+                                            ],
+                                            template="styleguide2/includes/molecules/boxes/card_box_block.html",
+                                        ),
+                                        label="Karty",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="obsah stránky před formulářem",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="uniwebformpage",
+            name="content_landing",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "title",
+                        wagtail.blocks.CharBlock(
+                            group="nadpisy",
+                            icon="title",
+                            label="nadpis",
+                            template="uniweb/blocks/title.html",
+                        ),
+                    ),
+                    (
+                        "advanced_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "picture_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr na výšku 75px nebo více (obrázek bude zmenšen na výšku 75px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text",
+                        wagtail.blocks.RichTextBlock(
+                            features=[
+                                "h2",
+                                "h3",
+                                "h4",
+                                "h5",
+                                "bold",
+                                "italic",
+                                "ol",
+                                "ul",
+                                "hr",
+                                "link",
+                                "document-link",
+                                "image",
+                                "superscript",
+                                "subscript",
+                                "strikethrough",
+                                "blockquote",
+                                "embed",
+                            ],
+                            group="texty",
+                            label="text",
+                            template="uniweb/blocks/text.html",
+                        ),
+                    ),
+                    (
+                        "advanced_text",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="text",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "advanced_text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "gallery",
+                        wagtail.blocks.ListBlock(
+                            wagtail.images.blocks.ImageChooserBlock(label="obrázek"),
+                            group="ostatní",
+                            icon="image",
+                            label="galerie",
+                            template="uniweb/blocks/gallery.html",
+                        ),
+                    ),
+                    (
+                        "picture_list",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.RichTextBlock(
+                                            features=[
+                                                "h2",
+                                                "h3",
+                                                "h4",
+                                                "h5",
+                                                "bold",
+                                                "italic",
+                                                "ol",
+                                                "ul",
+                                                "hr",
+                                                "link",
+                                                "document-link",
+                                                "image",
+                                                "superscript",
+                                                "subscript",
+                                                "strikethrough",
+                                                "blockquote",
+                                                "embed",
+                                            ],
+                                            label="odstavec",
+                                        ),
+                                        label="odstavce",
+                                    ),
+                                ),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr 25x25px nebo více (obrázek bude zmenšen na 25x25px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "aligned_table",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "alignment",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "Vlevo"),
+                                            ("center", "Vprostřed"),
+                                            ("right", "Vpravo"),
+                                            ("full", "Celá šířka obrazovky"),
+                                        ],
+                                        label="Zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "table",
+                                    wagtail.contrib.table_block.blocks.TableBlock(
+                                        label="Tabulka"
+                                    ),
+                                ),
+                            ],
+                            group="ostatní",
+                            template="uniweb/blocks/aligned_table.html",
+                        ),
+                    ),
+                    (
+                        "table",
+                        wagtail.contrib.table_block.blocks.TableBlock(
+                            group="ostatní",
+                            label="Tabulka",
+                            template="uniweb/blocks/table.html",
+                        ),
+                    ),
+                    (
+                        "articles",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="sekce článků",
+                                        page_type=["uniweb.UniwebArticlesIndexPage"],
+                                    ),
+                                ),
+                                (
+                                    "lines",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=1,
+                                        help_text="zobrazí se tři články na řádek",
+                                        label="počet řádků",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "calendar_agenda",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "info",
+                                    wagtail.blocks.static_block.StaticBlock(
+                                        admin_text="adresa kalendáře se zadává v nastavení hlavní stránky webu",
+                                        label="volba kalendáře",
+                                    ),
+                                ),
+                                (
+                                    "count",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=10, label="maximum událostí k zobrazení"
+                                    ),
+                                ),
+                                (
+                                    "event_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("future", "budoucí"),
+                                            ("past", "proběhlé"),
+                                        ],
+                                        label="druh událostí",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "button",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "chart",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Název", max_length=120
+                                    ),
+                                ),
+                                (
+                                    "chart_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("bar", "Graf se sloupci"),
+                                            (
+                                                "horizontalBar",
+                                                "Graf s vodorovnými sloupci",
+                                            ),
+                                            ("pie", "Koláčový graf"),
+                                            ("doughnut", "Donutový graf"),
+                                            ("polarArea", "Graf polární oblasti"),
+                                            ("radar", "Radarový graf"),
+                                            ("line", "Graf s liniemi"),
+                                        ],
+                                        label="Typ",
+                                    ),
+                                ),
+                                (
+                                    "hide_points",
+                                    wagtail.blocks.BooleanBlock(
+                                        help_text="Mění vzhled pouze u linových grafů.",
+                                        label="Schovat body",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_labels",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.CharBlock(
+                                            label="Skupina", max_length=40
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místně definované skupiny",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení zdroje dat",
+                                                        max_length=120,
+                                                    ),
+                                                ),
+                                                (
+                                                    "data",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.IntegerBlock(),
+                                                        default=[0],
+                                                        label="Data",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místní zdroje dat",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "redmine_issue_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "projects",
+                                                    wagtail.blocks.MultipleChoiceBlock(
+                                                        choices=shared.blocks.base.get_redmine_projects,
+                                                        label="Projekty",
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_open",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen otevřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_closed",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen uzavřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_min_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Min. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_max_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Max. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "updated_on",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Např. <=2023-01-01. Více informací na pi2.cz/redmine-api",
+                                                        label="Filtr pro datum aktualizace",
+                                                        max_length=128,
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "issue_label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení úkolů uvnitř grafu",
+                                                        max_length=128,
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "split_per_project",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Rozdělit podle projektu",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "only_grow",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Pouze růst nahoru",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                            ],
+                                            label="Redmine úkoly",
+                                        ),
+                                        blank=True,
+                                        default=[],
+                                        help_text="Úkoly, podle doby vytvoření. Pokud definuješ více zdrojů, datumy v nich musí být stejné.",
+                                        label="Zdroje dat z Redmine (úkoly)",
+                                        required=False,
+                                    ),
+                                ),
+                            ],
+                            template="uniweb/blocks/chart.html",
+                        ),
+                    ),
+                    (
+                        "cards",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "headline",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek bloku", required=False
+                                    ),
+                                ),
+                                (
+                                    "card_items",
+                                    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(
+                                                        help_text="Pokud je vybrána stránka, není nutno zadávat odkaz.",
+                                                        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
+                                                    ),
+                                                ),
+                                            ],
+                                            template="styleguide2/includes/molecules/boxes/card_box_block.html",
+                                        ),
+                                        label="Karty",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="obsah stránky zobrazené po odeslání formuláře",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="uniwebhomepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "title",
+                        wagtail.blocks.CharBlock(
+                            group="nadpisy",
+                            icon="title",
+                            label="nadpis",
+                            template="uniweb/blocks/title.html",
+                        ),
+                    ),
+                    (
+                        "advanced_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "picture_title",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                ("title", wagtail.blocks.CharBlock(label="nadpis")),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr na výšku 75px nebo více (obrázek bude zmenšen na výšku 75px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text",
+                        wagtail.blocks.RichTextBlock(
+                            features=[
+                                "h2",
+                                "h3",
+                                "h4",
+                                "h5",
+                                "bold",
+                                "italic",
+                                "ol",
+                                "ul",
+                                "hr",
+                                "link",
+                                "document-link",
+                                "image",
+                                "superscript",
+                                "subscript",
+                                "strikethrough",
+                                "blockquote",
+                                "embed",
+                            ],
+                            group="texty",
+                            label="text",
+                            template="uniweb/blocks/text.html",
+                        ),
+                    ),
+                    (
+                        "advanced_text",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="text",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "advanced_text_columns",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "align",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "vlevo"),
+                                            ("center", "uprostřed"),
+                                            ("right", "vpravo"),
+                                        ],
+                                        label="zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "left_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="levý sloupec",
+                                    ),
+                                ),
+                                (
+                                    "right_text",
+                                    wagtail.blocks.RichTextBlock(
+                                        features=[
+                                            "h2",
+                                            "h3",
+                                            "h4",
+                                            "h5",
+                                            "bold",
+                                            "italic",
+                                            "ol",
+                                            "ul",
+                                            "hr",
+                                            "link",
+                                            "document-link",
+                                            "image",
+                                            "superscript",
+                                            "subscript",
+                                            "strikethrough",
+                                            "blockquote",
+                                            "embed",
+                                        ],
+                                        label="pravý sloupec",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "gallery",
+                        wagtail.blocks.ListBlock(
+                            wagtail.images.blocks.ImageChooserBlock(label="obrázek"),
+                            group="ostatní",
+                            icon="image",
+                            label="galerie",
+                            template="uniweb/blocks/gallery.html",
+                        ),
+                    ),
+                    (
+                        "picture_list",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "color",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("black_on_white", "černá na bílé"),
+                                            ("white_on_black", "bílá na černé"),
+                                            ("white_on_blue", "bílá na modré"),
+                                            ("white_on_cyan", "bílá na tyrkysové"),
+                                            ("white_on_violet", "bílá na fialové"),
+                                        ],
+                                        label="barva",
+                                    ),
+                                ),
+                                (
+                                    "items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.RichTextBlock(
+                                            features=[
+                                                "h2",
+                                                "h3",
+                                                "h4",
+                                                "h5",
+                                                "bold",
+                                                "italic",
+                                                "ol",
+                                                "ul",
+                                                "hr",
+                                                "link",
+                                                "document-link",
+                                                "image",
+                                                "superscript",
+                                                "subscript",
+                                                "strikethrough",
+                                                "blockquote",
+                                                "embed",
+                                            ],
+                                            label="odstavec",
+                                        ),
+                                        label="odstavce",
+                                    ),
+                                ),
+                                (
+                                    "picture",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="rozměr 25x25px nebo více (obrázek bude zmenšen na 25x25px)",
+                                        label="obrázek",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "aligned_table",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "alignment",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("left", "Vlevo"),
+                                            ("center", "Vprostřed"),
+                                            ("right", "Vpravo"),
+                                            ("full", "Celá šířka obrazovky"),
+                                        ],
+                                        label="Zarovnání",
+                                    ),
+                                ),
+                                (
+                                    "table",
+                                    wagtail.contrib.table_block.blocks.TableBlock(
+                                        label="Tabulka"
+                                    ),
+                                ),
+                            ],
+                            group="ostatní",
+                            template="uniweb/blocks/aligned_table.html",
+                        ),
+                    ),
+                    (
+                        "table",
+                        wagtail.contrib.table_block.blocks.TableBlock(
+                            group="ostatní",
+                            label="Tabulka",
+                            template="uniweb/blocks/table.html",
+                        ),
+                    ),
+                    (
+                        "articles",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="sekce článků",
+                                        page_type=["uniweb.UniwebArticlesIndexPage"],
+                                    ),
+                                ),
+                                (
+                                    "lines",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=1,
+                                        help_text="zobrazí se tři články na řádek",
+                                        label="počet řádků",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "calendar_agenda",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "info",
+                                    wagtail.blocks.static_block.StaticBlock(
+                                        admin_text="adresa kalendáře se zadává v nastavení hlavní stránky webu",
+                                        label="volba kalendáře",
+                                    ),
+                                ),
+                                (
+                                    "count",
+                                    wagtail.blocks.IntegerBlock(
+                                        default=10, label="maximum událostí k zobrazení"
+                                    ),
+                                ),
+                                (
+                                    "event_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("future", "budoucí"),
+                                            ("past", "proběhlé"),
+                                        ],
+                                        label="druh událostí",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "button",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "chart",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Název", max_length=120
+                                    ),
+                                ),
+                                (
+                                    "chart_type",
+                                    wagtail.blocks.ChoiceBlock(
+                                        choices=[
+                                            ("bar", "Graf se sloupci"),
+                                            (
+                                                "horizontalBar",
+                                                "Graf s vodorovnými sloupci",
+                                            ),
+                                            ("pie", "Koláčový graf"),
+                                            ("doughnut", "Donutový graf"),
+                                            ("polarArea", "Graf polární oblasti"),
+                                            ("radar", "Radarový graf"),
+                                            ("line", "Graf s liniemi"),
+                                        ],
+                                        label="Typ",
+                                    ),
+                                ),
+                                (
+                                    "hide_points",
+                                    wagtail.blocks.BooleanBlock(
+                                        help_text="Mění vzhled pouze u linových grafů.",
+                                        label="Schovat body",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_labels",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.CharBlock(
+                                            label="Skupina", max_length=40
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místně definované skupiny",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "local_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení zdroje dat",
+                                                        max_length=120,
+                                                    ),
+                                                ),
+                                                (
+                                                    "data",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.IntegerBlock(),
+                                                        default=[0],
+                                                        label="Data",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        blank=True,
+                                        collapsed=True,
+                                        default=[],
+                                        label="Místní zdroje dat",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "redmine_issue_datasets",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "projects",
+                                                    wagtail.blocks.MultipleChoiceBlock(
+                                                        choices=shared.blocks.base.get_redmine_projects,
+                                                        label="Projekty",
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_open",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen otevřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "is_closed",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Jen uzavřené",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_min_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Min. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "created_on_max_date",
+                                                    wagtail.blocks.DateBlock(
+                                                        label="Max. datum vytvoření",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "updated_on",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Např. <=2023-01-01. Více informací na pi2.cz/redmine-api",
+                                                        label="Filtr pro datum aktualizace",
+                                                        max_length=128,
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "issue_label",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Označení úkolů uvnitř grafu",
+                                                        max_length=128,
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "split_per_project",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Rozdělit podle projektu",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "only_grow",
+                                                    wagtail.blocks.BooleanBlock(
+                                                        label="Pouze růst nahoru",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                            ],
+                                            label="Redmine úkoly",
+                                        ),
+                                        blank=True,
+                                        default=[],
+                                        help_text="Úkoly, podle doby vytvoření. Pokud definuješ více zdrojů, datumy v nich musí být stejné.",
+                                        label="Zdroje dat z Redmine (úkoly)",
+                                        required=False,
+                                    ),
+                                ),
+                            ],
+                            template="uniweb/blocks/chart.html",
+                        ),
+                    ),
+                    (
+                        "cards",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "headline",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek bloku", required=False
+                                    ),
+                                ),
+                                (
+                                    "card_items",
+                                    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(
+                                                        help_text="Pokud je vybrána stránka, není nutno zadávat odkaz.",
+                                                        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
+                                                    ),
+                                                ),
+                                            ],
+                                            template="styleguide2/includes/molecules/boxes/card_box_block.html",
+                                        ),
+                                        label="Karty",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "newsletter",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "list_id",
+                                    wagtail.blocks.CharBlock(
+                                        label="ID newsletteru", required=True
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.CharBlock(
+                                        default="Fake news tam nenajdeš, ale dozvíš se, co chystáme doopravdy!",
+                                        label="Popis newsletteru",
+                                        required=True,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="obsah stránky",
+            ),
+        ),
+    ]
diff --git a/uniweb/models.py b/uniweb/models.py
index 77333736..1013f263 100644
--- a/uniweb/models.py
+++ b/uniweb/models.py
@@ -27,7 +27,7 @@ from wagtail.search import index
 from wagtailmetadata.models import MetadataPageMixin
 
 from calendar_utils.models import CalendarMixin
-from shared.blocks import ChartBlock, NewsletterSubscriptionBlock
+from shared.blocks import ChartBlock, FlipCardsBlock, NewsletterSubscriptionBlock
 from shared.const import RICH_TEXT_DEFAULT_FEATURES
 from shared.models import (
     ArticleMixin,
@@ -324,6 +324,7 @@ CONTENT_STREAM_BLOCKS = [
     ("calendar_agenda", CalendarAgendaBlock()),
     ("button", ButtonBlock()),
     ("chart", ChartBlock(template="uniweb/blocks/chart.html")),
+    ("cards", FlipCardsBlock()),
 ]
 
 
diff --git a/uniweb/templates/uniweb/base.html b/uniweb/templates/uniweb/base.html
index 7e890a31..7e3e303e 100644
--- a/uniweb/templates/uniweb/base.html
+++ b/uniweb/templates/uniweb/base.html
@@ -19,10 +19,162 @@
   <!-- Styles -->
   <link href="{{ styleguide_url }}/css/styles.css" rel="stylesheet" media="all" />
   <link href="{{ styleguide_url }}/css/pattern-scaffolding.css" rel="stylesheet" media="all" />
+
   <link href="{% static "shared/vendor/fancybox/jquery.fancybox.min.css" %}" rel="stylesheet">
   <link rel="stylesheet" href="{% static "shared/vendor/vue-formulate-2.5.3/css/snow.min.css" %}">
   <link rel="stylesheet" href="{% static "shared/css/helpers.css" %}">
 
+  <style type="text/css">
+
+  /*
+    CSS taken directly from a styleguide2 build. I don't really want
+    to take elements from the new styleguide and put them into the old
+    one, and this template won't be around for much longer given the
+    upcoming redesign.
+
+    Creates supports for the flip cards seen for example in Nalodění.
+  */
+
+  .flip-card .prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){
+    margin-top:.75rem;
+    margin-bottom:.75rem
+    }
+  .flip-card .prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){
+    margin-top:.25rem;
+    margin-bottom:.25rem
+    }
+  .flip-card{
+    height:33rem;
+    width:auto;
+    cursor:pointer;
+    perspective:1000px
+    }
+  .flip-card::after {
+    all: unset
+    }
+  .flip-card-inner{
+    position:relative;
+    width:100%;
+    height:100%;
+    transition:transform .8s;
+    transform-style:preserve-3d
+    }
+  .flip-card:hover .flip-card-inner,.flip-card:focus .flip-card-inner{
+    transform:rotateY(180deg)
+    }
+  .flip-card-front,.flip-card-back{
+    position:absolute;
+    width:100%;
+    height:33rem;
+    backface-visibility:hidden
+    }
+  .flip-card-back{
+    transform:rotateY(180deg)
+    }
+  .absolute{
+    position: absolute
+    }
+  .relative{
+    position: relative
+    }
+  .bottom-4{
+    bottom: 1rem
+    }
+  .left-0{
+    left: 0px
+    }
+  .left-10{
+    left: 2.5rem
+    }
+  .right-4{
+    right: 1rem
+    }
+  .top-0{
+    top: 0px
+    }
+  .top-10{
+    top: 2.5rem
+    }
+  .block{
+    display: block
+    }
+  .grid{
+    display: grid
+    }
+  .h-\[33rem\]{
+    height: 33rem
+    }
+  .grid-cols-1{
+    grid-template-columns: repeat(1, minmax(0, 1fr))
+    }
+  .content-stretch{
+    align-content: stretch
+    }
+  .gap-4{
+    gap: 1rem
+    }
+  .overflow-hidden{
+    overflow: hidden
+    }
+  .whitespace-pre-line{
+    white-space: pre-line
+    }
+  .rounded-3xl{
+    border-radius: 1.5rem
+    }
+  .border{
+    border-width: 1px
+    }
+  .border-l-0{
+    border-left-width: 0px
+    }
+  .border-r-\[27rem\]{
+    border-right-width: 27rem
+    }
+  .border-t-\[33rem\]{
+    border-top-width: 33rem
+    }
+  .border-r-\[transparent\]{
+    border-right-color: transparent
+    }
+  .bg-cover{
+    background-size: cover
+    }
+  .p-10{
+    padding: 2.5rem
+    }
+  .text-right{
+    text-align: right
+    }
+  .text-5xl{
+    font-size: 3rem;
+    line-height: 1
+    }
+  .leading-5{
+    line-height: 1.25rem
+    }
+  .text-white{
+    --tw-text-opacity: 1;
+    color: rgb(255 255 255 / var(--tw-text-opacity))
+    }
+  .opacity-75{
+    opacity: 0.75
+    }
+  @media (min-width: 768px){
+    .md\:hidden{
+      display: none
+      }
+    .md\:grid-cols-2{
+      grid-template-columns: repeat(2, minmax(0, 1fr))
+      }
+    }
+    @media (min-width: 1024px){
+      .lg\:grid-cols-3{
+        grid-template-columns: repeat(3, minmax(0, 1fr))
+        }
+      }
+  </style>
+
   <style type="text/css">
     .head-alt-md, .head-alt-lg {
       line-height: 1.25;
-- 
GitLab