From e9ff7cdafa056585d6eff17980309a813726dd58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Farka?= <stepanfarka11@gmail.com>
Date: Thu, 19 May 2022 15:22:36 +0200
Subject: [PATCH] [ADD] custom price options for monthly payment

---
 ...homepage_form_monthly_amount_1_and_more.py | 127 +++++++++++++++++
 ...0_donateinfopage_form_amount_1_and_more.py | 129 ++++++++++++++++++
 donate/models.py                              |  75 +++++++++-
 donate/static/donate/assets/js/scripts.js     |  30 +++-
 donate/templates/donate/donate_home_page.html |   7 +-
 donate/templates/donate/donate_info_page.html |  19 +--
 .../templates/donate/donate_project_page.html |  12 +-
 .../donate/donate_project_page_coalition.html |  12 +-
 .../templates/donate/donate_region_page.html  |   8 +-
 .../donate_targeted_donations_page.html       |  19 +--
 .../donate/form_amounts_snippet.html          |   8 +-
 .../donate/form_monthly_amounts_snippet.html  |  16 +++
 12 files changed, 418 insertions(+), 44 deletions(-)
 create mode 100644 donate/migrations/0019_donatehomepage_form_monthly_amount_1_and_more.py
 create mode 100644 donate/migrations/0020_donateinfopage_form_amount_1_and_more.py
 create mode 100644 donate/templates/donate/form_monthly_amounts_snippet.html

diff --git a/donate/migrations/0019_donatehomepage_form_monthly_amount_1_and_more.py b/donate/migrations/0019_donatehomepage_form_monthly_amount_1_and_more.py
new file mode 100644
index 00000000..161b9c95
--- /dev/null
+++ b/donate/migrations/0019_donatehomepage_form_monthly_amount_1_and_more.py
@@ -0,0 +1,127 @@
+# Generated by Django 4.0.4 on 2022-05-19 11:42
+
+from django.db import migrations, models
+
+
+def update_monthly_values(page):
+    page.form_monthly_amount_1 = page.form_amount_1
+    page.form_monthly_amount_2 = page.form_amount_2
+    page.form_monthly_amount_3 = page.form_amount_3
+    page.form_monthly_amount_4 = page.form_amount_4
+    page.form_monthly_preselected = page.form_preselected
+    page.save()
+
+
+def set_monthly_prices(apps, schema_editor):
+    DonateHomePage = apps.get_model("donate", "DonateHomePage")
+    DonateProjectPage = apps.get_model("donate", "DonateProjectPage")
+    DonateRegionPage = apps.get_model("donate", "DonateRegionPage")
+
+    for page in DonateHomePage.objects.all():
+        update_monthly_values(page)
+
+    for page in DonateProjectPage.objects.all():
+        update_monthly_values(page)
+
+    for page in DonateRegionPage.objects.all():
+        update_monthly_values(page)
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("donate", "0018_donatehomepage_form_amount_4_and_more"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="donatehomepage",
+            name="form_monthly_amount_1",
+            field=models.IntegerField(default=100, verbose_name="měsíční částka 1"),
+        ),
+        migrations.AddField(
+            model_name="donatehomepage",
+            name="form_monthly_amount_2",
+            field=models.IntegerField(default=200, verbose_name="měsíční částka 2"),
+        ),
+        migrations.AddField(
+            model_name="donatehomepage",
+            name="form_monthly_amount_3",
+            field=models.IntegerField(default=500, verbose_name="měsíční částka 3"),
+        ),
+        migrations.AddField(
+            model_name="donatehomepage",
+            name="form_monthly_amount_4",
+            field=models.IntegerField(default=1000, verbose_name="měsíční částka 4"),
+        ),
+        migrations.AddField(
+            model_name="donatehomepage",
+            name="form_monthly_preselected",
+            field=models.IntegerField(
+                choices=[(1, "první"), (2, "druhá"), (3, "třetí"), (4, "čtvrtá")],
+                default=1,
+                verbose_name="výchozí měsíční částka",
+            ),
+        ),
+        migrations.AddField(
+            model_name="donateprojectpage",
+            name="form_monthly_amount_1",
+            field=models.IntegerField(default=100, verbose_name="měsíční částka 1"),
+        ),
+        migrations.AddField(
+            model_name="donateprojectpage",
+            name="form_monthly_amount_2",
+            field=models.IntegerField(default=200, verbose_name="měsíční částka 2"),
+        ),
+        migrations.AddField(
+            model_name="donateprojectpage",
+            name="form_monthly_amount_3",
+            field=models.IntegerField(default=500, verbose_name="měsíční částka 3"),
+        ),
+        migrations.AddField(
+            model_name="donateprojectpage",
+            name="form_monthly_amount_4",
+            field=models.IntegerField(default=1000, verbose_name="měsíční částka 4"),
+        ),
+        migrations.AddField(
+            model_name="donateprojectpage",
+            name="form_monthly_preselected",
+            field=models.IntegerField(
+                choices=[(1, "první"), (2, "druhá"), (3, "třetí"), (4, "čtvrtá")],
+                default=1,
+                verbose_name="výchozí měsíční částka",
+            ),
+        ),
+        migrations.AddField(
+            model_name="donateregionpage",
+            name="form_monthly_amount_1",
+            field=models.IntegerField(default=100, verbose_name="měsíční částka 1"),
+        ),
+        migrations.AddField(
+            model_name="donateregionpage",
+            name="form_monthly_amount_2",
+            field=models.IntegerField(default=200, verbose_name="měsíční částka 2"),
+        ),
+        migrations.AddField(
+            model_name="donateregionpage",
+            name="form_monthly_amount_3",
+            field=models.IntegerField(default=500, verbose_name="měsíční částka 3"),
+        ),
+        migrations.AddField(
+            model_name="donateregionpage",
+            name="form_monthly_amount_4",
+            field=models.IntegerField(default=1000, verbose_name="měsíční částka 4"),
+        ),
+        migrations.AddField(
+            model_name="donateregionpage",
+            name="form_monthly_preselected",
+            field=models.IntegerField(
+                choices=[(1, "první"), (2, "druhá"), (3, "třetí"), (4, "čtvrtá")],
+                default=1,
+                verbose_name="výchozí měsíční částka",
+            ),
+        ),
+        migrations.RunPython(
+            set_monthly_prices, reverse_code=migrations.RunPython.noop
+        ),
+    ]
diff --git a/donate/migrations/0020_donateinfopage_form_amount_1_and_more.py b/donate/migrations/0020_donateinfopage_form_amount_1_and_more.py
new file mode 100644
index 00000000..29770b15
--- /dev/null
+++ b/donate/migrations/0020_donateinfopage_form_amount_1_and_more.py
@@ -0,0 +1,129 @@
+# Generated by Django 4.0.4 on 2022-05-19 12:55
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("donate", "0019_donatehomepage_form_monthly_amount_1_and_more"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_amount_1",
+            field=models.IntegerField(default=100, verbose_name="pevná částka 1"),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_amount_2",
+            field=models.IntegerField(default=200, verbose_name="pevná částka 2"),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_amount_3",
+            field=models.IntegerField(default=500, verbose_name="pevná částka 3"),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_amount_4",
+            field=models.IntegerField(default=1000, verbose_name="pevná částka 4"),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_monthly_amount_1",
+            field=models.IntegerField(default=100, verbose_name="měsíční částka 1"),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_monthly_amount_2",
+            field=models.IntegerField(default=200, verbose_name="měsíční částka 2"),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_monthly_amount_3",
+            field=models.IntegerField(default=500, verbose_name="měsíční částka 3"),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_monthly_amount_4",
+            field=models.IntegerField(default=1000, verbose_name="měsíční částka 4"),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_monthly_preselected",
+            field=models.IntegerField(
+                choices=[(1, "první"), (2, "druhá"), (3, "třetí"), (4, "čtvrtá")],
+                default=1,
+                verbose_name="výchozí měsíční částka",
+            ),
+        ),
+        migrations.AddField(
+            model_name="donateinfopage",
+            name="form_preselected",
+            field=models.IntegerField(
+                choices=[(1, "první"), (2, "druhá"), (3, "třetí"), (4, "čtvrtá")],
+                default=1,
+                verbose_name="výchozí částka",
+            ),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_amount_1",
+            field=models.IntegerField(default=100, verbose_name="pevná částka 1"),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_amount_2",
+            field=models.IntegerField(default=200, verbose_name="pevná částka 2"),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_amount_3",
+            field=models.IntegerField(default=500, verbose_name="pevná částka 3"),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_amount_4",
+            field=models.IntegerField(default=1000, verbose_name="pevná částka 4"),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_monthly_amount_1",
+            field=models.IntegerField(default=100, verbose_name="měsíční částka 1"),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_monthly_amount_2",
+            field=models.IntegerField(default=200, verbose_name="měsíční částka 2"),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_monthly_amount_3",
+            field=models.IntegerField(default=500, verbose_name="měsíční částka 3"),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_monthly_amount_4",
+            field=models.IntegerField(default=1000, verbose_name="měsíční částka 4"),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_monthly_preselected",
+            field=models.IntegerField(
+                choices=[(1, "první"), (2, "druhá"), (3, "třetí"), (4, "čtvrtá")],
+                default=1,
+                verbose_name="výchozí měsíční částka",
+            ),
+        ),
+        migrations.AddField(
+            model_name="donatetargeteddonationspage",
+            name="form_preselected",
+            field=models.IntegerField(
+                choices=[(1, "první"), (2, "druhá"), (3, "třetí"), (4, "čtvrtá")],
+                default=1,
+                verbose_name="výchozí částka",
+            ),
+        ),
+    ]
diff --git a/donate/models.py b/donate/models.py
index 81e99ee0..45cfb106 100644
--- a/donate/models.py
+++ b/donate/models.py
@@ -77,6 +77,14 @@ class DonateFormAmountsMixin(models.Model):
         "výchozí částka", default=FIRST, choices=FORM_CHOICES
     )
 
+    form_monthly_amount_1 = models.IntegerField("měsíční částka 1", default=100)
+    form_monthly_amount_2 = models.IntegerField("měsíční částka 2", default=200)
+    form_monthly_amount_3 = models.IntegerField("měsíční částka 3", default=500)
+    form_monthly_amount_4 = models.IntegerField("měsíční částka 4", default=1000)
+    form_monthly_preselected = models.IntegerField(
+        "výchozí měsíční částka", default=FIRST, choices=FORM_CHOICES
+    )
+
     class Meta:
         abstract = True
 
@@ -169,6 +177,11 @@ class DonateHomePage(
                 FieldPanel("form_amount_3"),
                 FieldPanel("form_amount_4"),
                 FieldPanel("form_preselected"),
+                FieldPanel("form_monthly_amount_1"),
+                FieldPanel("form_monthly_amount_2"),
+                FieldPanel("form_monthly_amount_3"),
+                FieldPanel("form_monthly_amount_4"),
+                FieldPanel("form_monthly_preselected"),
             ],
             "nastavení darů",
         ),
@@ -297,6 +310,11 @@ class DonateRegionPage(
                 FieldPanel("form_amount_3"),
                 FieldPanel("form_amount_4"),
                 FieldPanel("form_preselected"),
+                FieldPanel("form_monthly_amount_1"),
+                FieldPanel("form_monthly_amount_2"),
+                FieldPanel("form_monthly_amount_3"),
+                FieldPanel("form_monthly_amount_4"),
+                FieldPanel("form_monthly_preselected"),
             ],
             "nastavení darů",
         ),
@@ -449,6 +467,11 @@ class DonateProjectPage(
                 FieldPanel("form_amount_3"),
                 FieldPanel("form_amount_4"),
                 FieldPanel("form_preselected"),
+                FieldPanel("form_monthly_amount_1"),
+                FieldPanel("form_monthly_amount_2"),
+                FieldPanel("form_monthly_amount_3"),
+                FieldPanel("form_monthly_amount_4"),
+                FieldPanel("form_monthly_preselected"),
             ],
             "nastavení darů",
         ),
@@ -548,7 +571,12 @@ class DonateTextPage(Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPage
 
 
 class DonateInfoPage(
-    DonateFormMixin, Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
+    DonateFormMixin,
+    DonateFormAmountsMixin,
+    Page,
+    ExtendedMetadataPageMixin,
+    SubpageMixin,
+    MetadataPageMixin,
 ):
     ### FIELDS
 
@@ -560,7 +588,24 @@ class DonateInfoPage(
 
     promote_panels = make_promote_panels()
 
-    settings_panels = []
+    settings_panels = [
+        PublishingPanel(),
+        MultiFieldPanel(
+            [
+                FieldPanel("form_amount_1"),
+                FieldPanel("form_amount_2"),
+                FieldPanel("form_amount_3"),
+                FieldPanel("form_amount_4"),
+                FieldPanel("form_preselected"),
+                FieldPanel("form_monthly_amount_1"),
+                FieldPanel("form_monthly_amount_2"),
+                FieldPanel("form_monthly_amount_3"),
+                FieldPanel("form_monthly_amount_4"),
+                FieldPanel("form_monthly_preselected"),
+            ],
+            "nastavení darů",
+        ),
+    ]
 
     ### RELATIONS
 
@@ -609,7 +654,12 @@ class TargetedDonation(Orderable):
 
 
 class DonateTargetedDonationsPage(
-    DonateFormMixin, Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
+    DonateFormMixin,
+    DonateFormAmountsMixin,
+    Page,
+    ExtendedMetadataPageMixin,
+    SubpageMixin,
+    MetadataPageMixin,
 ):
     ### FIELDS
 
@@ -624,7 +674,24 @@ class DonateTargetedDonationsPage(
 
     promote_panels = make_promote_panels()
 
-    settings_panels = []
+    settings_panels = [
+        PublishingPanel(),
+        MultiFieldPanel(
+            [
+                FieldPanel("form_amount_1"),
+                FieldPanel("form_amount_2"),
+                FieldPanel("form_amount_3"),
+                FieldPanel("form_amount_4"),
+                FieldPanel("form_preselected"),
+                FieldPanel("form_monthly_amount_1"),
+                FieldPanel("form_monthly_amount_2"),
+                FieldPanel("form_monthly_amount_3"),
+                FieldPanel("form_monthly_amount_4"),
+                FieldPanel("form_monthly_preselected"),
+            ],
+            "nastavení darů",
+        ),
+    ]
 
     ### RELATIONS
 
diff --git a/donate/static/donate/assets/js/scripts.js b/donate/static/donate/assets/js/scripts.js
index f6134225..058cdd68 100644
--- a/donate/static/donate/assets/js/scripts.js
+++ b/donate/static/donate/assets/js/scripts.js
@@ -59,12 +59,34 @@
 
   $("input[name='custom_amount']").focus(function() {
     $('#customamount').attr('required', true);
-    $( "#amount1" ).prop( "checked", false );
-    $( "#amount2" ).prop( "checked", false );
-    $( "#amount3" ).prop( "checked", false );
-    $( "#amount4" ).prop( "checked", false );
+    $('input[name=amount]:checked', '#js-donate-form').prop('checked', false);
   })
 
+  // Function for handling switching between monthly and one-time prices
+  $("input[name='periodicity']").change(function () {
+
+    // periodicity 730 === monthly
+    if ($(this).attr('value') === '730') {
+      const $monthlyAmounts = $('#monthlyAmounts')
+
+      const selectRadio = $monthlyAmounts.data('default-selected')
+      $('input[name=amount]:checked', '#js-donate-form').prop('checked', false);
+      $(`#monthlyAmounts input[name=amount]:eq("${selectRadio - 1}")`).prop('checked', true);
+
+      $monthlyAmounts.show();
+      $('#oneTimeAmounts').hide();
+    } else {
+      const $oneTimeAmounts = $('#oneTimeAmounts')
+
+      const selectRadio = $oneTimeAmounts.data('default-selected')
+      $('input[name=amount]:checked', '#js-donate-form').prop('checked', false);
+      $(`#oneTimeAmounts input[name=amount]:eq("${selectRadio - 1}")`).prop('checked', true);
+
+      $oneTimeAmounts.show();
+      $('#monthlyAmounts').hide();
+    }
+  });
+
   // Trigger correct state onload
   $("input[name='amount']:checked").change();
 
diff --git a/donate/templates/donate/donate_home_page.html b/donate/templates/donate/donate_home_page.html
index afa25c37..beb4771c 100644
--- a/donate/templates/donate/donate_home_page.html
+++ b/donate/templates/donate/donate_home_page.html
@@ -69,7 +69,12 @@
             <div class="form-group row mb-4 align-items-center">
               <legend class="col-form-label col-md-4 col-form-label-lg">Částka</legend>
               <div class="col-md-8">
-                {% include "donate/form_amounts_snippet.html" %}
+                  <div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
+                      {% include "donate/form_monthly_amounts_snippet.html" %}
+                  </div>
+                  <div id="oneTimeAmounts" style="display: None" data-default-selected="{{ page.form_preselected }}">
+                      {% include "donate/form_amounts_snippet.html" %}
+                  </div>
               </div>
             </div>
             <div class="form-group row mb-0 align-items-center" id="js-custom-amount-input">
diff --git a/donate/templates/donate/donate_info_page.html b/donate/templates/donate/donate_info_page.html
index 3e8a762a..b1b33380 100644
--- a/donate/templates/donate/donate_info_page.html
+++ b/donate/templates/donate/donate_info_page.html
@@ -50,21 +50,12 @@
                 <div class="form-group row mb-4 align-items-center">
                     <legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
                     <div class="col-md-12">
-                        <div class="custom-control custom-radio custom-control-inline">
-                          <input type="radio" id="amount1" name="amount" value="200" class="custom-control-input">
-                          <label class="custom-control-label col-form-label-lg" for="amount1">200 Kč</label>
-                        </div>
-                        <div class="custom-control custom-radio custom-control-inline">
-                          <input type="radio" id="amount2" name="amount" value="500" class="custom-control-input" checked>
-                          <label class="custom-control-label col-form-label-lg" for="amount2">500 Kč</label>
+                        <div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
+                            {% include "donate/form_monthly_amounts_snippet.html" %}
                         </div>
-                        <div class="custom-control custom-radio custom-control-inline">
-                          <input type="radio" id="amount3" name="amount" value="1000" class="custom-control-input">
-                          <label class="custom-control-label col-form-label-lg" for="amount3">1000 Kč</label>
-                        </div>
-                        <div class="custom-control custom-radio custom-control-inline">
-                            <input type="radio" id="amount4" name="amount" value="1500" class="custom-control-input">
-                            <label class="custom-control-label col-form-label-lg" for="amount4">1500 Kč</label>
+                        <div id="oneTimeAmounts" style="display: None"
+                             data-default-selected="{{ page.form_preselected }}">
+                            {% include "donate/form_amounts_snippet.html" %}
                         </div>
                     </div>
                 </div>
diff --git a/donate/templates/donate/donate_project_page.html b/donate/templates/donate/donate_project_page.html
index fadec300..1eb05714 100644
--- a/donate/templates/donate/donate_project_page.html
+++ b/donate/templates/donate/donate_project_page.html
@@ -101,7 +101,17 @@
                   <div class="form-group row mb-4 align-items-center">
                       <legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
                       <div class="col-md-12">
-                        {% include "donate/form_amounts_snippet.html" %}
+                          {% if page.allow_periodic_donations %}
+                          <div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
+                              {% include "donate/form_monthly_amounts_snippet.html" %}
+                          </div>
+                          <div id="oneTimeAmounts" style="display: None"
+                               data-default-selected="{{ page.form_preselected }}">
+                              {% include "donate/form_amounts_snippet.html" %}
+                          </div>
+                          {% else %}
+                              {% include "donate/form_amounts_snippet.html" with show_selected=True %}
+                          {% endif %}
                       </div>
                   </div>
                   <div class="form-group row mb-2 align-items-center" id="js-custom-amount-input">
diff --git a/donate/templates/donate/donate_project_page_coalition.html b/donate/templates/donate/donate_project_page_coalition.html
index b190b2af..c92de764 100644
--- a/donate/templates/donate/donate_project_page_coalition.html
+++ b/donate/templates/donate/donate_project_page_coalition.html
@@ -103,7 +103,17 @@
                     <div class="form-group row mb-4 align-items-center">
                       <legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
                       <div class="col-md-12">
-                        {% include "donate/form_amounts_snippet.html" %}
+                        {% if page.allow_periodic_donations %}
+                          <div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
+                              {% include "donate/form_monthly_amounts_snippet.html" %}
+                          </div>
+                          <div id="oneTimeAmounts" style="display: None"
+                               data-default-selected="{{ page.form_preselected }}">
+                              {% include "donate/form_amounts_snippet.html" %}
+                          </div>
+                          {% else %}
+                              {% include "donate/form_amounts_snippet.html" with show_selected=True %}
+                          {% endif %}
                       </div>
                     </div>
                     <div class="form-group row mb-2 align-items-center" id="js-custom-amount-input">
diff --git a/donate/templates/donate/donate_region_page.html b/donate/templates/donate/donate_region_page.html
index 823f92de..7214f9fd 100644
--- a/donate/templates/donate/donate_region_page.html
+++ b/donate/templates/donate/donate_region_page.html
@@ -57,7 +57,13 @@
                   <div class="form-group row mb-4 align-items-center">
                     <legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
                     <div class="col-md-12">
-                      {% include "donate/form_amounts_snippet.html" %}
+                        <div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
+                            {% include "donate/form_monthly_amounts_snippet.html" %}
+                        </div>
+                        <div id="oneTimeAmounts" style="display: None"
+                             data-default-selected="{{ page.form_preselected }}">
+                            {% include "donate/form_amounts_snippet.html" %}
+                        </div>
                     </div>
                   </div>
                   <div class="form-group row mb-2 align-items-center" id="js-custom-amount-input">
diff --git a/donate/templates/donate/donate_targeted_donations_page.html b/donate/templates/donate/donate_targeted_donations_page.html
index 796425af..8dbcf06b 100644
--- a/donate/templates/donate/donate_targeted_donations_page.html
+++ b/donate/templates/donate/donate_targeted_donations_page.html
@@ -65,21 +65,12 @@
             <div class="form-group row mb-4 align-items-center">
               <legend class="col-form-label col-md-3 col-form-label-lg">Částka</legend>
               <div class="col-md-9">
-                  <div class="custom-control custom-radio custom-control-inline">
-                    <input type="radio" id="amount1" name="amount" value="200" class="custom-control-input">
-                    <label class="custom-control-label col-form-label-lg" for="amount1">200 Kč</label>
-                  </div>
-                  <div class="custom-control custom-radio custom-control-inline">
-                    <input type="radio" id="amount2" name="amount" value="500" class="custom-control-input" checked>
-                    <label class="custom-control-label col-form-label-lg" for="amount2">500 Kč</label>
+                  <div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
+                      {% include "donate/form_monthly_amounts_snippet.html" %}
                   </div>
-                  <div class="custom-control custom-radio custom-control-inline">
-                    <input type="radio" id="amount3" name="amount" value="1000" class="custom-control-input">
-                    <label class="custom-control-label col-form-label-lg" for="amount3">1000 Kč</label>
-                  </div>
-                  <div class="custom-control custom-radio custom-control-inline">
-                      <input type="radio" id="amount4" name="amount" value="1500" class="custom-control-input">
-                      <label class="custom-control-label col-form-label-lg" for="amount4">1500 Kč</label>
+                  <div id="oneTimeAmounts" style="display: None"
+                       data-default-selected="{{ page.form_preselected }}">
+                      {% include "donate/form_amounts_snippet.html" %}
                   </div>
               </div>
             </div>
diff --git a/donate/templates/donate/form_amounts_snippet.html b/donate/templates/donate/form_amounts_snippet.html
index 66cf49ea..516b5bdb 100644
--- a/donate/templates/donate/form_amounts_snippet.html
+++ b/donate/templates/donate/form_amounts_snippet.html
@@ -1,16 +1,16 @@
 <div class="custom-control custom-radio custom-control-inline">
-  <input type="radio" id="amount1" name="amount" value="{{ page.form_amount_1 }}" class="custom-control-input"{% if page.form_preselected == page.FIRST %} checked{% endif %}>
+  <input type="radio" id="amount1" name="amount" value="{{ page.form_amount_1 }}" class="custom-control-input"{% if show_selected and page.form_preselected == page.FIRST %} checked{% endif %}>
   <label class="custom-control-label col-form-label-lg" for="amount1">{{ page.form_amount_1 }} Kč</label>
 </div>
 <div class="custom-control custom-radio custom-control-inline">
-  <input type="radio" id="amount2" name="amount" value="{{ page.form_amount_2 }}" class="custom-control-input"{% if page.form_preselected == page.SECOND %} checked{% endif %}>
+  <input type="radio" id="amount2" name="amount" value="{{ page.form_amount_2 }}" class="custom-control-input"{% if show_selected and page.form_preselected == page.SECOND %} checked{% endif %}>
   <label class="custom-control-label col-form-label-lg" for="amount2">{{ page.form_amount_2 }} Kč</label>
 </div>
 <div class="custom-control custom-radio custom-control-inline">
-  <input type="radio" id="amount3" name="amount" value="{{ page.form_amount_3 }}" class="custom-control-input"{% if page.form_preselected == page.THIRD %} checked{% endif %}>
+  <input type="radio" id="amount3" name="amount" value="{{ page.form_amount_3 }}" class="custom-control-input"{% if show_selected and page.form_preselected == page.THIRD %} checked{% endif %}>
   <label class="custom-control-label col-form-label-lg" for="amount3">{{ page.form_amount_3 }} Kč</label>
 </div>
 <div class="custom-control custom-radio custom-control-inline">
-  <input type="radio" id="amount4" name="amount" value="{{ page.form_amount_4 }}" class="custom-control-input"{% if page.form_preselected == page.FOURTH %} checked{% endif %}>
+  <input type="radio" id="amount4" name="amount" value="{{ page.form_amount_4 }}" class="custom-control-input"{% if show_selected and page.form_preselected == page.FOURTH %} checked{% endif %}>
   <label class="custom-control-label col-form-label-lg" for="amount4">{{ page.form_amount_4 }} Kč</label>
 </div>
diff --git a/donate/templates/donate/form_monthly_amounts_snippet.html b/donate/templates/donate/form_monthly_amounts_snippet.html
new file mode 100644
index 00000000..d0c46892
--- /dev/null
+++ b/donate/templates/donate/form_monthly_amounts_snippet.html
@@ -0,0 +1,16 @@
+<div class="custom-control custom-radio custom-control-inline">
+  <input type="radio" id="amount5" name="amount" value="{{ page.form_monthly_amount_1 }}" class="custom-control-input"{% if page.form_monthly_preselected == page.FIRST %} checked{% endif %}>
+  <label class="custom-control-label col-form-label-lg" for="amount5">{{ page.form_monthly_amount_1 }} Kč</label>
+</div>
+<div class="custom-control custom-radio custom-control-inline">
+  <input type="radio" id="amount6" name="amount" value="{{ page.form_monthly_amount_2 }}" class="custom-control-input"{% if page.form_monthly_preselected == page.SECOND %} checked{% endif %}>
+  <label class="custom-control-label col-form-label-lg" for="amount6">{{ page.form_monthly_amount_2 }} Kč</label>
+</div>
+<div class="custom-control custom-radio custom-control-inline">
+  <input type="radio" id="amount7" name="amount" value="{{ page.form_monthly_amount_3 }}" class="custom-control-input"{% if page.form_monthly_preselected == page.THIRD %} checked{% endif %}>
+  <label class="custom-control-label col-form-label-lg" for="amount7">{{ page.form_monthly_amount_3 }} Kč</label>
+</div>
+<div class="custom-control custom-radio custom-control-inline">
+  <input type="radio" id="amount8" name="amount" value="{{ page.form_monthly_amount_4 }}" class="custom-control-input"{% if page.form_monthly_preselected == page.FOURTH %} checked{% endif %}>
+  <label class="custom-control-label col-form-label-lg" for="amount8">{{ page.form_monthly_amount_4 }} Kč</label>
+</div>
-- 
GitLab