From c3e75577d3aa36640416507523c8b1b25c778026 Mon Sep 17 00:00:00 2001 From: Murtaza Sultani Date: Fri, 20 Dec 2024 08:44:09 +0000 Subject: Resolve "Editierbare Nutzungsbedingungen" Closes #4433 Merge request studip/studip!3222 --- RELEASE-NOTES.md | 1 + app/controllers/terms.php | 33 ++++++++++++++++++++++++ app/views/terms/index.php | 4 ++- db/migrations/6.0.36_tic_4433.php | 43 +++++++++++++++++++++++++++++++ lib/navigation/FooterNavigation.php | 13 +++++++++- locale/de/LC_HELP/pages/nutzung.html | 43 ------------------------------- locale/en/LC_HELP/pages/nutzung.html | 50 ------------------------------------ locale/en/LC_MESSAGES/studip.po | 1 + templates/terms.php | 22 +++++++++++++--- 9 files changed, 112 insertions(+), 98 deletions(-) create mode 100644 db/migrations/6.0.36_tic_4433.php delete mode 100644 locale/de/LC_HELP/pages/nutzung.html delete mode 100644 locale/en/LC_HELP/pages/nutzung.html diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 5756c7d..937ff8f 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -7,6 +7,7 @@ - Der Stud.IP-Cache ist nun kompatibel zu PSR-6. ([TIC #3701](https://gitlab.studip.de/studip/studip/-/issues/3701)) - Das `User`-Model hat die Methode `hasPermissionLevel()` erhalten, um einfach abfragen zu können, ob eine Person einen bestimmten Berechtigungsstatus hat. ([Issue #3453](https://gitlab.studip.de/studip/studip/-/issues/3453)) - In der Standort-Verwaltung können nun nicht nur Ferien sondern auch Feiertage konfiguriert werden. Dies erlaubt das Markieren von Feiertagen als gesetzliche Feiertage, da diese je nach Bundesland variieren können. ([Issue #2795](https://gitlab.studip.de/studip/studip/-/issues/2795)) +- Die Nutzungsbedingungen sind nun nicht mehr als statische HTML-Dateien hinterlegt, sondern können analog zu Impressum, Datenschutz- und Barrierefreiheitserklärung direkt über die Oberfläche bearbeitet werden. Initial ist diese Seite aber im Entwurfsmodus und daher für Nicht-Roots unsichtbar. Damit andere Personen beim ersten Login diese Nutzungsbedingungen sehen und ihnen zustimmen können, muss der Entwurfsmodus für diese Seite abgeschaltet werden. ([TIC #4433](https://gitlab.studip.de/studip/studip/-/issues/4433)) ## Breaking changes diff --git a/app/controllers/terms.php b/app/controllers/terms.php index d3a829e..528859a 100644 --- a/app/controllers/terms.php +++ b/app/controllers/terms.php @@ -26,6 +26,9 @@ class TermsController extends AuthenticatedController $this->compulsory = Config::get()->TERMS_CONFIG['compulsory']; $this->denial_message = ''; + + $this->terms_of_use = $this->getTermsOfUse(); + if (Request::isPost()) { CSRFProtection::verifyUnsafeRequest(); if (Request::submitted('accept')) { @@ -59,4 +62,34 @@ class TermsController extends AuthenticatedController } $this->redirect(URLHelper::getURL($target)); } + + + /** + * @return array|null + */ + private function getTermsOfUse() + { + $url = Config::get()->TERMS_OF_USE_URL; + + if (is_internal_url($url)) { + $url_parts = explode('/', $url); + $detail_id = $url_parts[4]; + $si = new Siteinfo(); + $detail = $si->get_detail($detail_id); + if (empty($detail) || !empty($detail['draft_status']) || !empty($detail['page_disabled_nobody'])) { + return null; + } + + return [ + 'type' => 'internal_url', + 'content' => $si->get_detail_content_processed($detail_id) + ]; + + } + + return [ + 'type' => 'external_url', + 'url' => $url + ]; + } } diff --git a/app/views/terms/index.php b/app/views/terms/index.php index 0dc5710..09a1760 100644 --- a/app/views/terms/index.php +++ b/app/views/terms/index.php @@ -19,7 +19,9 @@ - render('terms.php') ?> + render('terms.php', [ + 'terms_of_use' => $terms_of_use, + ]) ?>