aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichaela Brückner <brueckner@data-quest.de>2023-10-17 08:33:27 +0000
committerMichaela Brückner <brueckner@data-quest.de>2023-10-17 08:33:27 +0000
commitd2e68c552c4a7ee2127cf8a4906481991c69ec2b (patch)
tree0e71ab25bb99db0a7061d4d3fa2aa05a0e55ee1f /lib
parent7c3a4e24b811b4d6cc370503a7cf21cf513708b2 (diff)
Informationsseite Leichte Sprache bereitstellen, resolve Tic #3132
Merge request studip/studip!2125
Diffstat (limited to 'lib')
-rw-r--r--lib/classes/Siteinfo.php20
-rw-r--r--lib/navigation/FooterNavigation.php41
2 files changed, 50 insertions, 11 deletions
diff --git a/lib/classes/Siteinfo.php b/lib/classes/Siteinfo.php
index 0afa575..73e811f 100644
--- a/lib/classes/Siteinfo.php
+++ b/lib/classes/Siteinfo.php
@@ -49,6 +49,16 @@ class Siteinfo {
}
}
+ public function get_detail_draft_status($id) {
+ $sql = "SELECT draft_status
+ FROM siteinfo_details
+ WHERE detail_id = :id";
+ $statement = DBManager::get()->prepare($sql);
+ $statement->bindValue(':id', $id, PDO::PARAM_INT);
+ $statement->execute();
+ return $statement->fetchColumn();
+ }
+
function get_detail_name($id) {
$sql = "SELECT name
FROM siteinfo_details
@@ -66,7 +76,7 @@ class Siteinfo {
}
function get_all_details() {
- $sql = "SELECT detail_id, rubric_id, name
+ $sql = "SELECT detail_id, rubric_id, name, draft_status
FROM siteinfo_details
ORDER BY position, detail_id ASC";
$result = $this->db->query($sql);
@@ -137,25 +147,27 @@ class Siteinfo {
switch ($type) {
case 'update_detail':
$query = "UPDATE siteinfo_details
- SET rubric_id = :rubric_id, name = :name, content = :content
+ SET rubric_id = :rubric_id, name = :name, content = :content, draft_status = :draft_status
WHERE detail_id = :detail_id";
$statement = DBManager::get()->prepare($query);
$statement->bindValue(':rubric_id', $input['rubric_id'], PDO::PARAM_INT);
$statement->bindValue(':name', $input['detail_name']);
$statement->bindValue(':content', $input['content']);
$statement->bindValue(':detail_id', $input['detail_id'], PDO::PARAM_INT);
+ $statement->bindValue(':draft_status', $input['draft_status']);
$statement->execute();
$rubric = $input['rubric_id'];
$detail = $input['detail_id'];
break;
case 'insert_detail':
- $query = "INSERT INTO siteinfo_details (rubric_id, name, content)
- VALUES (:rubric_id, :name, :content)";
+ $query = "INSERT INTO siteinfo_details (rubric_id, name, content, draft_status)
+ VALUES (:rubric_id, :name, :content, :draft_status)";
$statement = DBManager::get()->prepare($query);
$statement->bindValue(':rubric_id', $input['rubric_id'], PDO::PARAM_INT);
$statement->bindValue(':name', $input['detail_name']);
$statement->bindValue(':content', $input['content']);
+ $statement->bindValue(':draft_status', $input['draft_status']);
$statement->execute();
$rubric = $input['rubric_id'];
diff --git a/lib/navigation/FooterNavigation.php b/lib/navigation/FooterNavigation.php
index 800da37..b264c77 100644
--- a/lib/navigation/FooterNavigation.php
+++ b/lib/navigation/FooterNavigation.php
@@ -40,17 +40,19 @@ class FooterNavigation extends Navigation
// Datenschutzerklärung
- //Check if the privacy url is one of the Stud.IP pages:
$privacy_url = Config::get()->PRIVACY_URL;
- if (is_internal_url($privacy_url)) {
- //It is a Stud.IP page. Add the cancel_login URL parameter.
- $privacy_url = URLHelper::getURL($privacy_url, ['cancel_login' => '1']);
+ if ($this->checkSiteinfoURL($privacy_url)) {
+ $this->addSubNavigation(
+ 'privacy',
+ new Navigation(
+ _('Datenschutz'),
+ URLHelper::getURL($privacy_url, ['cancel_login' => 1], true)
+ )
+ );
}
- $this->addSubNavigation('privacy', new Navigation(_('Datenschutz'), $privacy_url));
-
$a11yurl = Config::get()->ACCESSIBILITY_DISCLAIMER_URL;
- if ($a11yurl) {
+ if ($this->checkSiteinfoURL($a11yurl)) {
$this->addSubNavigation(
'a11ydisclaimer',
new Navigation(
@@ -70,5 +72,30 @@ class FooterNavigation extends Navigation
)
)
);
+
+ $easy_read_url = Config::get()->EASY_READ_URL;
+ if ($this->checkSiteinfoURL($easy_read_url)) {
+ $this->addSubNavigation(
+ 'easy_read',
+ new Navigation(
+ _('Leichte Sprache'),
+ URLHelper::getURL($easy_read_url, ['cancel_login' => 1], true)
+ )
+ );
+ }
+ }
+
+ private function checkSiteinfoURL($url)
+ {
+ if (str_starts_with($url, 'dispatch.php/siteinfo')) {
+ $url_parts = explode('/', $url);
+ $detail_id = $url_parts[4];
+ $si = new Siteinfo();
+ $isdraft = $si->get_detail_draft_status($detail_id);
+ if ($isdraft) {
+ return '';
+ }
+ }
+ return $url;
}
}