From 05f481cdf98597a6c0428afe8807fed5209e6745 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org>
Date: Fri, 9 Feb 2024 14:35:33 +0100
Subject: [PATCH] add button to uniweb, fix PDF page

---
 .../0073_alter_mainhomepage_content.py        |   22 +
 main/models.py                                |    2 +-
 shared/blocks/base.py                         |    2 -
 shared/templates/shared/pdf_snippet.html      |    1 +
 .../articles/article_timeline_preview.html    |    2 +-
 .../organisms/articles/articles_section.html  |    2 +-
 ...ter_uniwebflexiblepage_content_and_more.py | 3116 ++++++++++++++++
 ...ter_uniwebflexiblepage_content_and_more.py | 3126 +++++++++++++++++
 uniweb/models.py                              |   23 +
 uniweb/templates/uniweb/blocks/button.html    |   15 +
 10 files changed, 6306 insertions(+), 5 deletions(-)
 create mode 100644 main/migrations/0073_alter_mainhomepage_content.py
 create mode 100644 uniweb/migrations/0055_alter_uniwebflexiblepage_content_and_more.py
 create mode 100644 uniweb/migrations/0056_alter_uniwebflexiblepage_content_and_more.py
 create mode 100644 uniweb/templates/uniweb/blocks/button.html

diff --git a/main/migrations/0073_alter_mainhomepage_content.py b/main/migrations/0073_alter_mainhomepage_content.py
new file mode 100644
index 00000000..59b71357
--- /dev/null
+++ b/main/migrations/0073_alter_mainhomepage_content.py
@@ -0,0 +1,22 @@
+# Generated by Django 4.1.10 on 2024-02-09 13:34
+
+from django.db import migrations
+import main.blocks
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('main', '0072_mainarticlepage_show_initial_image'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='mainhomepage',
+            name='content',
+            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('desktop_line_1', wagtail.blocks.TextBlock(label='Desktop první řádek')), ('desktop_line_2', wagtail.blocks.TextBlock(label='Desktop druhý řádek')), ('mobile_line_1', wagtail.blocks.TextBlock(label='První mobilní řádek')), ('mobile_line_2', wagtail.blocks.TextBlock(label='Druhý mobilní řádek')), ('mobile_line_3', wagtail.blocks.TextBlock(label='Třetí mobilní řádek')), ('desktop_image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek nahrazující animaci (desktop)', required=False)), ('mobile_image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek nahrazující animaci (mobil / tablet)', required=False)), ('button_url', wagtail.blocks.URLBlock(help_text='Bez odkazu tlačítko nebude viditelné.', label='Odkaz tlačítka', required=False)), ('button_text', wagtail.blocks.CharBlock(label='Text tlačítka', required=False))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))], template='styleguide2/includes/organisms/articles/articles_section.html')), ('people', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky'))])), ('regions', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Články pro regiony se načtou automaticky', label='Titulek'))])), ('boxes', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Nadpis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek pozadí', required=False))]))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+        ),
+    ]
diff --git a/main/models.py b/main/models.py
index 5242e8c4..dc14653c 100644
--- a/main/models.py
+++ b/main/models.py
@@ -62,7 +62,7 @@ class MainHomePage(MainHomePageMixin):
                     template="styleguide2/includes/organisms/articles/articles_section.html"
                 ),
             ),
-            ("europarl_news", blocks.EuroparlNewsBlock()),
+            # ("europarl_news", blocks.EuroparlNewsBlock()),
             ("people", blocks.PeopleOverviewBlock()),
             ("regions", blocks.RegionsBlock()),
             ("boxes", blocks.BoxesBlock()),
diff --git a/shared/blocks/base.py b/shared/blocks/base.py
index edc32b36..28d98856 100644
--- a/shared/blocks/base.py
+++ b/shared/blocks/base.py
@@ -768,8 +768,6 @@ class ChartRedmineIssueDataset(blocks.StructBlock):
 
             is_first = False
 
-        print(url)
-
         return url
 
     def _get_parsed_issues(self, value, labels, issues_url) -> tuple:
diff --git a/shared/templates/shared/pdf_snippet.html b/shared/templates/shared/pdf_snippet.html
index 0e3f1ebd..2c69fb22 100644
--- a/shared/templates/shared/pdf_snippet.html
+++ b/shared/templates/shared/pdf_snippet.html
@@ -33,6 +33,7 @@
                                     const context = canvas.getContext("2d");
                                     canvas.height = viewport.height;
                                     canvas.width = viewport.width;
+                                    canvas.style.width = "100%"
 
                                     // Render PDF page into canvas context
                                     await page.render({
diff --git a/shared/templates/styleguide2/includes/molecules/articles/article_timeline_preview.html b/shared/templates/styleguide2/includes/molecules/articles/article_timeline_preview.html
index 34d83c25..dd1be472 100644
--- a/shared/templates/styleguide2/includes/molecules/articles/article_timeline_preview.html
+++ b/shared/templates/styleguide2/includes/molecules/articles/article_timeline_preview.html
@@ -8,7 +8,7 @@
   "
 >
   <a href="{{ article.url }}">
-    {% image article.image width-512 as image %}
+    {% image article.image width-1024 as image %}
 
     <img
       src="{{ image.url }}"
diff --git a/shared/templates/styleguide2/includes/organisms/articles/articles_section.html b/shared/templates/styleguide2/includes/organisms/articles/articles_section.html
index 9372b979..3ad61851 100644
--- a/shared/templates/styleguide2/includes/organisms/articles/articles_section.html
+++ b/shared/templates/styleguide2/includes/organisms/articles/articles_section.html
@@ -31,7 +31,7 @@
       "
     >
       {% for article in article_data_list %}
-        {% image article.image max-500x500 as article_image %}
+        {% image article.image max-1024x1024 as article_image %}
 
         {% include 'styleguide2/includes/molecules/boxes/card_box.html' with url=article.url image=article_image date=article.date header=article.title content=article.perex|shorten_perex %}
       {% endfor %}
diff --git a/uniweb/migrations/0055_alter_uniwebflexiblepage_content_and_more.py b/uniweb/migrations/0055_alter_uniwebflexiblepage_content_and_more.py
new file mode 100644
index 00000000..997be8fa
--- /dev/null
+++ b/uniweb/migrations/0055_alter_uniwebflexiblepage_content_and_more.py
@@ -0,0 +1,3116 @@
+# Generated by Django 4.1.10 on 2024-02-09 12:59
+
+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", "0054_alter_uniwebhomepage_top_menu_uniwebpdfpage"),
+    ]
+
+    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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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(
+                            [
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                    ),
+                                ),
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                    (
+                        "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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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(
+                            [
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                    ),
+                                ),
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                ],
+                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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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(
+                            [
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                    ),
+                                ),
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                ],
+                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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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(
+                            [
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                    ),
+                                ),
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                ],
+                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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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(
+                            [
+                                (
+                                    "url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+                                        label="Odkaz",
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+                                        label="Stránka",
+                                    ),
+                                ),
+                                ("text", wagtail.blocks.CharBlock(label="Nadpis")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                    (
+                        "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/migrations/0056_alter_uniwebflexiblepage_content_and_more.py b/uniweb/migrations/0056_alter_uniwebflexiblepage_content_and_more.py
new file mode 100644
index 00000000..ac042634
--- /dev/null
+++ b/uniweb/migrations/0056_alter_uniwebflexiblepage_content_and_more.py
@@ -0,0 +1,3126 @@
+# Generated by Django 4.1.10 on 2024-02-09 13:02
+
+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", "0055_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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                    (
+                        "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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                ],
+                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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                ],
+                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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                ],
+                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",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "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",
+                        ),
+                    ),
+                    (
+                        "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 32a57798..13c12a22 100644
--- a/uniweb/models.py
+++ b/uniweb/models.py
@@ -248,6 +248,28 @@ class CalendarAgendaBlock(blocks.StructBlock):
         return context
 
 
+class ButtonBlock(blocks.StructBlock):
+    text = blocks.CharBlock(label="Nadpis")
+
+    url = blocks.URLBlock(
+        label="Odkaz",
+        help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
+        required=False,
+    )
+
+    page = blocks.PageChooserBlock(
+        label="Stránka",
+        help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
+        required=False,
+    )
+
+    class Meta:
+        label = "Tlačítko"
+        icon = "link-external"
+        group = "ostatní"
+        template = "uniweb/blocks/button.html"
+
+
 CONTENT_STREAM_BLOCKS = [
     (
         "title",
@@ -293,6 +315,7 @@ CONTENT_STREAM_BLOCKS = [
     ),
     ("articles", ArticlesBlock()),
     ("calendar_agenda", CalendarAgendaBlock()),
+    ("button", ButtonBlock()),
     ("chart", ChartBlock(template="uniweb/blocks/chart.html")),
 ]
 
diff --git a/uniweb/templates/uniweb/blocks/button.html b/uniweb/templates/uniweb/blocks/button.html
new file mode 100644
index 00000000..3e3c02e5
--- /dev/null
+++ b/uniweb/templates/uniweb/blocks/button.html
@@ -0,0 +1,15 @@
+{% load wagtailcore_tags %}
+
+{% firstof self.url self.page as target %}
+
+<div class="flex justify-center items-center">
+  <a
+    class="btn"
+    href="{{ target }}"
+  >
+    <div
+      class="btn__body text-black font-bold font-alt text-3xl px-5 py-4"
+      style="background-color:#fec900!important"
+    >{{ self.text }}</div>
+  </a>
+</div>
-- 
GitLab