From e4656f3f96714c2420393d1006a1aaa38a6c2db8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org>
Date: Fri, 8 Sep 2023 00:00:00 +0200
Subject: [PATCH] add multiple donation project indexes

---
 .../0030_donateprojectindexpage_heading.py    | 20 +++++++++++++++++++
 donate/models.py                              | 13 +++++++++---
 donate/templates/donate/base.html             | 10 +++++-----
 .../donate/donate_project_index_page.html     |  2 +-
 4 files changed, 36 insertions(+), 9 deletions(-)
 create mode 100644 donate/migrations/0030_donateprojectindexpage_heading.py

diff --git a/donate/migrations/0030_donateprojectindexpage_heading.py b/donate/migrations/0030_donateprojectindexpage_heading.py
new file mode 100644
index 00000000..12e2c204
--- /dev/null
+++ b/donate/migrations/0030_donateprojectindexpage_heading.py
@@ -0,0 +1,20 @@
+# Generated by Django 4.1.10 on 2023-09-07 21:31
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("donate", "0029_alter_donatehomepage_custom_blocks"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="donateprojectindexpage",
+            name="heading",
+            field=models.CharField(
+                default="Pomáháme společně", max_length=32, verbose_name="Hlavní nadpis"
+            ),
+            preserve_default=False,
+        ),
+    ]
diff --git a/donate/models.py b/donate/models.py
index 7d7f9a42..5ef5eb76 100644
--- a/donate/models.py
+++ b/donate/models.py
@@ -261,9 +261,8 @@ class DonateHomePage(
     def info_page_url(self):
         return get_subpage_url(self, DonateInfoPage)
 
-    @cached_property
-    def projects_page_url(self):
-        return get_subpage_url(self, DonateProjectIndexPage)
+    def project_indexes(self):
+        return self.get_descendants().type(DonateProjectIndexPage).live().all()
 
     @cached_property
     def regions_page_url(self):
@@ -391,8 +390,16 @@ class DonateRegionPage(
 class DonateProjectIndexPage(
     Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
 ):
+    ### FIELDS
+
+    heading = models.CharField("Hlavní nadpis", max_length=32)
+
     ### PANELS
 
+    content_panels = Page.content_panels + [
+        FieldPanel("heading"),
+    ]
+
     promote_panels = make_promote_panels()
 
     settings_panels = []
diff --git a/donate/templates/donate/base.html b/donate/templates/donate/base.html
index 663a0a1c..801520ba 100644
--- a/donate/templates/donate/base.html
+++ b/donate/templates/donate/base.html
@@ -100,11 +100,11 @@
             <a class="nav-link" href="/#strana">Podpoř Piráty</a>
             {% endif %}
           </li>
-          {% if page.root_page.has_projects %}
-          <li class="nav-item">
-            <a class="nav-link" href="{{ page.root_page.projects_page_url }}">Projekty a kampaně</a>
-          </li>
-          {% endif %}
+          {% for projects_page in page.project_indexes %}
+            <li class="nav-item">
+              <a class="nav-link" href="{{ projects_page.url }}">{{ projects_page.title }}</a>
+            </li>
+          {% endfor %}
           <li class="nav-item">
             <a class="nav-link" href="{{ page.root_page.regions_page_url }}">Kraje</a>
           </li>
diff --git a/donate/templates/donate/donate_project_index_page.html b/donate/templates/donate/donate_project_index_page.html
index 3d44a78e..5d75b6b3 100644
--- a/donate/templates/donate/donate_project_index_page.html
+++ b/donate/templates/donate/donate_project_index_page.html
@@ -7,7 +7,7 @@
 
   <section class="section--primary">
     <div class="container">
-      <h1 class="lead homepage-heading mb-4">{{ page.title }}</h1>
+      <h1 class="lead homepage-heading mb-4">{{ page.heading }}</h1>
       <div class="row projects mb-4">
 
         {% for project in projects %}
-- 
GitLab