diff --git a/main/blocks.py b/main/blocks.py index 4a6e4c51f58b548e75b0fb6be93ed0cd52ee1c53..e961943009d925b18ee9d8abef785aa1bd6cd80d 100644 --- a/main/blocks.py +++ b/main/blocks.py @@ -1,14 +1,61 @@ -from wagtail.core.blocks import CharBlock, PageChooserBlock, StructBlock, URLBlock +from wagtail.core.blocks import ( + CharBlock, + ListBlock, + PageChooserBlock, + StructBlock, + TextBlock, + URLBlock, +) +from wagtail.images.blocks import ImageChooserBlock -# HomePageCarouselBlock -# RecentWork/TweetsBlock -# NewsBlock -# PeopleOverviewBlock -# RegionOverviewBlock -# LinkBoxBlock (mozna hardcoded do homepage?) -# WorkTimelineBlock -# ArticleLinkBlock -# ProgramBlock + +class CTAMixin: + button_link = URLBlock(label="Odkaz tlačítka") + button_text = CharBlock(label="Text tlačítka") + + +class BoxBlock(CTAMixin, StructBlock): + image = ImageChooserBlock(label="Logo/obrázek") + title = CharBlock(label="Nadpis") + + +class BoxesBlock(StructBlock): + title = CharBlock(label="Nadpis") + list = ListBlock(BoxBlock, label="Boxíky") + + +class HomePageCarouseSlideBlock(CTAMixin, StructBlock): + line_1 = CharBlock() + line_2 = CharBlock() + + +class HomePageCarouselBlock(StructBlock): + slides = ListBlock(HomePageCarouseSlideBlock) + + +class PeopleGroupBlock(StructBlock): + title = CharBlock() + person_list = ListBlock(PageChooserBlock(page_type="main.MainPersonPage")) + + +class ProgramBlock(StructBlock): + icon = ImageChooserBlock() + title = CharBlock() + text = TextBlock() + + +class ProgramGroupBlock(StructBlock): + title = CharBlock() + person_list = ListBlock(ProgramBlock()) + + +class TweetsBlock(StructBlock): + title = CharBlock() + + +# NewsBlock - zatím asi hardcoded +# PeopleOverviewBlock - zatím asi hardcoded +# RegionOverviewBlock - zatím asi hardcoded class PersonContactBlock(StructBlock): @@ -24,12 +71,24 @@ class PersonContactBlock(StructBlock): label = "Osoba s volitelnou pozicí" -class PersonContactBoxBlock(StructBlock): +class PersonContactBoxBlock(CTAMixin, StructBlock): title = CharBlock(label="Titulek") subtitle = CharBlock(label="Podtitulek") - button_link = URLBlock() - button_text = CharBlock(label="Text tlačítka") + + +# Footer +class LinkBlock(StructBlock): + text = CharBlock() + link = URLBlock() + + +class OtherLinksBlock(StructBlock): + title = CharBlock() + list = ListBlock(LinkBlock) + + +class SocialLinkBlock(LinkBlock): + icon = CharBlock() # TODO CSS class name or somthing better? # TwitterCarouselBlock -# ContactBlock diff --git a/main/migrations/0002_mainarticlepage_remove_mainhomepage_footer_and_more.py b/main/migrations/0002_mainarticlepage_remove_mainhomepage_footer_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..3a202712aefb7eb4635b81c6baa37b486790046e --- /dev/null +++ b/main/migrations/0002_mainarticlepage_remove_mainhomepage_footer_and_more.py @@ -0,0 +1,6543 @@ +# Generated by Django 4.0.4 on 2022-08-10 16:23 + +import django.utils.timezone +import modelcluster.contrib.taggit +import modelcluster.fields +import wagtail.blocks +import wagtail.contrib.routable_page.models +import wagtail.contrib.table_block.blocks +import wagtail.fields +import wagtail.images.blocks +import wagtailmetadata.models +from django.db import migrations, models + +import main.blocks +import shared.models + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailimages", "0024_index_image_file_hash"), + ("taggit", "0004_alter_taggeditem_content_type_alter_taggeditem_tag"), + ("wagtailcore", "0069_log_entry_jsonfield"), + ("main", "0001_initial"), + ] + + operations = [ + migrations.CreateModel( + name="MainArticlePage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ( + "content", + wagtail.fields.StreamField( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "headline", + wagtail.blocks.StructBlock( + [ + ( + "headline", + wagtail.blocks.CharBlock( + label="Headline", + max_length=300, + required=True, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ("head-alt-xl", "Bebas XL"), + ("head-alt-lg", "Bebas L"), + ("head-alt-md", "Bebas M"), + ("head-alt-base", "Bebas base"), + ("head-alt-sm", "Bebas SM"), + ("head-alt-xs", "Bebas XS"), + ("head-alt-2xs", "Bebas 2XS"), + ("head-heavy-base", "Roboto base"), + ("head-heavy-sm", "Roboto SM"), + ("head-heavy-xs", "Roboto XS"), + ("head-heavy-2xs", "Roboto 2XS"), + ("head-allcaps-2xs", "Allcaps 2XS"), + ("head-allcaps-3xs", "Allcaps 3XS"), + ("head-allcaps-4xs", "Allcaps 4XS"), + ( + "head-heavy-allcaps-2xs", + "Allcaps heavy 2XS", + ), + ( + "head-heavy-allcaps-3xs", + "Allcaps heavy 3XS", + ), + ( + "head-heavy-allcaps-4xs", + "Allcaps heavy 4XS", + ), + ], + help_text="Náhled si prohlédněte na https://styleguide.pir-test.eu/latest/?p=viewall-atoms-text.", + label="Styl", + ), + ), + ( + "tag", + wagtail.blocks.ChoiceBlock( + choices=[ + ("h1", "H1"), + ("h2", "H2"), + ("h3", "H3"), + ("h4", "H4"), + ("h5", "H5"), + ("h6", "H6"), + ], + help_text="Čím nižší číslo, tím vyšší úroveň.", + label="Úroveň nadpisu", + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ("auto", "Automaticky"), + ("center", "Na střed"), + ], + label="Zarovnání", + ), + ), + ] + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "gallery", + wagtail.blocks.StructBlock( + [ + ( + "gallery_items", + wagtail.blocks.ListBlock( + wagtail.images.blocks.ImageChooserBlock( + label="obrázek", required=True + ), + group="ostatní", + icon="image", + label="Galerie", + ), + ) + ], + label="Galerie", + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", required=True + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", required=False + ), + ), + ] + ), + ), + ( + "card", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", required=False + ), + ), + ( + "elevation", + wagtail.blocks.IntegerBlock( + default=2, + help_text="0 = žádný stín, 21 = maximální stín", + label="Velikost stínu", + max_value=21, + min_value=0, + ), + ), + ( + "headline", + wagtail.blocks.TextBlock( + label="Titulek", required=False + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=False, + help_text="Pokud je zapnuto, stín se zvýrazní, když na kartu uživatel najede myší.", + label="Zvýraznit stín na hover", + required=False, + ), + ), + ( + "content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ], + label="Obsah", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", required=False + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", required=False + ), + ), + ] + ), + ), + ( + "two_columns", + wagtail.blocks.StructBlock( + [ + ( + "left_column_content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "card", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "elevation", + wagtail.blocks.IntegerBlock( + default=2, + help_text="0 = žádný stín, 21 = maximální stín", + label="Velikost stínu", + max_value=21, + min_value=0, + ), + ), + ( + "headline", + wagtail.blocks.TextBlock( + label="Titulek", + required=False, + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=False, + help_text="Pokud je zapnuto, stín se zvýrazní, když na kartu uživatel najede myší.", + label="Zvýraznit stín na hover", + required=False, + ), + ), + ( + "content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ], + label="Obsah", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ] + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ( + "button", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + ), + ( + "button_group", + wagtail.blocks.StructBlock( + [ + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + label="Tlačítka", + ), + ) + ] + ), + ), + ], + label="Obsah levého sloupce", + required=True, + ), + ), + ( + "right_column_content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "card", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "elevation", + wagtail.blocks.IntegerBlock( + default=2, + help_text="0 = žádný stín, 21 = maximální stín", + label="Velikost stínu", + max_value=21, + min_value=0, + ), + ), + ( + "headline", + wagtail.blocks.TextBlock( + label="Titulek", + required=False, + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=False, + help_text="Pokud je zapnuto, stín se zvýrazní, když na kartu uživatel najede myší.", + label="Zvýraznit stín na hover", + required=False, + ), + ), + ( + "content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ], + label="Obsah", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ] + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ( + "button", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + ), + ( + "button_group", + wagtail.blocks.StructBlock( + [ + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + label="Tlačítka", + ), + ) + ] + ), + ), + ], + label="Obsah pravého sloupce", + required=True, + ), + ), + ] + ), + ), + ( + "three_columns", + wagtail.blocks.StructBlock( + [ + ( + "left_column_content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "card", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "elevation", + wagtail.blocks.IntegerBlock( + default=2, + help_text="0 = žádný stín, 21 = maximální stín", + label="Velikost stínu", + max_value=21, + min_value=0, + ), + ), + ( + "headline", + wagtail.blocks.TextBlock( + label="Titulek", + required=False, + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=False, + help_text="Pokud je zapnuto, stín se zvýrazní, když na kartu uživatel najede myší.", + label="Zvýraznit stín na hover", + required=False, + ), + ), + ( + "content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ], + label="Obsah", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ] + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ( + "button", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + ), + ( + "button_group", + wagtail.blocks.StructBlock( + [ + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + label="Tlačítka", + ), + ) + ] + ), + ), + ], + label="Obsah levého sloupce", + required=True, + ), + ), + ( + "middle_column_content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "card", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "elevation", + wagtail.blocks.IntegerBlock( + default=2, + help_text="0 = žádný stín, 21 = maximální stín", + label="Velikost stínu", + max_value=21, + min_value=0, + ), + ), + ( + "headline", + wagtail.blocks.TextBlock( + label="Titulek", + required=False, + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=False, + help_text="Pokud je zapnuto, stín se zvýrazní, když na kartu uživatel najede myší.", + label="Zvýraznit stín na hover", + required=False, + ), + ), + ( + "content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ], + label="Obsah", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ] + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ( + "button", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + ), + ( + "button_group", + wagtail.blocks.StructBlock( + [ + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + label="Tlačítka", + ), + ) + ] + ), + ), + ], + label="Obsah prostředního sloupce", + required=True, + ), + ), + ( + "right_column_content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "card", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "elevation", + wagtail.blocks.IntegerBlock( + default=2, + help_text="0 = žádný stín, 21 = maximální stín", + label="Velikost stínu", + max_value=21, + min_value=0, + ), + ), + ( + "headline", + wagtail.blocks.TextBlock( + label="Titulek", + required=False, + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=False, + help_text="Pokud je zapnuto, stín se zvýrazní, když na kartu uživatel najede myší.", + label="Zvýraznit stín na hover", + required=False, + ), + ), + ( + "content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ], + label="Textový editor", + ), + ), + ( + "table", + wagtail.contrib.table_block.blocks.TableBlock( + template="shared/blocks/table_block.html" + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ], + label="Obsah", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ] + ), + ), + ( + "figure", + wagtail.blocks.StructBlock( + [ + ( + "img", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=True, + ), + ), + ( + "caption", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ] + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "osm-mapnik", + "OSM Mapnik", + ), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ( + "mapbox-light", + "Mapbox Light", + ), + ( + "mapbox-dark", + "Mapbox Dark", + ), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ( + "button", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + ), + ( + "button_group", + wagtail.blocks.StructBlock( + [ + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + label="Tlačítka", + ), + ) + ] + ), + ), + ], + label="Obsah pravého sloupce", + required=True, + ), + ), + ] + ), + ), + ( + "youtube", + wagtail.blocks.StructBlock( + [ + ( + "poster_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Není třeba vyplňovat, náhled bude dohledán automaticky.", + label="Náhled videa (automatické pole)", + required=False, + ), + ), + ( + "video_url", + wagtail.blocks.URLBlock( + help_text="Odkaz na YouTube video bude automaticky zkonvertován na ID videa a NEBUDE uložen.", + label="Odkaz na video", + required=False, + ), + ), + ( + "video_id", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky načteno z odkazu.", + label="ID videa (automatické pole)", + required=False, + ), + ), + ], + label="YouTube video", + ), + ), + ( + "map_point", + wagtail.blocks.StructBlock( + [ + ( + "lat", + wagtail.blocks.DecimalBlock( + help_text="Např. 50.04075", + label="Zeměpisná šířka", + ), + ), + ( + "lon", + wagtail.blocks.DecimalBlock( + help_text="Např. 15.77659", + label="Zeměpisná délka", + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva špendlíku (HEX)", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ("osm-mapnik", "OSM Mapnik"), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ("mapbox-light", "Mapbox Light"), + ("mapbox-dark", "Mapbox Dark"), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Špendlík na mapě", + ), + ), + ( + "map_collection", + wagtail.blocks.StructBlock( + [ + ( + "features", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popisek", + required=False, + ), + ), + ( + "geojson", + wagtail.blocks.TextBlock( + help_text="Vložte surový GeoJSON objekt typu 'Feature'. Vyrobit jej můžete např. pomocí online služby geojson.io. Pokud u objektu poskytnete properties 'title' a 'description', zobrazí se jak na mapě, tak i v detailu.", + label="Geodata", + required=True, + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "hex_color", + wagtail.blocks.CharBlock( + default="000000", + help_text="Zadejte barvu pomocí HEX notace (bez # na začátku).", + label="Barva (HEX)", + ), + ), + ], + required=True, + ), + label="Součásti", + ), + ), + ( + "zoom", + wagtail.blocks.IntegerBlock( + default=15, + label="Výchozí zoom", + max_value=18, + min_value=1, + ), + ), + ( + "style", + wagtail.blocks.ChoiceBlock( + choices=[ + ("osm-mapnik", "OSM Mapnik"), + ( + "stadia-osm-bright", + "Stadia OSM Bright", + ), + ( + "stadia-outdoors", + "Stadia Outdoors", + ), + ( + "mapbox-streets", + "Mapbox Streets", + ), + ( + "mapbox-outdoors", + "Mapbox Outdoors", + ), + ("mapbox-light", "Mapbox Light"), + ("mapbox-dark", "Mapbox Dark"), + ( + "mapbox-satellite", + "Mapbox Satellite", + ), + ( + "mapbox-pirate", + "Mapbox Pirate Theme", + ), + ], + label="Styl", + ), + ), + ( + "height", + wagtail.blocks.IntegerBlock( + label="Výška v px", + max_value=1000, + min_value=100, + ), + ), + ], + label="Mapová kolekce", + ), + ), + ( + "button", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ("sm", "Malá"), + ("base", "Střední"), + ("lg", "Velká"), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ("black", "Černá"), + ("white", "Bílá"), + ("grey-125", "Světle šedá"), + ("blue-300", "Modrá"), + ("cyan-200", "Tyrkysová"), + ("green-400", "Zelené"), + ("violet-400", "Vínová"), + ("red-600", "Červená"), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", required=False + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", required=False + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ("auto", "Automaticky"), + ("center", "Na střed"), + ], + label="Zarovnání", + ), + ), + ] + ), + ), + ( + "button_group", + wagtail.blocks.StructBlock( + [ + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ("sm", "Malá"), + ("base", "Střední"), + ("lg", "Velká"), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ("black", "Černá"), + ("white", "Bílá"), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + label="Tlačítka", + ), + ) + ] + ), + ), + ( + "image_banner", + wagtail.blocks.StructBlock( + [ + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek", required=True + ), + ), + ( + "headline", + wagtail.blocks.CharBlock( + label="Headline", + max_length=128, + required=True, + ), + ), + ( + "content", + wagtail.blocks.StreamBlock( + [ + ( + "text", + wagtail.blocks.RichTextBlock( + features=( + "h2", + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "superscript", + "subscript", + "strikethrough", + "blockquote", + ), + label="Textový editor", + ), + ), + ( + "button", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + ), + ( + "button_group", + wagtail.blocks.StructBlock( + [ + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "icon", + wagtail.blocks.CharBlock( + help_text="Identifikátor ikonky ze styleguide (https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons), např. ico--key.", + label="Ikonka", + max_length=128, + required=False, + ), + ), + ( + "size", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "sm", + "Malá", + ), + ( + "base", + "Střední", + ), + ( + "lg", + "Velká", + ), + ], + label="Velikost", + ), + ), + ( + "color", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "black", + "Černá", + ), + ( + "white", + "Bílá", + ), + ( + "grey-125", + "Světle šedá", + ), + ( + "blue-300", + "Modrá", + ), + ( + "cyan-200", + "Tyrkysová", + ), + ( + "green-400", + "Zelené", + ), + ( + "violet-400", + "Vínová", + ), + ( + "red-600", + "Červená", + ), + ], + label="Barva", + ), + ), + ( + "hoveractive", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko mění barvu, když na něj uživatel najede myší.", + label="Animovat na hover", + required=False, + ), + ), + ( + "mobile_fullwidth", + wagtail.blocks.BooleanBlock( + default=True, + help_text="Pokud je zapnuto, tlačítko se na mobilních zařízeních roztáhne na plnou šířku.", + label="Plná šířka na mobilních zařízeních", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ( + "align", + wagtail.blocks.ChoiceBlock( + choices=[ + ( + "auto", + "Automaticky", + ), + ( + "center", + "Na střed", + ), + ], + label="Zarovnání", + ), + ), + ] + ), + label="Tlačítka", + ), + ) + ] + ), + ), + ], + label="Obsah pravého sloupce", + required=False, + ), + ), + ] + ), + ), + ], + blank=True, + use_json_field=None, + verbose_name="Článek", + ), + ), + ( + "date", + models.DateField( + default=django.utils.timezone.now, verbose_name="datum" + ), + ), + ("perex", models.TextField(verbose_name="perex")), + ( + "author", + models.CharField( + blank=True, max_length=250, null=True, verbose_name="autor" + ), + ), + ], + options={ + "verbose_name": "Aktualita", + }, + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), + ), + migrations.RemoveField( + model_name="mainhomepage", + name="footer", + ), + migrations.AddField( + model_name="mainhomepage", + name="contact_newcomers", + field=models.URLField( + blank=True, + default="https://nalodeni.pirati.cz", + null=True, + verbose_name="URL pro zájemce o členství", + ), + ), + migrations.AddField( + model_name="mainhomepage", + name="content", + field=wagtail.fields.StreamField( + [ + ( + "carousel", + wagtail.blocks.StructBlock( + [ + ( + "slides", + wagtail.blocks.ListBlock( + main.blocks.HomePageCarouseSlideBlock + ), + ) + ] + ), + ), + ( + "boxes", + wagtail.blocks.StructBlock( + [ + ("title", wagtail.blocks.CharBlock(label="Nadpis")), + ( + "list", + wagtail.blocks.ListBlock( + main.blocks.BoxBlock, label="Boxíky" + ), + ), + ] + ), + ), + ], + blank=True, + use_json_field=None, + verbose_name="Hlavní obsah", + ), + ), + migrations.AddField( + model_name="mainhomepage", + name="donation_page", + field=models.URLField( + blank=True, + default="https://dary.pirati.cz", + null=True, + verbose_name="URL pro příjem darů (tlačítko Dary)", + ), + ), + migrations.AddField( + model_name="mainhomepage", + name="footer_other_links", + field=wagtail.fields.StreamField( + [ + ( + "other_links", + wagtail.blocks.StructBlock( + [ + ("title", wagtail.blocks.CharBlock()), + ( + "list", + wagtail.blocks.ListBlock(main.blocks.LinkBlock), + ), + ] + ), + ) + ], + blank=True, + use_json_field=None, + verbose_name="Bloky dalších odkazů v zápatí webu", + ), + ), + migrations.AddField( + model_name="mainhomepage", + name="footer_person_list", + field=wagtail.fields.StreamField( + [ + ( + "person", + wagtail.blocks.StructBlock( + [ + ( + "position", + wagtail.blocks.CharBlock( + label="Název pozice", required=False + ), + ), + ( + "person", + wagtail.blocks.PageChooserBlock( + label="Osoba", + page_type=["district.DistrictPersonPage"], + ), + ), + ] + ), + ) + ], + blank=True, + use_json_field=None, + verbose_name="Osoby v zápatí webu", + ), + ), + migrations.AddField( + model_name="mainhomepage", + name="footer_social_links", + field=wagtail.fields.StreamField( + [ + ( + "social_links", + wagtail.blocks.StructBlock( + [ + ("text", wagtail.blocks.CharBlock()), + ("link", wagtail.blocks.URLBlock()), + ("icon", wagtail.blocks.CharBlock()), + ] + ), + ) + ], + blank=True, + use_json_field=None, + verbose_name="Odkazy na sociální sítě v zápatí webu", + ), + ), + migrations.CreateModel( + name="MainWorkPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ("perex", models.TextField()), + ( + "timeline", + wagtail.fields.StreamField( + [ + ( + "article_list", + wagtail.blocks.PageChooserBlock( + page_type=["main.MainArticlePage"] + ), + ) + ], + blank=True, + use_json_field=None, + verbose_name="Timeline", + ), + ), + ( + "search_image", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Search image", + ), + ), + ], + options={ + "verbose_name": "Piráti pracují", + }, + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), + ), + migrations.CreateModel( + name="MainProgramPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ("perex", models.TextField()), + ( + "program", + wagtail.fields.StreamField( + [ + ( + "program_group", + wagtail.blocks.StructBlock( + [ + ("title", wagtail.blocks.CharBlock()), + ( + "person_list", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "icon", + wagtail.images.blocks.ImageChooserBlock(), + ), + ( + "title", + wagtail.blocks.CharBlock(), + ), + ( + "text", + wagtail.blocks.TextBlock(), + ), + ] + ) + ), + ), + ] + ), + ) + ], + blank=True, + use_json_field=None, + verbose_name="Program", + ), + ), + ( + "search_image", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Search image", + ), + ), + ], + options={ + "verbose_name": "Program", + }, + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), + ), + migrations.CreateModel( + name="MainPersonPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ("perex", models.TextField()), + ("text", wagtail.fields.RichTextField()), + ( + "search_image", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Search image", + ), + ), + ], + options={ + "verbose_name": "Detail osoby", + }, + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), + ), + migrations.CreateModel( + name="MainPeoplePage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ("perex", models.TextField()), + ( + "people", + wagtail.fields.StreamField( + [ + ( + "people_group", + wagtail.blocks.StructBlock( + [ + ("title", wagtail.blocks.CharBlock()), + ( + "person_list", + wagtail.blocks.ListBlock( + wagtail.blocks.PageChooserBlock( + page_type=["main.MainPersonPage"] + ) + ), + ), + ] + ), + ) + ], + blank=True, + use_json_field=None, + verbose_name="Lidé", + ), + ), + ( + "search_image", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Search image", + ), + ), + ], + options={ + "verbose_name": "Lidé", + }, + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), + ), + migrations.CreateModel( + name="MainArticleTag", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "content_object", + modelcluster.fields.ParentalKey( + on_delete=django.db.models.deletion.CASCADE, + to="main.mainarticlepage", + ), + ), + ( + "tag", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="%(app_label)s_%(class)s_items", + to="taggit.tag", + ), + ), + ], + options={ + "abstract": False, + }, + ), + migrations.CreateModel( + name="MainArticlesPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ( + "search_image", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Search image", + ), + ), + ], + options={ + "verbose_name": "Aktuality", + }, + bases=( + wagtail.contrib.routable_page.models.RoutablePageMixin, + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), + ), + migrations.AddField( + model_name="mainarticlepage", + name="author_page", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="main.mainpersonpage", + ), + ), + migrations.AddField( + model_name="mainarticlepage", + name="image", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="wagtailimages.image", + verbose_name="obrázek", + ), + ), + migrations.AddField( + model_name="mainarticlepage", + name="search_image", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Search image", + ), + ), + migrations.AddField( + model_name="mainarticlepage", + name="tags", + field=modelcluster.contrib.taggit.ClusterTaggableManager( + blank=True, + help_text="A comma-separated list of tags.", + through="main.MainArticleTag", + to="taggit.Tag", + verbose_name="Tags", + ), + ), + ] diff --git a/main/models.py b/main/models.py index 44e3c1a24bc29e8a7560012018fff2d35b3c81e1..3783213616ff1b3dd2642c90844f6104b0733731 100644 --- a/main/models.py +++ b/main/models.py @@ -1,18 +1,26 @@ +from django.core.paginator import Paginator from django.db import models from django.shortcuts import render +from modelcluster.contrib.taggit import ClusterTaggableManager +from modelcluster.fields import ParentalKey +from taggit.models import TaggedItemBase from wagtail.admin.edit_handlers import FieldPanel, ObjectList, TabbedInterface +from wagtail.contrib.routable_page.models import RoutablePageMixin, route +from wagtail.core.blocks import PageChooserBlock from wagtail.core.fields import RichTextField, StreamField from wagtail.core.models import Page from wagtailmetadata.models import MetadataPageMixin from shared.const import RICH_TEXT_DEFAULT_FEATURES from shared.models import ( + ArticleMixin, ExtendedMetadataHomePageMixin, ExtendedMetadataPageMixin, MenuMixin, SubpageMixin, ) from shared.utils import make_promote_panels +from tuning import admin_help from . import blocks @@ -24,11 +32,54 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, "Matomo ID pro sledování návštěvnosti", blank=True, null=True ) - # header - fb, twitter, insta, youtube, dary, nalodeni - footer = StreamField( - [("item", blocks.PersonContactBlock())], - verbose_name="Kontaktní boxy", + # header + + contact_newcomers = models.URLField( + "URL pro zájemce o členství", blank=True, + null=True, + default="https://nalodeni.pirati.cz", + ) + + donation_page = models.URLField( + "URL pro příjem darů (tlačítko Dary)", + blank=True, + null=True, + default="https://dary.pirati.cz", + ) + + # content + content = StreamField( + [ + ("carousel", blocks.HomePageCarouselBlock()), + ("boxes", blocks.BoxesBlock()), + ], + verbose_name="Hlavní obsah", + blank=True, + ) + + # footer + footer_social_links = StreamField( + [ + ("social_links", blocks.SocialLinkBlock()), + ], + verbose_name="Odkazy na sociální sítě v zápatí webu", + blank=True, + ) + + footer_other_links = StreamField( + [ + ("other_links", blocks.OtherLinksBlock()), + ], + verbose_name="Bloky dalších odkazů v zápatí webu", + blank=True, + ) + + footer_person_list = StreamField( + [("person", blocks.PersonContactBlock())], + verbose_name="Osoby v zápatí webu", + blank=True, + max_num=6, ) content_panels = Page.content_panels + [] @@ -48,12 +99,12 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, ### RELATIONS subpage_types = [ - # MainWorkTimelinePage - # MainArticlePage - # MainProgramPage - # MainPeoplePage - # MainPersonPage - "main.MainContactPage" + "main.MainWorkPage", + "main.MainArticlesPage", + "main.MainProgramPage", + "main.MainPeoplePage", + "main.MainPersonPage", + "main.MainContactPage", ] ### OTHERS @@ -70,7 +121,197 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, return self +class MainWorkPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page): + perex = models.TextField() + timeline = StreamField( + [("article_list", PageChooserBlock(page_type="main.MainArticlePage"))], + verbose_name="Timeline", + blank=True, + ) + + ### RELATIONS + + parent_page_types = ["main.MainHomePage"] + subpage_types = [] + + ### OTHERS + + class Meta: + verbose_name = "Piráti pracují" + + +class MainArticleTag(TaggedItemBase): + content_object = ParentalKey("main.MainArticlePage", on_delete=models.CASCADE) + + +class MainArticlePage( + ArticleMixin, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page +): + + ### FIELDS + + author_page = models.ForeignKey( + "main.MainPersonPage", on_delete=models.SET_NULL, null=True, blank=True + ) + tags = ClusterTaggableManager(through=MainArticleTag, blank=True) + + ### PANELS + + content_panels = ArticleMixin.content_panels + [ + FieldPanel("author_page"), + FieldPanel("tags"), + ] + + promote_panels = make_promote_panels( + admin_help.build(admin_help.NO_SEO_TITLE, admin_help.NO_DESCRIPTION_USE_PEREX), + search_image=False, + ) + + ### RELATIONS + + parent_page_types = ["main.MainArticlesPage"] + subpage_types = [] + + ### OTHERS + + class Meta: + verbose_name = "Aktualita" + + # def get_context(self, request): chceme/nechceme? + # context = super().get_context(request) + # context["related_articles"] = ( + # self.get_siblings(inclusive=False) + # .live() + # .specific() + # .order_by("-mainarticlepage__date")[:3] + # ) + # return context + + +class MainArticlesPage( + RoutablePageMixin, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page +): + def get_context(self, request): + context = super().get_context(request) + context["articles"] = Paginator( + self.get_children().live().specific().order_by("-mainarticlepage__date"), + 12, # nevím, návrh nemáme + ).get_page(request.GET.get("page")) + return context + + @route(r"^tagy/$", name="tags") + def tags(self, request): + return render( + request, + "main/main_tags_page.html", + context=self.get_tags_page_context(request=request), + ) + + ### RELATIONS + + parent_page_types = ["main.MainHomePage"] + subpage_types = ["main.MainArticlePage"] + + ### OTHERS + + class Meta: + verbose_name = "Aktuality" + + +class MainProgramPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page): + + ### FIELDS + + perex = models.TextField() + program = StreamField( + [("program_group", blocks.ProgramGroupBlock())], + verbose_name="Program", + blank=True, + ) + + ### PANELS + + content_panels = Page.content_panels + [FieldPanel("perex"), FieldPanel("program")] + + promote_panels = make_promote_panels() + + settings_panels = [] + + ### RELATIONS + + parent_page_types = ["main.MainHomePage"] + subpage_types = [] + + ### OTHERS + + class Meta: + verbose_name = "Program" + + +class MainPeoplePage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page): + + ### FIELDS + + perex = models.TextField() + people = StreamField( + [("people_group", blocks.PeopleGroupBlock())], + verbose_name="Lidé", + blank=True, + ) + + ### PANELS + + content_panels = Page.content_panels + [FieldPanel("perex"), FieldPanel("people")] + + promote_panels = make_promote_panels() + + settings_panels = [] + + ### RELATIONS + + parent_page_types = ["main.MainHomePage"] + subpage_types = ["main.MainPersonPage"] + + ### OTHERS + + class Meta: + verbose_name = "Lidé" + + +class MainPersonPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page): + + ### FIELDS + + perex = models.TextField() + text = RichTextField() + + settings_panels = [] + + ### RELATIONS + + parent_page_types = ["main.MainPeoplePage"] + subpage_types = [] + + ### OTHERS + + class Meta: + verbose_name = "Detail osoby" + # ordering = ("title",) + + def get_background_photo(self): + """ + Vrací background_photo pro pozadí na stránce, pokud není nastaveno, + vezme falbback z homepage + """ + return ( + self.background_photo + if self.background_photo + else self.root_page.fallback_image + ) + + class MainContactPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page): + ### FIELDS contact_people = StreamField(