Skip to content
Snippets Groups Projects
Commit 9e25e497 authored by Štěpán Farka's avatar Štěpán Farka
Browse files

[ADD] card link with headline block

parent 983d35df
Branches
No related tags found
2 merge requests!439Release,!437Misc enhancements 3
Pipeline #7390 passed
Showing with 282 additions and 16 deletions
from django.forms.utils import ErrorList
from wagtail.core.blocks import (
CharBlock,
IntegerBlock,
......@@ -7,6 +8,7 @@ from wagtail.core.blocks import (
TextBlock,
URLBlock,
)
from wagtail.core.blocks.struct_block import StructBlockValidationError
from wagtail.images.blocks import ImageChooserBlock
......@@ -81,13 +83,42 @@ class CardLinkBlock(StructBlock):
"district.DistrictProgramPage",
"district.DistrictTagsPage",
],
required=False,
)
link = URLBlock(label="Odkaz", required=False)
class Meta:
template = "district/blocks/card_link_block.html"
icon = "link"
label = "Karta odkazu"
def clean(self, value):
errors = {}
if value["page"] and value["link"]:
errors["page"] = ErrorList(
["Stránka nemůže být vybrána současně s odkazem."]
)
errors["link"] = ErrorList(
["Odkaz nemůže být vybrán současně se stránkou."]
)
elif not value["page"] and not value["link"]:
errors["page"] = ErrorList(["Zvolte stránku nebo vyplňte odkaz."])
errors["link"] = ErrorList(["Vyplňte odkaz nebo zvolte stránku."])
if errors:
raise StructBlockValidationError(errors)
return super().clean(value)
class CardLinkWithHeadlineBlock(StructBlock):
headline = CharBlock(label="Titulek bloku", required=False)
card_items = ListBlock(CardLinkBlock(), label="Karty odkazu")
class Meta:
template = "district/blocks/card_link_with_headline_block.html"
icon = "link"
label = "Karta odkazu s nadpisem"
class CenterContactBlock(StructBlock):
title = CharBlock(label="Titulek", required=True)
......
# Generated by Django 4.0.3 on 2022-04-01 10:21
import wagtail.core.blocks
import wagtail.core.fields
import wagtail.images.blocks
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("district", "0048_districthomepage_footperson_coord_title_and_more"),
]
operations = [
migrations.AlterField(
model_name="districtcrossroadpage",
name="cards_content",
field=wagtail.core.fields.StreamField(
[
(
"cards",
wagtail.core.blocks.StructBlock(
[
(
"headline",
wagtail.core.blocks.CharBlock(
label="Titulek bloku", required=False
),
),
(
"card_items",
wagtail.core.blocks.ListBlock(
wagtail.core.blocks.StructBlock(
[
(
"image",
wagtail.images.blocks.ImageChooserBlock(
label="Obrázek"
),
),
(
"title",
wagtail.core.blocks.CharBlock(
label="Titulek", required=True
),
),
(
"page",
wagtail.core.blocks.PageChooserBlock(
label="Stránka",
page_type=[
"district.DistrictAfterElectionPage",
"district.DistrictArticlePage",
"district.DistrictArticlesPage",
"district.DistrictCenterPage",
"district.DistrictContactPage",
"district.DistrictCrossroadPage",
"district.DistrictCustomPage",
"district.DistrictElectionPage",
"district.DistrictElectionPointPage",
"district.DistrictPeoplePage",
"district.DistrictPersonPage",
"district.DistrictProgramPage",
"district.DistrictTagsPage",
],
required=False,
),
),
(
"link",
wagtail.core.blocks.URLBlock(
label="Odkaz", required=False
),
),
]
),
label="Karty odkazu",
),
),
]
),
)
],
blank=True,
verbose_name="Karty rozcestníku",
),
),
]
......@@ -881,7 +881,7 @@ class DistrictCrossroadPage(SubpageMixin, MetadataPageMixin, Page):
### FIELDS
cards_content = StreamField(
[("cards", blocks.CardLinkBlock())],
[("cards", blocks.CardLinkWithHeadlineBlock())],
verbose_name="Karty rozcestníku",
blank=True,
)
......
{% load wagtailcore_tags wagtailimages_tags %}
{% image self.image width-356 as img %}
{% firstof self.page.url self.link as target_url %}
<article class="card card--hoveractive">
<a href="{{ self.page.url }}">
<a href="{{ target_url }}">
<img src="{{ img.url }}" alt="{{ self.page.title }}" class="w-full h-48 object-cover">
</a>
<div class="card__body p-4">
<h1 class="card-headline mb-2">
<a href="{{ self.page.url }}">
{{ self.page.title }}
<a href="{{ target_url }}">
{{ self.title }}
</a>
</h1>
<p class="card-body-text"></p>
......
{% load wagtailcore_tags %}
<div class="mb-8">
{% if self.headline %}
<h1 class="head-alt-md md:head-alt-lg max-w-5xl mb-8">{{ self.headline }}</h1>
{% endif %}
<main>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{% for card_block in self.card_items %}
{% include_block card_block %}
{% endfor %}
</div>
</main>
</div>
......@@ -2,16 +2,14 @@
{% load wagtailcore_tags %}
{% block content %}
<main>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 pt-8 lg:py-24">
<section class="pt-8 lg:py-24">
{% for card_block in page.cards_content %}
{% include_block card_block %}
{% endfor %}
</div>
{% for block in page.content %}
<div class="content-block mb-8">
{% include_block block %}
</div>
{% endfor %}
</main>
</section>
{% endblock %}
from django.forms.utils import ErrorList
from wagtail.core.blocks import (
CharBlock,
IntegerBlock,
......@@ -7,6 +8,7 @@ from wagtail.core.blocks import (
TextBlock,
URLBlock,
)
from wagtail.core.blocks.struct_block import StructBlockValidationError
from wagtail.images.blocks import ImageChooserBlock
......@@ -81,13 +83,42 @@ class CardLinkBlock(StructBlock):
"region.RegionProgramPage",
"region.RegionTagsPage",
],
required=False,
)
link = URLBlock(label="Odkaz", required=False)
class Meta:
template = "region/blocks/card_link_block.html"
icon = "link"
label = "Karta odkazu"
def clean(self, value):
errors = {}
if value["page"] and value["link"]:
errors["page"] = ErrorList(
["Stránka nemůže být vybrána současně s odkazem."]
)
errors["link"] = ErrorList(
["Odkaz nemůže být vybrán současně se stránkou."]
)
elif not value["page"] and not value["link"]:
errors["page"] = ErrorList(["Zvolte stránku nebo vyplňte odkaz."])
errors["link"] = ErrorList(["Vyplňte odkaz nebo zvolte stránku."])
if errors:
raise StructBlockValidationError(errors)
return super().clean(value)
class CardLinkWithHeadlineBlock(StructBlock):
headline = CharBlock(label="Titulek bloku", required=False)
card_items = ListBlock(CardLinkBlock(), label="Karty odkazu")
class Meta:
template = "region/blocks/card_link_with_headline_block.html"
icon = "link"
label = "Karta odkazu s nadpisem"
class CenterContactBlock(StructBlock):
title = CharBlock(label="Titulek", required=True)
......
# Generated by Django 4.0.3 on 2022-04-01 10:21
import wagtail.core.blocks
import wagtail.core.fields
import wagtail.images.blocks
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("region", "0023_regionhomepage_footperson_coord_title_and_more"),
]
operations = [
migrations.AlterField(
model_name="regioncrossroadpage",
name="cards_content",
field=wagtail.core.fields.StreamField(
[
(
"cards",
wagtail.core.blocks.StructBlock(
[
(
"headline",
wagtail.core.blocks.CharBlock(
label="Titulek bloku", required=False
),
),
(
"card_items",
wagtail.core.blocks.ListBlock(
wagtail.core.blocks.StructBlock(
[
(
"image",
wagtail.images.blocks.ImageChooserBlock(
label="Obrázek"
),
),
(
"title",
wagtail.core.blocks.CharBlock(
label="Titulek", required=True
),
),
(
"page",
wagtail.core.blocks.PageChooserBlock(
label="Stránka",
page_type=[
"region.RegionAfterElectionPage",
"region.RegionArticlePage",
"region.RegionArticlesPage",
"region.RegionCenterPage",
"region.RegionContactPage",
"region.RegionCrossroadPage",
"region.RegionCustomPage",
"region.RegionElectionPage",
"region.RegionElectionPointPage",
"region.RegionPeoplePage",
"region.RegionPersonPage",
"region.RegionProgramPage",
"region.RegionTagsPage",
],
required=False,
),
),
(
"link",
wagtail.core.blocks.URLBlock(
label="Odkaz", required=False
),
),
]
),
label="Karty odkazu",
),
),
]
),
)
],
blank=True,
verbose_name="Karty rozcestníku",
),
),
]
......@@ -874,7 +874,7 @@ class RegionCrossroadPage(SubpageMixin, MetadataPageMixin, Page):
### FIELDS
cards_content = StreamField(
[("cards", blocks.CardLinkBlock())],
[("cards", blocks.CardLinkWithHeadlineBlock())],
verbose_name="Karty rozcestníku",
blank=True,
)
......
{% load wagtailcore_tags wagtailimages_tags %}
{% image self.image width-356 as img %}
{% firstof self.page.url self.link as target_url %}
<article class="card card--hoveractive">
<a href="{{ self.page.url }}">
<a href="{{ target_url }}">
<img src="{{ img.url }}" alt="{{ self.page.title }}" class="w-full h-48 object-cover">
</a>
<div class="card__body p-4">
<h1 class="card-headline mb-2">
<a href="{{ self.page.url }}">
{{ self.page.title }}
<a href="{{ target_url }}">
{{ self.title }}
</a>
</h1>
<p class="card-body-text"></p>
......
{% load wagtailcore_tags %}
<div class="mb-8">
{% if self.headline %}
<h1 class="head-alt-md md:head-alt-lg max-w-5xl mb-8">{{ self.headline }}</h1>
{% endif %}
<main>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{% for card_block in self.card_items %}
{% include_block card_block %}
{% endfor %}
</div>
</main>
</div>
......@@ -2,16 +2,14 @@
{% load wagtailcore_tags %}
{% block content %}
<main>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 pt-8 lg:py-24">
<section class="pt-8 lg:py-24">
{% for card_block in page.cards_content %}
{% include_block card_block %}
{% endfor %}
</div>
{% for block in page.content %}
<div class="content-block mb-8">
{% include_block block %}
</div>
{% endfor %}
</main>
</section>
{% endblock %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment