diff options
| author | Moritz Strohm <strohm@data-quest.de> | 2025-12-19 08:53:51 +0000 |
|---|---|---|
| committer | Moritz Strohm <strohm@data-quest.de> | 2025-12-19 08:53:51 +0000 |
| commit | 47fd6fe31f93c06f816d4bb27e8fdb6c013af606 (patch) | |
| tree | e2414eb6b41ef3219b12f19e58c8d87eaa8bbcae /lib/classes | |
| parent | 1c78a3b0a73e72d34714fa749aff293dbda6b4d2 (diff) | |
StEP 2092, closes #2092
Closes #2092
Merge request studip/studip!4535
Diffstat (limited to 'lib/classes')
| -rw-r--r-- | lib/classes/sidebar/SemesterSelectorWidget.php | 49 |
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); } |
