From bcb8e0723d3fe4854181c82b6fa9726d210c8db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hozman?= <tomas.hozman@pm.me> Date: Thu, 11 Aug 2022 19:31:40 +0200 Subject: [PATCH] add inline district program option --- ...age_show_program_points_inline_and_more.py | 25 ++++++++ ...campaignpage_show_program_points_inline.py | 18 ++++++ district/models.py | 6 ++ .../district_election_campaign_page.html | 62 +++++++++++++------ shared/templates/shared/article_preview.html | 2 +- 5 files changed, 92 insertions(+), 21 deletions(-) create mode 100644 district/migrations/0096_districtelectioncampaignpage_show_program_points_inline_and_more.py create mode 100644 district/migrations/0097_alter_districtelectioncampaignpage_show_program_points_inline.py diff --git a/district/migrations/0096_districtelectioncampaignpage_show_program_points_inline_and_more.py b/district/migrations/0096_districtelectioncampaignpage_show_program_points_inline_and_more.py new file mode 100644 index 000000000..8f3bdf38b --- /dev/null +++ b/district/migrations/0096_districtelectioncampaignpage_show_program_points_inline_and_more.py @@ -0,0 +1,25 @@ +# Generated by Django 4.0.7 on 2022-08-11 16:38 + +from django.db import migrations, models +import wagtail.blocks +import wagtail.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('district', '0095_alter_districtpersonpage_options_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='districtelectioncampaignpage', + name='show_program_points_inline', + field=models.BooleanField(default=False, help_text='Hodí se v případě spousty krátkých bodů programu, z nichž si většina nezaslouží vlastní stránku.', verbose_name='Zobrazit obsah celého programu na jedné stránce'), + ), + migrations.AlterField( + model_name='districtinteractiveprogrampage', + name='content', + field=wagtail.fields.StreamField([('interactive_program_block', wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název části programu', required=True)), ('heading', wagtail.blocks.CharBlock(label='Nadpis', required=True)), ('description', wagtail.blocks.RichTextBlock(blank=True, label='Krátký popis, BEZ BODŮ', required=False)), ('icon', wagtail.blocks.ChoiceBlock(choices=[('verejne-sluzby', 'Veřejné služby'), ('zdravotni-pece', 'Zdravotní péče'), ('sport', 'Sport'), ('sport-plavec', 'Sport - plavec'), ('socialni-politika', 'Sociální politika'), ('aktivni-verejnost', 'Aktivní veřejnost'), ('priroda', 'Příroda'), ('vzdelavani', 'Vzdělávání'), ('kultura', 'Kultura'), ('otevrena-radnice', 'Otevřená radnice'), ('cestovni-ruch', 'Cestovní ruch'), ('doprava', 'Doprava'), ('bydleni', 'Bydlení')], label='Ikona')), ('program_items', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('content', wagtail.blocks.RichTextBlock(label='Obsah', required=True))]), label='Seznam bodů', required=True))]))], use_json_field=None, verbose_name='Části programu'), + ), + ] diff --git a/district/migrations/0097_alter_districtelectioncampaignpage_show_program_points_inline.py b/district/migrations/0097_alter_districtelectioncampaignpage_show_program_points_inline.py new file mode 100644 index 000000000..972978cd0 --- /dev/null +++ b/district/migrations/0097_alter_districtelectioncampaignpage_show_program_points_inline.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.7 on 2022-08-11 16:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('district', '0096_districtelectioncampaignpage_show_program_points_inline_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='districtelectioncampaignpage', + name='show_program_points_inline', + field=models.BooleanField(default=False, help_text='Hodí se v případě spousty krátkých bodů programu, z nichž si většina nezaslouží vlastní stránku.', verbose_name='Zobrazit obsah programu na jedné stránce'), + ), + ] diff --git a/district/models.py b/district/models.py index b3530f590..d5278c881 100644 --- a/district/models.py +++ b/district/models.py @@ -917,6 +917,11 @@ class DistrictElectionCampaignPage(DistrictElectionBasePage): max_length=128, help_text="Např. Program pro magistrát.", ) + show_program_points_inline = models.BooleanField( + "Zobrazit obsah programu na jedné stránce", + default=False, + help_text="Hodí se v případě spousty krátkých bodů programu, z nichž si většina nezaslouží vlastní stránku." + ) hero_headline = models.CharField( "Banner headline", max_length=128, @@ -976,6 +981,7 @@ class DistrictElectionCampaignPage(DistrictElectionBasePage): FieldPanel("number"), FieldPanel("candidate_list_title"), FieldPanel("program_point_list_title"), + FieldPanel("show_program_points_inline"), FieldPanel("content"), ], "Personalizace", diff --git a/district/templates/district/district_election_campaign_page.html b/district/templates/district/district_election_campaign_page.html index c0c3d0dca..ebd363c3f 100644 --- a/district/templates/district/district_election_campaign_page.html +++ b/district/templates/district/district_election_campaign_page.html @@ -106,28 +106,50 @@ {% if page.program_points %} <template v-if="isCurrentView('program')"> - <h1 class="head-alt-md text-center py-8 lg:pt-24 lg:pb-8">{{ page.program_point_list_title|default:"Volební program" }}</h1> - - <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> + <h1 + class="head-alt-md text-center py-8 lg:pt-24 {% if not page.show_program_points_inline %}lg:pb-8{% else %}pb-0{% endif %}" + >{{ page.program_point_list_title|default:"Volební program" }}</h1> + {% if page.show_program_points_inline %} {% for program_point in page.program_points %} - <div class="card card--hoveractive"> - <a href="{% pageurl program_point %}"> - {% image program_point.image width-357 as list_image %} - <img src="{{ list_image.url }}" alt="{{ program_point.title }}" class="w-full h-48 object-cover"> - </a> - <div class="card__body p-4"> - <h1 class="card-headline mb-2"> - <a href="{% pageurl program_point %}"> - {{ program_point.title }} - </a> - </h1> - <p class="card-body-text"> - {{ program_point.perex }} - </p> - </div> - </div> + <h2 class="head-alt-md mb-2 mt-8"> + {{ program_point.title }} + </h2> + <p class="font-bold text-lg leading-normal mb-3"> + {{ program_point.perex }} + </p> + <p class="mb-8 text-grey-300"> + Garant: + <a + href="{{ program_point.guarantor.url }}" + >{{ program_point.guarantor }}</a> + </p> + + {% for block in program_point.content %} + {% include_block block %} + {% endfor %} {% endfor %} - </div> + {% else %} + <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> + {% for program_point in page.program_points %} + <div class="card card--hoveractive"> + <a href="{% pageurl program_point %}"> + {% image program_point.image width-357 as list_image %} + <img src="{{ list_image.url }}" alt="{{ program_point.title }}" class="w-full h-48 object-cover"> + </a> + <div class="card__body p-4"> + <h1 class="card-headline mb-2"> + <a href="{% pageurl program_point %}"> + {{ program_point.title }} + </a> + </h1> + <p class="card-body-text"> + {{ program_point.perex }} + </p> + </div> + </div> + {% endfor %} + </div> + {% endif %} </template> {% endif %} </section> diff --git a/shared/templates/shared/article_preview.html b/shared/templates/shared/article_preview.html index b6a1b7c3a..f577fed13 100644 --- a/shared/templates/shared/article_preview.html +++ b/shared/templates/shared/article_preview.html @@ -43,7 +43,7 @@ </div> </div> - <div class="article-card-meta" class="c-metadata-block-section__item" > + <div class="article-card-meta c-metadata-block-section__item"> <span itemprop="description" class="article-card-meta__item"> {{ article.date|date:"SHORT_DATE_FORMAT" }} <meta itemprop="datePublished" content="{{ article.last_published_at }}" /> -- GitLab