From 5aacf299b57499d45b9ac72a8e9670859a722114 Mon Sep 17 00:00:00 2001
From: Imko Schumacher <okmiim@live.de>
Date: Sun, 7 Aug 2022 00:06:14 +0200
Subject: [PATCH] Add quarter PID in pluginConfiguration and fix link

---
 Classes/Domain/Model/PluginConfiguration.php  | 28 +++++++++++++++++++
 .../Service/PluginConfigurationService.php    |  1 +
 ...arize_domain_model_pluginconfiguration.php |  1 +
 Configuration/Yaml/RouteEnhancers.yaml        |  2 +-
 Resources/Private/Language/locallang.xlf      |  3 ++
 .../Private/Templates/Calendar/Quarter.html   |  4 +--
 6 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/Classes/Domain/Model/PluginConfiguration.php b/Classes/Domain/Model/PluginConfiguration.php
index d06b17f7..e44b3d31 100644
--- a/Classes/Domain/Model/PluginConfiguration.php
+++ b/Classes/Domain/Model/PluginConfiguration.php
@@ -84,6 +84,14 @@ class PluginConfiguration extends AbstractModel
      */
     protected $yearPid;
 
+    /**
+     * Quarter PID.
+     *
+     * @var int
+     * @DatabaseField("int")
+     */
+    protected $quarterPid;
+
     /**
      * Month PID.
      *
@@ -271,6 +279,26 @@ public function setYearPid($yearPid)
         $this->yearPid = $yearPid;
     }
 
+    /**
+     * Get quarter PID.
+     *
+     * @return int
+     */
+    public function getQuarterPid(): int
+    {
+        return $this->quarterPid;
+    }
+
+    /**
+     * Set quarter PID.
+     *
+     * @param int $quarterPid
+     */
+    public function setQuarterPid(int $quarterPid): void
+    {
+        $this->quarterPid = $quarterPid;
+    }
+
     /**
      * Get month PID.
      *
diff --git a/Classes/Service/PluginConfigurationService.php b/Classes/Service/PluginConfigurationService.php
index c19fbcae..a7f4089e 100644
--- a/Classes/Service/PluginConfigurationService.php
+++ b/Classes/Service/PluginConfigurationService.php
@@ -46,6 +46,7 @@ public function respectPluginConfiguration(array $settings)
                 'detailPid',
                 'listPid',
                 'yearPid',
+                'quarterPid',
                 'monthPid',
                 'weekPid',
                 'dayPid',
diff --git a/Configuration/TCA/tx_calendarize_domain_model_pluginconfiguration.php b/Configuration/TCA/tx_calendarize_domain_model_pluginconfiguration.php
index e633ec9a..d253094c 100644
--- a/Configuration/TCA/tx_calendarize_domain_model_pluginconfiguration.php
+++ b/Configuration/TCA/tx_calendarize_domain_model_pluginconfiguration.php
@@ -77,6 +77,7 @@
         'detail_pid' => $defaultPidConfiguration,
         'list_pid' => $defaultPidConfiguration,
         'year_pid' => $defaultPidConfiguration,
+        'quarter_pid' => $defaultPidConfiguration,
         'month_pid' => $defaultPidConfiguration,
         'week_pid' => $defaultPidConfiguration,
         'day_pid' => $defaultPidConfiguration,
diff --git a/Configuration/Yaml/RouteEnhancers.yaml b/Configuration/Yaml/RouteEnhancers.yaml
index b7582bef..ee90d8e7 100644
--- a/Configuration/Yaml/RouteEnhancers.yaml
+++ b/Configuration/Yaml/RouteEnhancers.yaml
@@ -11,7 +11,7 @@ routeEnhancers:
         _controller: 'Calendar::detail'
       - routePath: '/{calendarize_year_label}/{year}'
         _controller: 'Calendar::year'
-      - routePath: '/{calendarize_quarter_label}/{quarter}'
+      - routePath: '/{calendarize_quarter_label}/{year}/{quarter}'
         _controller: 'Calendar::quarter'
       - routePath: '/{calendarize_month_label}/{year}/{month}'
         _controller: 'Calendar::month'
diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf
index 7697b8e4..84a45f33 100644
--- a/Resources/Private/Language/locallang.xlf
+++ b/Resources/Private/Language/locallang.xlf
@@ -126,6 +126,9 @@
 			<trans-unit id="tx_calendarize_domain_model_pluginconfiguration.year_pid">
 				<source>Year PID</source>
 			</trans-unit>
+			<trans-unit id="tx_calendarize_domain_model_pluginconfiguration.quarter_pid">
+				<source>Quarter PID</source>
+			</trans-unit>
 			<trans-unit id="tx_calendarize_domain_model_pluginconfiguration.list_pid">
 				<source>List PID</source>
 			</trans-unit>
diff --git a/Resources/Private/Templates/Calendar/Quarter.html b/Resources/Private/Templates/Calendar/Quarter.html
index 417a1a44..6abfc49a 100644
--- a/Resources/Private/Templates/Calendar/Quarter.html
+++ b/Resources/Private/Templates/Calendar/Quarter.html
@@ -9,7 +9,7 @@
 
 		<f:if condition="{settings.quarterPid}">
 			<f:if condition="{c:ifDateUpper(base: settings.dateLimitBrowserPrev, check:{date -> c:dateTime.modify(modification: '-1 months')})}">
-				<c:link.quarter pageUid="{settings.monthPid}" date="{date -> c:dateTime.modify(modification: '-1 months')}">
+				<c:link.quarter pageUid="{settings.quarterPid}" date="{date -> c:dateTime.modify(modification: '-1 months')}">
 					&lt;
 				</c:link.quarter>
 			</f:if>
@@ -17,7 +17,7 @@
 		Q{quarter} <f:format.date format="%Y">{date}</f:format.date>
 		<f:if condition="{settings.quarterPid}">
 			<f:if condition="{c:ifDateLower(base: settings.dateLimitBrowserNext, check:{date -> c:dateTime.modify(modification: '+4 months')})}">
-				<c:link.quarter pageUid="{settings.monthPid}" date="{date -> c:dateTime.modify(modification: '+4 months')}">
+				<c:link.quarter pageUid="{settings.quarterPid}" date="{date -> c:dateTime.modify(modification: '+4 months')}">
 					&gt;
 				</c:link.quarter>
 			</f:if>