aboutsummaryrefslogtreecommitdiff
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
parent7c3a4e24b811b4d6cc370503a7cf21cf513708b2 (diff)
Informationsseite Leichte Sprache bereitstellen, resolve Tic #3132
Merge request studip/studip!2125
-rw-r--r--app/controllers/siteinfo.php41
-rw-r--r--app/views/siteinfo/edit.php6
-rw-r--r--app/views/siteinfo/new.php5
-rw-r--r--db/migrations/5.5.2_add_siteinfo_draft_field.php22
-rw-r--r--db/migrations/5.5.3_create_page_easy_read.php134
-rw-r--r--lib/classes/Siteinfo.php20
-rw-r--r--lib/navigation/FooterNavigation.php41
-rw-r--r--public/assets/images/icons/blue/contrast.svg36
-rw-r--r--public/assets/images/icons/blue/easy-read.svg30
-rw-r--r--public/assets/images/icons/blue/easy-read2.svg29
-rw-r--r--resources/assets/stylesheets/scss/index.scss3
-rw-r--r--templates/index_nobody.php2
12 files changed, 343 insertions, 26 deletions
diff --git a/app/controllers/siteinfo.php b/app/controllers/siteinfo.php
index 82aa8b5..86ab7e7 100644
--- a/app/controllers/siteinfo.php
+++ b/app/controllers/siteinfo.php
@@ -71,8 +71,16 @@ class SiteinfoController extends StudipController
if ($detail[2] == '') {
$detail[2] = _('unbenannt');
}
- Navigation::addItem('/footer/siteinfo/'.$detail[1].'/'.$detail[0],
- new Navigation($detail[2], $this->url_for('siteinfo/show/'.$detail[1].'/'.$detail[0])));
+
+ // check draft status and possibly hide site in navigation
+ if ($detail[3] == 1 && $GLOBALS['perm']->have_perm('root')) {
+
+ Navigation::addItem('/footer/siteinfo/'.$detail[1].'/'.$detail[0],
+ new Navigation($detail[2], $this->url_for('siteinfo/show/'.$detail[1].'/'.$detail[0])));
+ } else if ($detail[3] != 1) {
+ Navigation::addItem('/footer/siteinfo/'.$detail[1].'/'.$detail[0],
+ new Navigation($detail[2], $this->url_for('siteinfo/show/'.$detail[1].'/'.$detail[0])));
+ }
}
if ($action != 'new') {
@@ -127,6 +135,10 @@ class SiteinfoController extends StudipController
*/
public function show_action()
{
+ $draft_status = $this->si->get_detail_draft_status($this->currentdetail);
+ if ($draft_status == 1 && !$GLOBALS['perm']->have_perm('root')) {
+ throw new AccessDeniedException();
+ }
$this->output = $this->si->get_detail_content_processed($this->currentdetail);
}
@@ -148,10 +160,11 @@ class SiteinfoController extends StudipController
public function edit_action($givenrubric = null, $givendetail = null)
{
if (is_numeric($givendetail)) {
- $this->rubrics = $this->si->get_all_rubrics();
- $this->rubric_id = $this->si->rubric_for_detail($this->currentdetail);
- $this->detail_name = $this->si->get_detail_name($this->currentdetail);
- $this->content = $this->si->get_detail_content($this->currentdetail);
+ $this->rubrics = $this->si->get_all_rubrics();
+ $this->rubric_id = $this->si->rubric_for_detail($this->currentdetail);
+ $this->detail_name = $this->si->get_detail_name($this->currentdetail);
+ $this->content = $this->si->get_detail_content($this->currentdetail);
+ $this->draft_status = $this->si->get_detail_draft_status($this->currentdetail);
} else {
$this->edit_rubric = true;
$this->rubric_id = $this->currentrubric;
@@ -161,17 +174,19 @@ class SiteinfoController extends StudipController
public function save_action()
{
- $detail_name = Request::get('detail_name');
- $rubric_name = Request::get('rubric_name');
- $content = Request::get('content');
- $rubric_id = Request::int('rubric_id');
- $detail_id = Request::int('detail_id');
+ $detail_name = Request::get('detail_name');
+ $rubric_name = Request::get('rubric_name');
+ $content = Request::get('content');
+ $rubric_id = Request::int('rubric_id');
+ $detail_id = Request::int('detail_id');
+ $draft_status = Request::get('draft_status');
+
if ($rubric_id) {
if ($detail_id) {
- list($rubric, $detail) = $this->si->save('update_detail', compact('rubric_id', 'detail_name', 'content', 'detail_id'));
+ list($rubric, $detail) = $this->si->save('update_detail', compact('rubric_id', 'detail_name', 'content', 'detail_id', 'draft_status'));
} else {
if ($content) {
- list($rubric, $detail) = $this->si->save('insert_detail', compact('rubric_id', 'detail_name','content'));
+ list($rubric, $detail) = $this->si->save('insert_detail', compact('rubric_id', 'detail_name','content', 'draft_status'));
} else {
list($rubric, $detail) = $this->si->save('update_rubric', compact('rubric_id', 'rubric_name'));
}
diff --git a/app/views/siteinfo/edit.php b/app/views/siteinfo/edit.php
index 54bd8d2..00d4d6e 100644
--- a/app/views/siteinfo/edit.php
+++ b/app/views/siteinfo/edit.php
@@ -24,7 +24,6 @@ use Studip\Button, Studip\LinkButton;
<label>
<?= _('Rubrik-Zuordnung')?>
<select name="rubric_id">
-
<? foreach ($rubrics as $option): ?>
<option value="<?= htmlReady($option['rubric_id']) ?>" <? if ($currentrubric == $option['rubric_id']) echo 'selected'; ?>>
<?= htmlReady(language_filter($option['name'])) ?>
@@ -39,6 +38,11 @@ use Studip\Button, Studip\LinkButton;
</label>
<label>
+ <input type="checkbox" name="draft_status" id="draft_status" value="1" <?= $draft_status ? 'checked' : ''?>>
+ <?= _('Entwurfsmodus (nur sichtbar für root)') ?>
+ </label>
+
+ <label>
<?= _('Seiteninhalt')?>
<textarea style="height: 15em;" name="content" id="content" class="add_toolbar size-l wysiwyg"><?= wysiwygReady($content) ?></textarea>
</label>
diff --git a/app/views/siteinfo/new.php b/app/views/siteinfo/new.php
index fc59437..a2389f8 100644
--- a/app/views/siteinfo/new.php
+++ b/app/views/siteinfo/new.php
@@ -39,6 +39,11 @@ use Studip\Button, Studip\LinkButton;
</label>
<label>
+ <input type="checkbox" name="draft_status" id="draft_status" value="1" <?= $draft_status ? 'checked' : ''?>>
+ <?= _('Entwurfsmodus (nur sichtbar für root)') ?>
+ </label>
+
+ <label>
<?= _('Seiteninhalt') ?>
<textarea style="width: 90%;height: 15em;" name="content" id="content"></textarea><br>
</label>
diff --git a/db/migrations/5.5.2_add_siteinfo_draft_field.php b/db/migrations/5.5.2_add_siteinfo_draft_field.php
new file mode 100644
index 0000000..6437c00
--- /dev/null
+++ b/db/migrations/5.5.2_add_siteinfo_draft_field.php
@@ -0,0 +1,22 @@
+<?php
+
+class AddSiteinfoDraftField extends Migration {
+
+ public function description()
+ {
+ return 'Creates configuration for sites to be in draft mode';
+ }
+
+ public function up()
+ {
+ DBManager::get()->exec("ALTER TABLE `siteinfo_details` ADD `draft_status` TINYINT(1) AFTER `position`");
+ }
+
+ public function down()
+ {
+ DBManager::get()->exec("ALTER TABLE `siteinfo_details` DROP COLUMN `draft_status`");
+ }
+
+
+
+}
diff --git a/db/migrations/5.5.3_create_page_easy_read.php b/db/migrations/5.5.3_create_page_easy_read.php
new file mode 100644
index 0000000..0318533
--- /dev/null
+++ b/db/migrations/5.5.3_create_page_easy_read.php
@@ -0,0 +1,134 @@
+
+<?php
+
+class CreatePageEasyRead extends Migration {
+
+ public function description()
+ {
+ return 'Creates a page for information in Easy Read (Leichte Sprache).';
+
+ }
+ public function up()
+ {
+ DBManager::Get()->exec("INSERT INTO `config` (`field`, `value`, `type`, `range`, `section`, `mkdate`, `chdate`, `description`)
+ VALUES ('EASY_READ_URL', '', 'string', 'global', 'accessibility', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 'URL zur Seite \"Leichte Sprache\"')");
+
+ DBManager::Get()->exec("INSERT INTO `siteinfo_details` (`detail_id`, `rubric_id`, `position`, `draft_status`, `name`, `content`)
+ VALUES (NULL, '1', NULL, '1', 'Leichte Sprache',
+ '++**Leichte Sprache**
+
+1) Beschreibung des Anbieters und des Zwecks der Seite
+Dies sind die Internet-Seiten für Inhalte zum Lernen und Lehren von **[Einrichtung einsetzen]** .
+Eine [anpassen: Universität/Hochschule/Volks-Hochschule/ oder anderes] ist ein Ort an dem man nach der normalen Schule weiter lernen kann.
+Wenn man hier lernt [ggf. anpassen/arbeitet/eine Ausbildung macht] oder als Lehrer arbeitet, bekommt man Anmelde-Daten.
+Wenn man angemeldet ist, findet man Material zum Unterricht.
+Außerdem kann man seinen Kalender und Stundenplan sehen.
+Man kann mit anderen Nachrichten schreiben.
+
+2) Hinweise zur Navigation
+Um sich anzumelden, braucht man einen Benutzer-Namen und ein Passwort.
+Benutzer-Name und Passwort bekommt man von **[Name bzw. Einrichtung angeben].**
+Man meldet sich in dem Kasten an, wo Login steht.
+Hilfe bei der Anmeldung findet man [Link von Einrichtung einzusetzen oder Text von Einrichtung zu ergänzen].
+[Falls auf der Startseite vorhanden:
+Hilfe gibt es oben rechts [ggf. anpassen] bei dem Fragezeichen.
+Ganz unten bei Impressum findet man Angaben dazu, wer die Seite gemacht hat.
+Ganz unten bei Datenschutz steht, welche Daten von Besuchern der Seite verwendet werden.
+Ganz unten kann man unter Barriere melden sich beschweren, wenn man die Seite nicht bedienen kann.
+
+3) Erläuterung der wesentlichen Inhalte der Erklärung zur Barrierefreiheit
+[Je nach Standort sind ggf. die Gesetzesstellen und Behörden anzupassen.]
+
+Erklärung zur Barriere-Freiheit in leichter Sprache
+Die [Betreibername einsetzen] ist für Barriere-Freiheit im Internet.
+Das bedeutet: Alle Menschen bekommen alle wichtigen Infos.
+Zum Beispiel können blinde Menschen Vorlese-Programme nutzen.
+
+Die [Betreibername einsetzen] beachtet die Vorschriften.
+Dazu ist man gesetzlich verpflichtet.
+
+Das sind:
+- das Behinderten-Gleichstellungs-Gesetz (BGG)
+- Verordnung zur Schaffung barrierefreier Informations-Technik nach dem Behinderten-Gleichstellungs-Gesetz (BITV)
+- das Behinderten-Gleichstellungs-Gesetz des [Bundesland oder Bund einfügen]
+
+[Da es Pflicht ist, auf bekannte Barrieren hinzuweisen, sind diese hier vom jeweiligen Betreiber zusammenzufassen und in leichter Sprache zu erläutern.
+In etwa:
+- Auf manchen Seiten sind die Überschriften ein bisschen durcheinander. Zum Beispiel: Da steht was unten mit kleinen Buchstaben. Das müsste aber oben mit größeren Buchstaben stehen.
+- Manche Sachen werden so vorgelesen, dass blinde Menschen sie schlecht verstehen. Sie sehen das ja nicht.
+…]
+
+Sind Sie nicht zufrieden?
+Haben Sie eine Barriere gefunden?
+Sie können uns schreiben.
+**Hier ist ein Formular:**
+[jeweiliges Barriere-melden-Formular am Standort verlinken]
+
+**Hier ist unsere Adresse:**
+[Adresse einfügen]
+
+**Sie können uns anrufen:**
+[Telefonnummer einfügen]
+
+Es gibt die **Schlichtungs-Stelle.**
+
+**Schlichtung** bedeutet:
+- Sich einigen.
+- Sich vertragen.
+Die Schlichtungs-Stelle **hilft bei einem Streit.**
+
+Zum Beispiel:
+1. Es gibt eine Barriere bei der [Einrichtung einfügen] auf den Internet-Seiten.
+2. Sie haben sich darüber beschwert.
+3. Die Barriere bleibt aber.
+
+Jetzt kann die **Schlichtungs-Stelle helfen.**
+Der Streit muss dann nicht vor ein Gericht.
+Beide Seiten sollen sich vertragen.
+Sie können eine **Schlichtung beantragen.**
+
+Zum Beispiel:
+Sie sind mit einer Antwort von [Einrichtung einfügen] zur Barriere-Freiheit nicht zufrieden.
+
+Eine **Schlichtung** kostet nichts.
+Sie brauchen **keinen Anwalt.**
+Sie können den **Antrag in Leichter Sprache oder in Deutscher Gebärden-Sprache** stellen.
+
+**Hier gibt es weitere Informationen:**
+[Idealerweise Link auf jeweilige Schlichtungsstelle und deren Informationen in leichter Sprache einfügen]
+
+**Hier ist die Adresse der Schlichtungs-Stelle:**
+[jeweils zuständige Stelle einfügen]
+
+**Hier ist die Telefonnummer:**
+[Telefonnummer einfügen]
+
+4) Hinweise auf weitere in diesem Auftritt vorhandene Informationen in Deutscher Gebärdensprache und in Leichter Sprache
+
+[So weitere Hinweise in Leichter Sprache oder Gebärdensprache vorhanden sind, muss auf die entsprechenden Orte verwiesen werden.]
+Hier finden Sie weitere Hinweise in Leichter Sprache: [Link einfügen]
+Oder:
+Es sind keine weiteren Informationen auf diesen Seiten in leichter oder Gebärden-Sprache enthalten.++
+')");
+
+
+ $query = "SELECT `rubric_id`, `detail_id`
+ FROM `siteinfo_details`
+ WHERE `name` = 'Leichte Sprache'
+ ORDER BY `detail_id` DESC";
+ $result = DBManager::get()->fetchOne($query);
+ $easy_read_url = "dispatch.php/siteinfo/show/{$result['rubric_id']}/{$result['detail_id']}";
+ DBManager::Get()->execute("INSERT INTO `config_values` (`field`, `range_id`, `value`, `mkdate`, `chdate`, `comment`) VALUES ('EASY_READ_URL', 'studip', ?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), ' zur Seite \"Leichte Sprache\"')", [$easy_read_url]);
+
+ }
+
+ public function down()
+ {
+ $db = DBManager::get();
+ $db->exec("DELETE FROM `config` WHERE `field` = 'EASY_READ_URL'");
+ $db->exec("DELETE FROM `config_values` WHERE `field` = 'EASY_READ_URL'");
+ $db->exec("DELETE FROM `siteinfo_details` WHERE name = 'Leichte Sprache'");
+ }
+
+
+}
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;
}
}
diff --git a/public/assets/images/icons/blue/contrast.svg b/public/assets/images/icons/blue/contrast.svg
new file mode 100644
index 0000000..e800b30
--- /dev/null
+++ b/public/assets/images/icons/blue/contrast.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Ebene_2" data-name="Ebene 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <defs>
+ <style>
+ .cls-1 {
+ fill: none;
+ }
+
+ .cls-1, .cls-2 {
+ stroke-width: 0px;
+ }
+
+ .cls-2 {
+ fill: #28497c;
+ }
+ </style>
+ </defs>
+ <g id="Viewbox_64x64" data-name="Viewbox 64x64">
+ <rect class="cls-1" width="64" height="64"/>
+ </g>
+ <g id="accessability">
+ <g id="contrast">
+ <g>
+ <path class="cls-2" d="m32.49,14.02c-.16,0-.32-.02-.48-.02h0s0,0-.01,0c-9.94,0-18,8.06-18,18s8.06,18,18,18,18-8.06,18-18-7.8-17.71-17.51-17.98Zm-.49,29.98c-6.62,0-12-5.38-12-12s5.38-12,12-12c0,0,0,0,.01,0v24s-.01,0-.01,0Z"/>
+ <circle class="cls-2" cx="32" cy="7" r="3"/>
+ <circle class="cls-2" cx="32" cy="57" r="3"/>
+ <circle class="cls-2" cx="7" cy="32" r="3"/>
+ <circle class="cls-2" cx="57" cy="32" r="3"/>
+ <circle class="cls-2" cx="14.32" cy="14.32" r="3"/>
+ <circle class="cls-2" cx="49.68" cy="49.68" r="3"/>
+ <circle class="cls-2" cx="14.32" cy="49.68" r="3"/>
+ <circle class="cls-2" cx="49.68" cy="14.32" r="3"/>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/public/assets/images/icons/blue/easy-read.svg b/public/assets/images/icons/blue/easy-read.svg
new file mode 100644
index 0000000..5aa1862
--- /dev/null
+++ b/public/assets/images/icons/blue/easy-read.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Ebene_2" data-name="Ebene 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <defs>
+ <style>
+ .cls-1 {
+ fill: none;
+ }
+
+ .cls-1, .cls-2 {
+ stroke-width: 0px;
+ }
+
+ .cls-2 {
+ fill: #28497c;
+ }
+ </style>
+ </defs>
+ <g id="Viewbox_64x64" data-name="Viewbox 64x64">
+ <rect class="cls-1" width="64" height="64"/>
+ </g>
+ <g id="accessability">
+ <g id="easy-read">
+ <g>
+ <polygon class="cls-2" points="29.66 44.87 24.51 39.71 20.48 43.77 29.66 53 43.52 39.07 39.48 35 29.66 44.87"/>
+ <path class="cls-2" d="m32.06,28c6.65,0,12-5.36,12-12s-5.36-12-12-12-12,5.37-12,12,5.38,12,12,12Zm0-18c3.31,0,6,2.69,6,6s-2.69,6-6,6-6-2.69-6-6,2.69-6,6-6Z"/>
+ <path class="cls-2" d="m58,43c0-2.46-1.23-4.57-3-5.5v-11.5l-23,4.01-23-4.01v11.5c-1.77.93-3,3.04-3,5.5s1.23,4.57,3,5.5v7.49l23,4.01,23-4v-7.5c1.77-.93,3-3.04,3-5.5Zm-26,12.94l-19-3.31v-4.13c1.77-.93,3-3.04,3-5.5s-1.23-4.57-3-5.5v-6.75l18.31,3.19.69.12.69-.12,18.31-3.19v6.75c-1.77.93-3,3.04-3,5.5s1.23,4.57,3,5.5v4.14l-19,3.3Z"/>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/public/assets/images/icons/blue/easy-read2.svg b/public/assets/images/icons/blue/easy-read2.svg
new file mode 100644
index 0000000..50dc1c3
--- /dev/null
+++ b/public/assets/images/icons/blue/easy-read2.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Ebene_2" data-name="Ebene 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <defs>
+ <style>
+ .cls-1 {
+ fill: none;
+ }
+
+ .cls-1, .cls-2 {
+ stroke-width: 0px;
+ }
+
+ .cls-2 {
+ fill: #28497c;
+ }
+ </style>
+ </defs>
+ <g id="Viewbox_64x64" data-name="Viewbox 64x64">
+ <rect class="cls-1" width="64" height="64"/>
+ </g>
+ <g id="accessability">
+ <g id="easy-read2">
+ <g>
+ <path class="cls-2" d="m32.06,28c6.65,0,12-5.36,12-12s-5.36-12-12-12-12,5.37-12,12,5.38,12,12,12Z"/>
+ <path class="cls-2" d="m55,37.5v-11.5l-23,4.01-23-4.01v11.5c-1.77.93-3,3.04-3,5.5s1.23,4.57,3,5.5v7.49l23,4.01,23-4v-7.5c1.77-.93,3-3.04,3-5.5s-1.23-4.57-3-5.5Zm-25.34,15.5l-9.18-9.23,4.03-4.06,5.14,5.16,9.82-9.87,4.04,4.07-13.86,13.93Z"/>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/assets/stylesheets/scss/index.scss b/resources/assets/stylesheets/scss/index.scss
index 996697b..a5cdef7 100644
--- a/resources/assets/stylesheets/scss/index.scss
+++ b/resources/assets/stylesheets/scss/index.scss
@@ -79,7 +79,8 @@ $gap-between-boxes: calc($login-page-margin / 2);
footer {
overflow: auto;
- #languages, #contrast {
+ #languages,
+ #contrast {
display: flex;
align-items: center;
gap: 5px;
diff --git a/templates/index_nobody.php b/templates/index_nobody.php
index 519f2e1..f687775 100644
--- a/templates/index_nobody.php
+++ b/templates/index_nobody.php
@@ -83,6 +83,7 @@ if ($bg_mobile) {
<?= tooltipIcon(_('Aktiviert einen hohen Kontrast gemäß WCAG 2.1. Diese Einstellung wird nach dem Login übernommen.
Sie können sie in Ihren persönlichen Einstellungen ändern.')); ?>
<? endif ?>
+
</div>
<div class="login_info">
@@ -118,3 +119,4 @@ if ($bg_mobile) {
</div>
<? endif; ?>
</main>
+