Skip to content
Snippets Groups Projects
Commit d2e68c55 authored by Michaela Brückner's avatar Michaela Brückner :unicorn:
Browse files

Informationsseite Leichte Sprache bereitstellen, resolve Tic #3132

Merge request studip/studip!2125
parent 7c3a4e24
No related branches found
No related tags found
No related merge requests found
...@@ -71,8 +71,16 @@ class SiteinfoController extends StudipController ...@@ -71,8 +71,16 @@ class SiteinfoController extends StudipController
if ($detail[2] == '') { if ($detail[2] == '') {
$detail[2] = _('unbenannt'); $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') { if ($action != 'new') {
...@@ -127,6 +135,10 @@ class SiteinfoController extends StudipController ...@@ -127,6 +135,10 @@ class SiteinfoController extends StudipController
*/ */
public function show_action() 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); $this->output = $this->si->get_detail_content_processed($this->currentdetail);
} }
...@@ -148,10 +160,11 @@ class SiteinfoController extends StudipController ...@@ -148,10 +160,11 @@ class SiteinfoController extends StudipController
public function edit_action($givenrubric = null, $givendetail = null) public function edit_action($givenrubric = null, $givendetail = null)
{ {
if (is_numeric($givendetail)) { if (is_numeric($givendetail)) {
$this->rubrics = $this->si->get_all_rubrics(); $this->rubrics = $this->si->get_all_rubrics();
$this->rubric_id = $this->si->rubric_for_detail($this->currentdetail); $this->rubric_id = $this->si->rubric_for_detail($this->currentdetail);
$this->detail_name = $this->si->get_detail_name($this->currentdetail); $this->detail_name = $this->si->get_detail_name($this->currentdetail);
$this->content = $this->si->get_detail_content($this->currentdetail); $this->content = $this->si->get_detail_content($this->currentdetail);
$this->draft_status = $this->si->get_detail_draft_status($this->currentdetail);
} else { } else {
$this->edit_rubric = true; $this->edit_rubric = true;
$this->rubric_id = $this->currentrubric; $this->rubric_id = $this->currentrubric;
...@@ -161,17 +174,19 @@ class SiteinfoController extends StudipController ...@@ -161,17 +174,19 @@ class SiteinfoController extends StudipController
public function save_action() public function save_action()
{ {
$detail_name = Request::get('detail_name'); $detail_name = Request::get('detail_name');
$rubric_name = Request::get('rubric_name'); $rubric_name = Request::get('rubric_name');
$content = Request::get('content'); $content = Request::get('content');
$rubric_id = Request::int('rubric_id'); $rubric_id = Request::int('rubric_id');
$detail_id = Request::int('detail_id'); $detail_id = Request::int('detail_id');
$draft_status = Request::get('draft_status');
if ($rubric_id) { if ($rubric_id) {
if ($detail_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 { } else {
if ($content) { 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 { } else {
list($rubric, $detail) = $this->si->save('update_rubric', compact('rubric_id', 'rubric_name')); list($rubric, $detail) = $this->si->save('update_rubric', compact('rubric_id', 'rubric_name'));
} }
......
...@@ -24,7 +24,6 @@ use Studip\Button, Studip\LinkButton; ...@@ -24,7 +24,6 @@ use Studip\Button, Studip\LinkButton;
<label> <label>
<?= _('Rubrik-Zuordnung')?> <?= _('Rubrik-Zuordnung')?>
<select name="rubric_id"> <select name="rubric_id">
<? foreach ($rubrics as $option): ?> <? foreach ($rubrics as $option): ?>
<option value="<?= htmlReady($option['rubric_id']) ?>" <? if ($currentrubric == $option['rubric_id']) echo 'selected'; ?>> <option value="<?= htmlReady($option['rubric_id']) ?>" <? if ($currentrubric == $option['rubric_id']) echo 'selected'; ?>>
<?= htmlReady(language_filter($option['name'])) ?> <?= htmlReady(language_filter($option['name'])) ?>
...@@ -38,6 +37,11 @@ use Studip\Button, Studip\LinkButton; ...@@ -38,6 +37,11 @@ use Studip\Button, Studip\LinkButton;
<input type="text" name="detail_name" id="detail_name" value="<?= htmlReady($detail_name) ?>"> <input type="text" name="detail_name" id="detail_name" value="<?= htmlReady($detail_name) ?>">
</label> </label>
<label>
<input type="checkbox" name="draft_status" id="draft_status" value="1" <?= $draft_status ? 'checked' : ''?>>
<?= _('Entwurfsmodus (nur sichtbar für root)') ?>
</label>
<label> <label>
<?= _('Seiteninhalt')?> <?= _('Seiteninhalt')?>
<textarea style="height: 15em;" name="content" id="content" class="add_toolbar size-l wysiwyg"><?= wysiwygReady($content) ?></textarea> <textarea style="height: 15em;" name="content" id="content" class="add_toolbar size-l wysiwyg"><?= wysiwygReady($content) ?></textarea>
......
...@@ -38,6 +38,11 @@ use Studip\Button, Studip\LinkButton; ...@@ -38,6 +38,11 @@ use Studip\Button, Studip\LinkButton;
<input style="width: 90%;" type="text" name="detail_name" id="detail_name"> <input style="width: 90%;" type="text" name="detail_name" id="detail_name">
</label> </label>
<label>
<input type="checkbox" name="draft_status" id="draft_status" value="1" <?= $draft_status ? 'checked' : ''?>>
<?= _('Entwurfsmodus (nur sichtbar für root)') ?>
</label>
<label> <label>
<?= _('Seiteninhalt') ?> <?= _('Seiteninhalt') ?>
<textarea style="width: 90%;height: 15em;" name="content" id="content"></textarea><br> <textarea style="width: 90%;height: 15em;" name="content" id="content"></textarea><br>
......
<?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`");
}
}
<?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'");
}
}
...@@ -49,6 +49,16 @@ class Siteinfo { ...@@ -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) { function get_detail_name($id) {
$sql = "SELECT name $sql = "SELECT name
FROM siteinfo_details FROM siteinfo_details
...@@ -66,7 +76,7 @@ class Siteinfo { ...@@ -66,7 +76,7 @@ class Siteinfo {
} }
function get_all_details() { function get_all_details() {
$sql = "SELECT detail_id, rubric_id, name $sql = "SELECT detail_id, rubric_id, name, draft_status
FROM siteinfo_details FROM siteinfo_details
ORDER BY position, detail_id ASC"; ORDER BY position, detail_id ASC";
$result = $this->db->query($sql); $result = $this->db->query($sql);
...@@ -137,25 +147,27 @@ class Siteinfo { ...@@ -137,25 +147,27 @@ class Siteinfo {
switch ($type) { switch ($type) {
case 'update_detail': case 'update_detail':
$query = "UPDATE siteinfo_details $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"; WHERE detail_id = :detail_id";
$statement = DBManager::get()->prepare($query); $statement = DBManager::get()->prepare($query);
$statement->bindValue(':rubric_id', $input['rubric_id'], PDO::PARAM_INT); $statement->bindValue(':rubric_id', $input['rubric_id'], PDO::PARAM_INT);
$statement->bindValue(':name', $input['detail_name']); $statement->bindValue(':name', $input['detail_name']);
$statement->bindValue(':content', $input['content']); $statement->bindValue(':content', $input['content']);
$statement->bindValue(':detail_id', $input['detail_id'], PDO::PARAM_INT); $statement->bindValue(':detail_id', $input['detail_id'], PDO::PARAM_INT);
$statement->bindValue(':draft_status', $input['draft_status']);
$statement->execute(); $statement->execute();
$rubric = $input['rubric_id']; $rubric = $input['rubric_id'];
$detail = $input['detail_id']; $detail = $input['detail_id'];
break; break;
case 'insert_detail': case 'insert_detail':
$query = "INSERT INTO siteinfo_details (rubric_id, name, content) $query = "INSERT INTO siteinfo_details (rubric_id, name, content, draft_status)
VALUES (:rubric_id, :name, :content)"; VALUES (:rubric_id, :name, :content, :draft_status)";
$statement = DBManager::get()->prepare($query); $statement = DBManager::get()->prepare($query);
$statement->bindValue(':rubric_id', $input['rubric_id'], PDO::PARAM_INT); $statement->bindValue(':rubric_id', $input['rubric_id'], PDO::PARAM_INT);
$statement->bindValue(':name', $input['detail_name']); $statement->bindValue(':name', $input['detail_name']);
$statement->bindValue(':content', $input['content']); $statement->bindValue(':content', $input['content']);
$statement->bindValue(':draft_status', $input['draft_status']);
$statement->execute(); $statement->execute();
$rubric = $input['rubric_id']; $rubric = $input['rubric_id'];
......
...@@ -40,17 +40,19 @@ class FooterNavigation extends Navigation ...@@ -40,17 +40,19 @@ class FooterNavigation extends Navigation
// Datenschutzerklärung // Datenschutzerklärung
//Check if the privacy url is one of the Stud.IP pages:
$privacy_url = Config::get()->PRIVACY_URL; $privacy_url = Config::get()->PRIVACY_URL;
if (is_internal_url($privacy_url)) { if ($this->checkSiteinfoURL($privacy_url)) {
//It is a Stud.IP page. Add the cancel_login URL parameter. $this->addSubNavigation(
$privacy_url = URLHelper::getURL($privacy_url, ['cancel_login' => '1']); '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; $a11yurl = Config::get()->ACCESSIBILITY_DISCLAIMER_URL;
if ($a11yurl) { if ($this->checkSiteinfoURL($a11yurl)) {
$this->addSubNavigation( $this->addSubNavigation(
'a11ydisclaimer', 'a11ydisclaimer',
new Navigation( new Navigation(
...@@ -70,5 +72,30 @@ class FooterNavigation extends 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;
} }
} }
<?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
<?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
<?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
...@@ -79,7 +79,8 @@ $gap-between-boxes: calc($login-page-margin / 2); ...@@ -79,7 +79,8 @@ $gap-between-boxes: calc($login-page-margin / 2);
footer { footer {
overflow: auto; overflow: auto;
#languages, #contrast { #languages,
#contrast {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 5px; gap: 5px;
......
...@@ -83,6 +83,7 @@ if ($bg_mobile) { ...@@ -83,6 +83,7 @@ if ($bg_mobile) {
<?= tooltipIcon(_('Aktiviert einen hohen Kontrast gemäß WCAG 2.1. Diese Einstellung wird nach dem Login übernommen. <?= 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.')); ?> Sie können sie in Ihren persönlichen Einstellungen ändern.')); ?>
<? endif ?> <? endif ?>
</div> </div>
<div class="login_info"> <div class="login_info">
...@@ -118,3 +119,4 @@ if ($bg_mobile) { ...@@ -118,3 +119,4 @@ if ($bg_mobile) {
</div> </div>
<? endif; ?> <? endif; ?>
</main> </main>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment