diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2024-10-30 12:50:28 +0000 |
|---|---|---|
| committer | David Siegfried <david.siegfried@uni-vechta.de> | 2024-10-30 12:50:28 +0000 |
| commit | 5c78fc761d7afd7aafd21f521ac19a15b59facf3 (patch) | |
| tree | f01420d3cc96e166206caae29360534f904e4ca5 /app/controllers/admin | |
| parent | 363c78feaae65f3dfaba40b39463e2f1156048d4 (diff) | |
refactor holiday() function into Holidays class, allowing ids for holidays and...
Closes #2795
Merge request studip/studip!1904
Diffstat (limited to 'app/controllers/admin')
| -rw-r--r-- | app/controllers/admin/holidays.php | 81 |
1 files changed, 60 insertions, 21 deletions
diff --git a/app/controllers/admin/holidays.php b/app/controllers/admin/holidays.php index 8abdefc..d87a541 100644 --- a/app/controllers/admin/holidays.php +++ b/app/controllers/admin/holidays.php @@ -35,7 +35,7 @@ class Admin_HolidaysController extends AuthenticatedController URLHelper::addLinkParam('filter', $this->filter); } - $this->setSidebar(); + $this->setSidebar($action); } /** @@ -123,13 +123,33 @@ class Admin_HolidaysController extends AuthenticatedController $this->redirect('admin/holidays'); } + public function holidays_action(): void + { + $this->holidays = Holidays::getHolidays(true, true); + $this->customized = Config::get()->CUSTOMIZED_HOLIDAYS; + } + + public function store_holidays_action(): void + { + CSRFProtection::verifyUnsafeRequest(); + + Config::get()->store( + 'CUSTOMIZED_HOLIDAYS', + Request::intArray('holidays') + ); + + PageLayout::postSuccess(_('Die Änderungen wurden gespeichert.')); + + $this->redirect($this->holidaysURL()); + } + /** * Checks a string if it is a valid date and returns the according * unix timestamp if valid. * * @param string $name Parameter name to extract from request * @param string $time Optional time segment - * @return mixed Unix timestamp or false if not valid + * @return int|false Unix timestamp or false if not valid */ private function getTimeStamp($name, $time = '0:00:00') { @@ -146,27 +166,46 @@ class Admin_HolidaysController extends AuthenticatedController /** * Adds the content to sidebar */ - private function setSidebar() + private function setSidebar(string $action): void { $sidebar = Sidebar::Get(); - $views = new ViewsWidget(); - $views->addLink(_('Alle Einträge'), - $this->url_for('admin/holidays', ['filter' => null])) - ->setActive(!$this->filter); - $views->addLink(_('Aktuelle/zukünftige Einträge'), - $this->url_for('admin/holidays', ['filter' => 'current'])) - ->setActive($this->filter === 'current'); - $views->addLink(_('Vergangene Einträge'), - $this->url_for('admin/holidays', ['filter' => 'past'])) - ->setActive($this->filter === 'past'); - $sidebar->addWidget($views); - - $links = new ActionsWidget(); - $links->addLink(_('Neue Ferien anlegen'), - $this->url_for('admin/holidays/edit', ['filter' => null]), - Icon::create('add', 'clickable')) - ->asDialog('size=auto'); - $sidebar->addWidget($links); + $is_vacation_view = !in_array($action, ['holidays', 'store_holidays']); + + $views = $sidebar->addWidget(new ViewsWidget()); + $views->addLink( + _('Ferien'), + $this->indexURL() + )->setActive($is_vacation_view); + $views->addLink( + _('Feiertage'), + $this->holidaysURL() + )->setActive(!$is_vacation_view); + + if (!$is_vacation_view) { + return; + } + + $views = $sidebar->addWidget(new ViewsWidget()); + $views->setTitle(_('Ansichtseinstellungen')); + $views->addLink( + _('Alle Einträge'), + $this->indexURL(['filter' => null]) + )->setActive(!$this->filter); + $views->addLink( + _('Aktuelle/zukünftige Einträge'), + $this->indexURL(['filter' => 'current']) + )->setActive($this->filter === 'current'); + $views->addLink( + _('Vergangene Einträge'), + $this->indexURL(['filter' => 'past']) + )->setActive($this->filter === 'past'); + + $links = $sidebar->addWidget(new ActionsWidget()); + $links->addLink( + _('Neue Ferien anlegen'), + $this->editURL(['filter' => null]), + Icon::create('add') + )->asDialog('size=auto'); } } |
