Skip to content
Snippets Groups Projects
Commit 74726f4c authored by Alexa Valentová's avatar Alexa Valentová
Browse files

wip - move blocks around

parent 8b225c2f
No related branches found
No related tags found
2 merge requests!1047Uniweb redesign,!1045Uniweb redesign, minor district redesign fixes
Pipeline #18834 passed
from django.utils.text import slugify
from wagtail.blocks import (
CharBlock,
IntegerBlock,
ListBlock,
PageChooserBlock,
RichTextBlock,
StructBlock,
TextBlock,
URLBlock,
)
from wagtail.documents.blocks import DocumentChooserBlock
from wagtail.images.blocks import ImageChooserBlock
class CTAMixin(StructBlock):
button_link = URLBlock(label="Odkaz tlačítka")
button_text = CharBlock(label="Text tlačítka")
class Meta:
icon = "doc-empty"
label = "Tlačítko s odkazem"
class LinkBlock(StructBlock):
text = CharBlock(label="Název")
link = URLBlock(label="Odkaz")
class Meta:
icon = "link"
label = "Odkaz"
class NavbarMenuItemBlock(CTAMixin):
class Meta:
label = "Tlačítko"
template = "styleguide2/includes/molecules/navbar/additional_button.html"
class PersonContactBlockMixin(StructBlock):
position = CharBlock(label="Název pozice", required=False)
@property
def person(self):
# NOTE: Needs to be implemented
raise NotImplementedError
# email, phone?
class Meta:
abstract = True
icon = "user"
label = "Osoba s volitelnou pozicí"
class ProgramBlockPopout(StructBlock):
title = CharBlock(label="Titulek vyskakovacího bloku")
content = RichTextBlock(
label="Obsah",
features=PROGRAM_RICH_TEXT_FEATURES,
)
# TODO: Change in mixed-in blocks
guarantor = PageChooserBlock(
label="Garant", page_type=["district.DistrictPersonPage"], required=False
)
class Meta:
icon = "date"
label = "Blok programu"
class ProgramPopoutCategory(StructBlock):
name = CharBlock(label="Název")
icon = ImageChooserBlock(label="Ikona", required=False)
description = RichTextBlock(label="Popis", required=False)
point_list = ListBlock(ProgramBlockPopout(), label="Jednotlivé bloky programu")
class Meta:
icon = "date"
label = "Kategorie programu"
class FlipCardBlock(StructBlock):
bg_color = CharBlock(label="Barva pozadí", default="FEC900")
image = ImageChooserBlock(label="Obrázek", required=False)
title = TextBlock(label="Nadpis", help_text="Řádkování je manuální.")
content = RichTextBlock(label="Obsah")
button_text = CharBlock(
label="Nadpis tlačítka",
help_text="Pokud není vyplněn, tlačítko se neukáže.",
required=False,
)
button_url = CharBlock(label="Odkaz tlačítka", required=False)
class Meta:
icon = "view"
label = "Obracecí karta"
template = "styleguide2/includes/molecules/boxes/flip_card_box.html"
class PersonBoxBlock(CTAMixin, StructBlock):
title = CharBlock(label="Nadpis")
image = ImageChooserBlock(label="Logo/obrázek")
class Meta:
icon = "form"
label = "Box"
\ No newline at end of file
from django.utils.text import slugify
from wagtail.blocks import (
CharBlock,
IntegerBlock,
ListBlock,
PageChooserBlock,
RichTextBlock,
StructBlock,
TextBlock,
URLBlock,
)
from wagtail.documents.blocks import DocumentChooserBlock
from wagtail.images.blocks import ImageChooserBlock
from .children import CTAMixin, LinkBlock, NavbarMenuItemBlock, PersonContactBlockMixin, ProgramBlockPopout, ProgramPopoutCategory, FlipCardBlock, PersonBoxBlock
# Mixins (or used as such)
PROGRAM_RICH_TEXT_FEATURES = [
"h3",
"h4",
"h5",
"bold",
"italic",
"ol",
"ul",
"hr",
"link",
"document-link",
"image",
"superscript",
"subscript",
"strikethrough",
"blockquote",
"embed",
]
# Navbar
class SocialLinkBlock(LinkBlock):
icon = CharBlock(
label="Ikona",
help_text="Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>"
"Název ikony zadejte bez tečky na začátku",
) # TODO CSS class name or somthing better?
class Meta:
icon = "link"
label = "Odkaz"
# Articles
class NewsBlock(StructBlock):
title = CharBlock(
label="Titulek",
help_text="Nejnovější články se načtou automaticky",
)
description = TextBlock(label="Popis", required=False)
class Meta:
icon = "doc-full-inverse"
label = "Novinky"
class ArticleQuoteBlock(StructBlock):
quote = CharBlock(label="Citace")
autor_name = CharBlock(label="Jméno autora")
class Meta:
icon = "user"
label = "Blok citace"
template = "styleguide2/includes/legacy/article_quote_block.html"
class ArticleDownloadBlock(StructBlock):
file = DocumentChooserBlock(label="Stáhnutelný soubor")
class Meta:
icon = "user"
label = "Blok stáhnutelného dokumentu"
template = "styleguide2/includes/molecules/blocks/download_block.html"
# People
# TODO: Merge
class TwoTextColumnBlock(StructBlock):
text_column_1 = RichTextBlock(label="První sloupec textu")
text_column_2 = RichTextBlock(label="Druhý sloupec textu")
class Meta:
icon = "doc-full"
label = "Text ve dvou sloupcích"
class PersonContactBoxBlock(StructBlock):
title = CharBlock(label="Titulek")
image = ImageChooserBlock(label="Ikona")
subtitle = CharBlock(label="Podtitulek")
class Meta:
icon = "mail"
label = "Kontakty"
# Footer
class OtherLinksBlock(StructBlock):
title = CharBlock(label="Titulek")
list = ListBlock(LinkBlock, label="Seznam odkazů")
class Meta:
icon = "link"
label = "Odkazy"
# Program
class FlipCardsBlock(StructBlock):
cards = ListBlock(
FlipCardBlock(label="Karta"),
label="Karty",
)
class Meta:
icon = "group"
label = "Seznam obracecích karet"
template = "styleguide2/includes/organisms/cards/flip_card_list.html"
class PeopleOverviewBlock(StructBlock):
title_line_1 = CharBlock(label="První řádek titulku")
title_line_2 = CharBlock(label="Druhý řádek titulku")
description = TextBlock(label="Popis")
list = ListBlock(PersonBoxBlock, label="Boxíky")
class Meta:
template = (
"styleguide2/includes/organisms/main_section/representatives_section.html"
)
icon = "group"
label = "Skupina osob"
# Program
class ProgramGroupBlockPopout(StructBlock):
categories = ListBlock(ProgramPopoutCategory(), label="Kategorie programu")
class Meta:
icon = "date"
label = "Vyskakovací program"
class ProgramGroupBlockMixin(StructBlock):
title = CharBlock(
label="Název programu",
help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...",
)
# point_list = ListBlock(ProgramBlock(), label="Jednotlivé články programu")
class Meta:
icon = "date"
template = "styleguide2/includes/molecules/program/program_block.html"
# label = "Skupina programů"
def get_prep_value(self, value):
value = super().get_prep_value(value)
value["slug"] = slugify(value["title"])
return value
class ProgramBlock(StructBlock):
url = URLBlock(
label="Odkaz pokrývající celou tuto část",
required=False,
)
icon = ImageChooserBlock(
label="Ikona",
required=False,
)
title = CharBlock(label="Titulek článku programu")
text = RichTextBlock(
label="Obsah",
features=PROGRAM_RICH_TEXT_FEATURES,
)
class Meta:
icon = "date"
label = "Článek programu"
class ProgramGroupBlock(ProgramGroupBlockMixin):
point_list = ListBlock(ProgramBlock(), label="Jednotlivé články programu")
class Meta:
icon = "date"
label = "Běžný program"
# Candidates
class CandidateBlock(StructBlock):
# NOTE: Page type should be restricted in mixed-in classes
page = PageChooserBlock(label="Stránka")
image = ImageChooserBlock(
label="Obrázek",
help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
required=False,
)
description = TextBlock(label="Popis", required=False)
class Meta:
template = (
"styleguide2/includes/molecules/candidates/candidate_primary_box.html"
)
icon = "form"
label = "Kandidát"
class SecondaryCandidateBlock(StructBlock):
number = CharBlock(label="Číslo")
# NOTE: Page type should be restricted in mixed-in classes
page = PageChooserBlock(label="Stránka")
image = ImageChooserBlock(
label="Obrázek",
help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
required=False,
)
class Meta:
template = (
"styleguide2/includes/molecules/candidates/candidate_secondary_box.html"
)
icon = "form"
label = "Kandidát"
class CandidateListBlock(StructBlock):
# NOTE: should be changed in mixed-in blocks.
candidates = ListBlock(
CandidateBlock(),
label="Kandidáti",
)
class Meta:
template = (
"styleguide2/includes/organisms/candidates/candidate_primary_list.html"
)
icon = "form"
label = "Seznam kandidátů"
class CandidateSecondaryListBlock(StructBlock):
heading = CharBlock(label="Nadpis zbytku kandidátky", default="Ostatní kandidátky")
# NOTE: should be changed in mixed-in blocks.
candidates = ListBlock(
SecondaryCandidateBlock(),
label="Zbylí kandidáti na listině",
)
class Meta:
template = (
"styleguide2/includes/organisms/candidates/candidate_secondary_list.html"
)
icon = "form"
label = "Sekundární seznam kandidátů"
class CarouselProgramCategoryItemBlock(StructBlock):
content = TextBlock(label="Obsah")
class Meta:
icon = "form"
label = "Bod"
class CarouselProgramCategoryBlock(StructBlock):
number = IntegerBlock(label="Číslo")
name = CharBlock(label="Název")
points = ListBlock(CarouselProgramCategoryItemBlock(), label="Body")
class Meta:
icon = "form"
label = "Kategorie"
class CarouselProgramBlock(StructBlock):
label = CharBlock(label="Nadpis", help_text="Např. 'Program'", default="Program")
categories = ListBlock(CarouselProgramCategoryBlock(), label="Kategorie")
long_version_url = URLBlock(
label="Odkaz na celou verzi programu",
help_text="Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.",
required=False,
)
long_version_text = CharBlock(
label="Nadpis odkazu na celou verzi programu", required=False
)
class Meta:
icon = "form"
label = "Priority programu, carousel"
template = "styleguide2/includes/molecules/program/card_program.html"
......@@ -3,7 +3,7 @@
<div
class="
{% block classes %}
grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 content-stretch gap-4
grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 content-stretch gap-4 py-8
{% endblock %}
"
>
......
......@@ -221,15 +221,3 @@ class FlipCardBlock(StructBlock):
icon = "view"
label = "Obracecí karta"
template = "styleguide2/includes/molecules/boxes/flip_card_box.html"
class FlipCardsBlock(StructBlock):
cards = ListBlock(
FlipCardBlock(label="Karta"),
label="Karty",
)
class Meta:
icon = "group"
label = "Seznam obracecích karet"
template = "styleguide2/includes/organisms/cards/flip_card_list.html"
......@@ -35,6 +35,8 @@ from shared.blocks import (
NewsletterSubscriptionBlock,
PictureHeadlineBlock,
PictureListBlock,
FlipCardsBlock,
DEFAULT_CONTENT_BLOCKS
)
from shared.const import RICH_TEXT_DEFAULT_FEATURES
from shared.models import (
......@@ -50,7 +52,6 @@ from shared.models import (
SocialMixin,
SubpageMixin,
)
from shared_legacy.blocks import FlipCardsBlock
from shared_legacy.models import FooterMixin as LegacyFooterMixin
from shared_legacy.utils import make_promote_panels, strip_all_html_tags, trim_to_length
from tuning import admin_help
......@@ -70,46 +71,6 @@ from .constants import (
)
class ColorBlock(blocks.StructBlock):
"""
Intended as parent class for blocks with color option.
"""
color = blocks.ChoiceBlock(COLOR_CHOICES, label="barva", default=BLACK_ON_WHITE)
def get_context(self, value, parent_context=None):
context = super().get_context(value, parent_context=parent_context)
if "css_class" not in context:
context["css_class"] = []
context["css_class"] += COLOR_CSS[value["color"]]
return context
class AlignBlock(blocks.StructBlock):
"""
Intended as parent class for blocks with align option.
"""
align = blocks.ChoiceBlock(ALIGN_CHOICES, label="zarovnání", default=LEFT)
def get_context(self, value, parent_context=None):
context = super().get_context(value, parent_context=parent_context)
if "css_class" not in context:
context["css_class"] = []
context["css_class"] += ALIGN_CSS[value["align"]]
return context
class AdvancedTitleBlock(ColorBlock, AlignBlock):
title = blocks.CharBlock(label="nadpis")
class Meta:
label = "nadpis (pokročilý)"
icon = "title"
group = "nadpisy"
template = "uniweb/blocks/advanced_title.html"
class ArticlesBlock(blocks.StructBlock):
page = blocks.PageChooserBlock(
label="Sekce článků", page_type=["uniweb.UniwebArticlesIndexPage"]
......@@ -196,79 +157,8 @@ class CalendarAgendaBlock(blocks.StructBlock):
return context
class ButtonBlock(blocks.StructBlock):
text = blocks.CharBlock(label="Nadpis")
url = blocks.URLBlock(
label="Odkaz",
help_text="Pokud je odkaz vyplněný, není nutno vyplňovat stránku.",
required=False,
)
page = blocks.PageChooserBlock(
label="Stránka",
help_text="Pokud je stránka vyplněná, není nutno vyplňovat odkaz.",
required=False,
)
class Meta:
label = "Tlačítko"
icon = "link-external"
group = "ostatní"
template = "uniweb/blocks/button.html"
CONTENT_STREAM_BLOCKS = [
# title, advanced_title
("headline", HeadlineBlock()),
# picture_title
("picture_title", PictureHeadlineBlock()),
# text
(
"text",
blocks.RichTextBlock(
label="Textový editor",
features=RICH_TEXT_DEFAULT_FEATURES,
template="styleguide2/includes/atoms/text/prose_richtext.html",
),
),
# advanced_text
("advanced_text", AdvancedTextBlock()),
# text_columns
("text_columns", ColumnsTextBlock()),
# advanced_text_columns
("advanced_text_columns", AdvancedColumnsTextBlock()),
# gallery
("new_gallery", GalleryBlock()),
# picture_list
("picture_list", PictureListBlock()),
# aligned_table
(
"aligned_table",
AlignedTableBlock(
group="ostatní",
template="styleguide2/includes/atoms/table/aligned_table.html",
),
),
# table
(
"table",
TableBlock(
label="Tabulka",
group="ostatní",
template="styleguide2/includes/atoms/table/table.html",
),
),
# articles
("articles", ArticlesBlock()),
# calendar_agenda
("calendar_agenda", CalendarAgendaBlock()), # Unfinished
# button
("new_button", SharedButtonBlock()),
# chart
("chart", ChartBlock()),
# cards
("cards", FlipCardsBlock(template="uniweb/blocks/flip_cards.html")), # Unfinished
CONTENT_STREAM_BLOCKS = DEFAULT_CONTENT_BLOCKS + [
("calendar_agenda", CalendarAgendaBlock())
]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment