From e507013c479fe8c35342be6dda4637b541ce5ad4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org>
Date: Sun, 21 Jan 2024 20:50:11 +0100
Subject: [PATCH] update mobile europarl carousel

---
 elections/blocks.py                           |   3 +
 ...electionsarticlepage_show_initial_image.py |  13 +-
 .../0020_alter_electionshomepage_content.py   | 228 ++++++++++++++++++
 ...0072_mainarticlepage_show_initial_image.py |  13 +-
 .../molecules/menus/elections/carousel.html   |  53 +++-
 5 files changed, 287 insertions(+), 23 deletions(-)
 create mode 100644 elections/migrations/0020_alter_electionshomepage_content.py

diff --git a/elections/blocks.py b/elections/blocks.py
index 77e7976e..d6b08f35 100644
--- a/elections/blocks.py
+++ b/elections/blocks.py
@@ -23,6 +23,9 @@ class ElectionsCarouselBlock(StructBlock):
         required=False,
     )
 
+    mobile_line_1 = TextBlock(label="První mobilní řádek")
+    mobile_line_2 = TextBlock(label="Druhý mobilní řádek")
+
     class Meta:
         template = "styleguide2/includes/molecules/menus/elections/carousel.html"
         icon = "form"
diff --git a/elections/migrations/0019_electionsarticlepage_show_initial_image.py b/elections/migrations/0019_electionsarticlepage_show_initial_image.py
index a6684aec..c33a30f2 100644
--- a/elections/migrations/0019_electionsarticlepage_show_initial_image.py
+++ b/elections/migrations/0019_electionsarticlepage_show_initial_image.py
@@ -4,15 +4,18 @@ from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('elections', '0018_alter_electionshomepage_content'),
+        ("elections", "0018_alter_electionshomepage_content"),
     ]
 
     operations = [
         migrations.AddField(
-            model_name='electionsarticlepage',
-            name='show_initial_image',
-            field=models.BooleanField(default=True, help_text='Pokud je tato volba zaškrtnutá, obrázek nastavený u tohoto článku se automaticky vloží do prvního odstavce.', verbose_name='Ukázat obrázek v textu'),
+            model_name="electionsarticlepage",
+            name="show_initial_image",
+            field=models.BooleanField(
+                default=True,
+                help_text="Pokud je tato volba zaškrtnutá, obrázek nastavený u tohoto článku se automaticky vloží do prvního odstavce.",
+                verbose_name="Ukázat obrázek v textu",
+            ),
         ),
     ]
diff --git a/elections/migrations/0020_alter_electionshomepage_content.py b/elections/migrations/0020_alter_electionshomepage_content.py
new file mode 100644
index 00000000..b2eb4018
--- /dev/null
+++ b/elections/migrations/0020_alter_electionshomepage_content.py
@@ -0,0 +1,228 @@
+# Generated by Django 4.1.10 on 2024-01-21 19:46
+
+from django.db import migrations
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("elections", "0019_electionsarticlepage_show_initial_image"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="electionshomepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "carousel",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="Pokud není vybráno video, ukáže se na mobilu i desktopu.",
+                                        label="Obrázek na pozadí",
+                                    ),
+                                ),
+                                (
+                                    "video_url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.",
+                                        label="URL videa",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "mobile_line_1",
+                                    wagtail.blocks.TextBlock(
+                                        label="První mobilní řádek"
+                                    ),
+                                ),
+                                (
+                                    "mobile_line_2",
+                                    wagtail.blocks.TextBlock(
+                                        label="Druhý mobilní řádek"
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "candidates",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "candidates",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka",
+                                                        page_type=[
+                                                            "elections.ElectionsCandidatePage"
+                                                        ],
+                                                    ),
+                                                ),
+                                                (
+                                                    "image",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
+                                                        label="Obrázek",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "description",
+                                                    wagtail.blocks.TextBlock(
+                                                        label="Popis"
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kandidáti",
+                                    ),
+                                )
+                            ]
+                        ),
+                    ),
+                    (
+                        "secondary_candidates",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("heading", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "candidates",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "number",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Číslo"
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka",
+                                                        page_type=[
+                                                            "elections.ElectionsCandidatePage"
+                                                        ],
+                                                    ),
+                                                ),
+                                                (
+                                                    "image",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
+                                                        label="Obrázek",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kandidáti",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "label",
+                                    wagtail.blocks.CharBlock(
+                                        default="Program",
+                                        help_text="Např. 'Program'",
+                                        label="Nadpis",
+                                    ),
+                                ),
+                                (
+                                    "categories",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "number",
+                                                    wagtail.blocks.IntegerBlock(
+                                                        label="Číslo"
+                                                    ),
+                                                ),
+                                                (
+                                                    "name",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Název"
+                                                    ),
+                                                ),
+                                                (
+                                                    "points",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.StructBlock(
+                                                            [
+                                                                (
+                                                                    "content",
+                                                                    wagtail.blocks.TextBlock(
+                                                                        label="Obsah"
+                                                                    ),
+                                                                )
+                                                            ]
+                                                        ),
+                                                        label="Body",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kategorie",
+                                    ),
+                                ),
+                                (
+                                    "long_version_url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.",
+                                        label="Odkaz na celou verzi programu",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "long_version_text",
+                                    wagtail.blocks.CharBlock(
+                                        label="Nadpis odkazu na celou verzi programu",
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "news",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Nejnovější články se načtou automaticky",
+                                        label="Titulek",
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.TextBlock(label="Popis"),
+                                ),
+                            ],
+                            template="styleguide2/includes/organisms/articles/elections/articles_section.html",
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Hlavní obsah",
+            ),
+        ),
+    ]
diff --git a/main/migrations/0072_mainarticlepage_show_initial_image.py b/main/migrations/0072_mainarticlepage_show_initial_image.py
index 994962fd..c2064bf5 100644
--- a/main/migrations/0072_mainarticlepage_show_initial_image.py
+++ b/main/migrations/0072_mainarticlepage_show_initial_image.py
@@ -4,15 +4,18 @@ from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0071_rename_date_mainarticlepage_timestamp'),
+        ("main", "0071_rename_date_mainarticlepage_timestamp"),
     ]
 
     operations = [
         migrations.AddField(
-            model_name='mainarticlepage',
-            name='show_initial_image',
-            field=models.BooleanField(default=True, help_text='Pokud je tato volba zaškrtnutá, obrázek nastavený u tohoto článku se automaticky vloží do prvního odstavce.', verbose_name='Ukázat obrázek v textu'),
+            model_name="mainarticlepage",
+            name="show_initial_image",
+            field=models.BooleanField(
+                default=True,
+                help_text="Pokud je tato volba zaškrtnutá, obrázek nastavený u tohoto článku se automaticky vloží do prvního odstavce.",
+                verbose_name="Ukázat obrázek v textu",
+            ),
         ),
     ]
diff --git a/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html b/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
index 51db6863..9182b422 100644
--- a/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
+++ b/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
@@ -5,10 +5,21 @@
     <div class="h-[700px] xl:h-screen relative bg-white">
       {% image self.image original as image %}
 
-      <img
-        class="header-carousel--image opacity-60 inline xl:hidden"
-        src="{{ image.url }}"
+      <video
+        class="
+          header-carousel--image
+          lg:hidden
+        "
+        autoplay
+        muted
+        loop
+        playsinline
+        preload="metadata"
+
+        poster="{% static 'styleguide2/images/background-images/bg-flag-mobile-preview.jpg' %}"
       >
+        <source src="{% static 'styleguide2/images/background-images/bg-flag-mobile.mp4' %}">
+      </video>
 
       <video
         class="header-carousel--image opacity-60 hidden xl:block"
@@ -24,18 +35,34 @@
         {% endif %}
       </video>
 
-      <div class="elections--header-carousel--text-wrapper {% if self.video_url %}xl:hidden{% endif %}">
-        <div
-          class="container--wide h-full flex flex-col justify-end items-start"
-        >
-          <div class="2.5xl:ml-[-10rem]">
-            <img
-              class="w-4/6"
-              src="{% static 'elections/europarl-header.png' %}"
-            >
+      {% comment %}
+        (No longer needed. So far.)
+
+        <div class="elections--header-carousel--text-wrapper hidden xl:block">
+          <div
+            class="container--wide h-full flex flex-col justify-end items-start"
+          >
+            <div class="2.5xl:ml-[-10rem]">
+              <img
+                class="w-4/6"
+                src="{% static 'elections/europarl-header.png' %}"
+              >
+            </div>
+          </div>
+        </div>
+      {% endcomment %}
+
+      {% if self.mobile_line_1 or self.mobile_line_2 %}
+        <div class="header-carousel--text-wrapper" style="box-sizing: border-box">
+          <div class="container--wide px-0 h-full flex flex-col justify-end items-start" style="box-sizing: border-box">
+
+            <h1 class="mb-4 px-5 flex flex-col text-black block lg:hidden">
+              <div>{{ self.mobile_line_1 }}</div>
+              <div>{{ self.mobile_line_2 }}</div>
+            </h1>
           </div>
         </div>
-      </div>
+      {% endif %}
     </div>
   </div>
 </div>
-- 
GitLab