aboutsummaryrefslogtreecommitdiff
path: root/lib/classes
diff options
context:
space:
mode:
authorMoritz Strohm <strohm@data-quest.de>2025-12-19 08:53:51 +0000
committerMoritz Strohm <strohm@data-quest.de>2025-12-19 08:53:51 +0000
commit47fd6fe31f93c06f816d4bb27e8fdb6c013af606 (patch)
treee2414eb6b41ef3219b12f19e58c8d87eaa8bbcae /lib/classes
parent1c78a3b0a73e72d34714fa749aff293dbda6b4d2 (diff)
StEP 2092, closes #2092
Closes #2092 Merge request studip/studip!4535
Diffstat (limited to 'lib/classes')
-rw-r--r--lib/classes/sidebar/SemesterSelectorWidget.php49
1 files changed, 48 insertions, 1 deletions
diff --git a/lib/classes/sidebar/SemesterSelectorWidget.php b/lib/classes/sidebar/SemesterSelectorWidget.php
index 64229e7..abad3fa 100644
--- a/lib/classes/sidebar/SemesterSelectorWidget.php
+++ b/lib/classes/sidebar/SemesterSelectorWidget.php
@@ -27,6 +27,19 @@ class SemesterSelectorWidget extends SelectWidget
*/
protected $semester_range_end = 0;
+ /**
+ * @var bool Whether the lecture period in a semester can be selected
+ * separately (true) or not (false). Defaults to false.
+ */
+ protected bool $lecture_period_selectable = false;
+
+ /**
+ * @var bool Whether the vacation period after the lecturing time in a
+ * semester can be selected separately (true) or not (false).
+ * Defaults to false.
+ */
+ protected bool $vacation_period_selectable = false;
+
/**
* Overrides parent constructor by setting a default title and default
@@ -62,6 +75,22 @@ class SemesterSelectorWidget extends SelectWidget
}
}
+ /**
+ * Makes the lecture period in the semester selectable separately.
+ */
+ public function makeLecturePeriodSelectable() : void
+ {
+ $this->lecture_period_selectable = true;
+ }
+
+ /**
+ * Makes the vacation period after the lecture period selectable separately.
+ */
+ public function makeVacationPeriodSelectable() : void
+ {
+ $this->vacation_period_selectable = true;
+ }
+
/**
* Populates and renders the widget according to the previously made
@@ -98,7 +127,25 @@ class SemesterSelectorWidget extends SelectWidget
$semesters = array_reverse(Semester::getAll());
}
foreach ($semesters as $semester) {
- $element = new SelectElement($semester->id, $semester->name, $current_id && $semester->id == $current_id);
+ if ($this->vacation_period_selectable) {
+ $id_with_suffix = sprintf('%s_vacation', $semester->id);
+ $element = new SelectElement(
+ $id_with_suffix,
+ studip_interpolate(_('Vorlesungsfrei nach %{semester_name}'), ['semester_name' => $semester->name]),
+ $current_id && $id_with_suffix === $current_id
+ );
+ $this->addElement($element);
+ }
+ if ($this->lecture_period_selectable) {
+ $id_with_suffix = sprintf('%s_lecture', $semester->id);
+ $element = new SelectElement(
+ $id_with_suffix,
+ studip_interpolate(_('%{semester_name} (Vorlesungszeit)'), ['semester_name' => $semester->name]),
+ $current_id && $id_with_suffix === $current_id
+ );
+ $this->addElement($element);
+ }
+ $element = new SelectElement($semester->id, $semester->name, $current_id && $semester->id === $current_id);
$this->addElement($element);
}