From 64b8b85d8ca43c4c3a409afced85c955d2b48b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org> Date: Tue, 30 Jan 2024 17:57:39 +0100 Subject: [PATCH] add custom link blocks instead of hardcoded amount --- donate/blocks.py | 8 ++++ ...ve_donatehomepage_custom_url_1_and_more.py | 36 +++++++++++++++++ donate/models.py | 22 +++++----- donate/templates/donate/base.html | 40 ++++--------------- 4 files changed, 61 insertions(+), 45 deletions(-) create mode 100644 donate/migrations/0042_remove_donatehomepage_custom_url_1_and_more.py diff --git a/donate/blocks.py b/donate/blocks.py index 421df84b..1b8ae3c9 100644 --- a/donate/blocks.py +++ b/donate/blocks.py @@ -13,6 +13,14 @@ from wagtail.images.blocks import ImageChooserBlock from donate.constants import RICH_TEXT_FEATURES +class CustomLinkBlock(StructBlock): + text = CharBlock(label="Nadpis") + url = URLBlock(label="Odkaz") + + class Meta: + label = "Extra odkaz" + + class ProjectIndexBlock(StructBlock): page = PageChooserBlock( label="Stránka se seznamem", diff --git a/donate/migrations/0042_remove_donatehomepage_custom_url_1_and_more.py b/donate/migrations/0042_remove_donatehomepage_custom_url_1_and_more.py new file mode 100644 index 00000000..a39db0a7 --- /dev/null +++ b/donate/migrations/0042_remove_donatehomepage_custom_url_1_and_more.py @@ -0,0 +1,36 @@ +# Generated by Django 4.1.10 on 2024-01-30 16:54 + +from django.db import migrations +import wagtail.blocks +import wagtail.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('donate', '0041_donateprojectpage_is_sticky_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='donatehomepage', + name='custom_url_1', + ), + migrations.RemoveField( + model_name='donatehomepage', + name='custom_url_1_text', + ), + migrations.RemoveField( + model_name='donatehomepage', + name='custom_url_2', + ), + migrations.RemoveField( + model_name='donatehomepage', + name='custom_url_2_text', + ), + migrations.AddField( + model_name='donatehomepage', + name='custom_links', + field=wagtail.fields.StreamField([('custom_link', wagtail.blocks.StructBlock([('text', wagtail.blocks.CharBlock(label='Nadpis')), ('url', wagtail.blocks.URLBlock(label='Odkaz'))], label='Vlastní odkaz'))], blank=True, use_json_field=True, verbose_name='Vlastní odkazy'), + ), + ] diff --git a/donate/models.py b/donate/models.py index 7d5dbc19..3a9221cf 100644 --- a/donate/models.py +++ b/donate/models.py @@ -32,6 +32,7 @@ from tuning import admin_help from .blocks import ( CrowdfundingRewardBlock, CustomContentBlock, + CustomLinkBlock, DistrictDonationBlock, PartySupportFormBlock, ProjectIndexBlock, @@ -140,14 +141,14 @@ class DonateHomePage( related_name="FAQ", verbose_name="Stránka s FAQ", ) - custom_url_1 = models.URLField("Vlastní odkaz 1", blank=True, null=True) - custom_url_1_text = models.CharField( - "Text vlastního odkazu 1", max_length=128, blank=True - ) - custom_url_2 = models.URLField("Vlastní odkaz 2", blank=True, null=True) - custom_url_2_text = models.CharField( - "Text vlastního odkazu 2", max_length=128, blank=True + + custom_links = StreamField( + [("custom_link", CustomLinkBlock(label="Vlastní odkaz"))], + verbose_name="Vlastní odkazy", + blank=True, + use_json_field=True, ) + facebook = models.URLField("Facebook URL", blank=True, null=True) instagram = models.URLField("Instagram URL", blank=True, null=True) twitter = models.URLField("Twitter URL", blank=True, null=True) @@ -175,12 +176,7 @@ class DonateHomePage( settings_panels = [ MultiFieldPanel( - [ - FieldPanel("custom_url_1"), - FieldPanel("custom_url_1_text"), - FieldPanel("custom_url_2"), - FieldPanel("custom_url_2_text"), - ], + [FieldPanel("custom_links")], "vlastní odkazy", ), MultiFieldPanel( diff --git a/donate/templates/donate/base.html b/donate/templates/donate/base.html index 48942df1..1393e5a4 100644 --- a/donate/templates/donate/base.html +++ b/donate/templates/donate/base.html @@ -48,29 +48,17 @@ {% block header %} <div class="pre-navbar d-none d-lg-flex" style="background:black;"> <div class="container d-flex justify-content-end"> - {% if page.root_page.custom_url_1 and page.root_page.custom_url_1_text %} + {% for custom_link in page.root_page.custom_links %} <a - href="{{ page.root_page.custom_url_1 }}" + href="{{ custom_link.value.url }}" class="header_link header_link--desktop mr-4 py-2" target="_blank" rel="noreferrer" > <i class="icon-external-link mr-2" title="Ikona odkazu"></i> - {{ page.root_page.custom_url_1_text }} + {{ custom_link.value.text }} </a> - {% endif %} - - {% if page.root_page.custom_url_2 and page.root_page.custom_url_2_text %} - <a - href="{{ page.root_page.custom_url_2 }}" - class="header_link header_link--desktop mr-4 py-2" - target="_blank" - rel="noreferrer" - > - <i class="icon-external-link mr-2" title="Ikona odkazu"></i> - {{ page.root_page.custom_url_2_text }} - </a> - {% endif %} + {% endfor %} </div> </div> @@ -102,29 +90,17 @@ {% endfor %} </ul> - {% if page.root_page.custom_url_1 and page.root_page.custom_url_1_text %} - <a - href="{{ page.root_page.custom_url_1 }}" - class="d-block d-lg-none mb-3 header_link header_link--mobile" - target="_blank" - rel="noreferrer" - > - <i class="icon-external-link mr-2" title="Ikona odkazu"></i> - {{ page.root_page.custom_url_1_text }} - </a> - {% endif %} - - {% if page.root_page.custom_url_2 and page.root_page.custom_url_2_text %} + {% for custom_link in page.root_page.custom_links %} <a - href="{{ page.root_page.custom_url_2 }}" + href="{{ custom_link.value.url }}" class="d-block d-lg-none mb-3 header_link header_link--mobile" target="_blank" rel="noreferrer" > <i class="icon-external-link mr-2" title="Ikona odkazu"></i> - {{ page.root_page.custom_url_2_text }} + {{ custom_link.value.text }} </a> - {% endif %} + {% endfor %} </div><!-- /navigation --> </div><!-- /container --> </nav> -- GitLab