From 348bd1303bc31d0f1be6a8990e0647d7233b388f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de> Date: Mon, 22 Apr 2024 16:02:08 +0000 Subject: [PATCH] Resolve "MessageBox sollte als Statusmeldung ausgezeichnet werden" Closes #4042 Merge request studip/studip!2896 --- lib/classes/MessageBox.class.php | 10 ++++++++++ templates/_standard_loginform.php | 6 ++++-- templates/shared/message_box.php | 22 ++++++++++++---------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/classes/MessageBox.class.php b/lib/classes/MessageBox.class.php index 450851f41da..c0d94b297ed 100644 --- a/lib/classes/MessageBox.class.php +++ b/lib/classes/MessageBox.class.php @@ -41,6 +41,7 @@ class MessageBox implements LayoutMessage public $details; public $close_details; protected $hide_close = false; + public static $counter = 0; /** * This function returns an exception message box. Use it only for system errors @@ -147,12 +148,21 @@ class MessageBox implements LayoutMessage */ public function __toString() { + $label = [ + 'exception' => _('Systemfehler'), + 'error' => _('Fehler'), + 'warning' => _('Warnung'), + 'info' => _('Hinweis'), + 'success' => _('Erfolg'), + ]; return $GLOBALS['template_factory']->render('shared/message_box', [ 'class' => $this->class, 'message' => $this->message, 'details' => is_array($this->details) ? $this->details : [], 'close_details' => $this->close_details, 'hide_close' => $this->hide_close, + 'label' => $label[$this->class], + 'counter' => self::$counter++, ]); } } diff --git a/templates/_standard_loginform.php b/templates/_standard_loginform.php index 51fc53b2352..57c9cec968b 100644 --- a/templates/_standard_loginform.php +++ b/templates/_standard_loginform.php @@ -43,9 +43,11 @@ $password_tooltip_text = (string)Config::get()->PASSWORD_TOOLTIP_TEXT; name="password" autocomplete="current-password" size="20" - required> + required + <?= $loginerror ? 'aria-describedby="messagebox-0"' : ''?> + > - <i id="password-toggle" tabindex="0" aria-role="button" class="enter-accessible"> + <i id="password-toggle" tabindex="0" role="button" class="enter-accessible"> <?= Icon::create('visibility-checked')->asImg(20, [ 'id ' => 'visible-password', 'title' => _('Passwort anzeigen'), diff --git a/templates/shared/message_box.php b/templates/shared/message_box.php index 657563ba285..447763d7d97 100644 --- a/templates/shared/message_box.php +++ b/templates/shared/message_box.php @@ -1,4 +1,4 @@ -<div class="messagebox messagebox_<?= $class ?> <? if (count($details) > 0 && $close_details): ?>details_hidden<? endif; ?>"> +<div role="region" aria-label="<?= $label ?>" aria-describedby="messagebox-<?= $counter ?>" class="messagebox messagebox_<?= $class ?> <? if (count($details) > 0 && $close_details): ?>details_hidden<? endif; ?>"> <div class="messagebox_buttons"> <? if (count($details) > 0 && $close_details) : ?> <a class="details" href="#" title="<?=_('Detailanzeige umschalten')?>"> @@ -6,19 +6,21 @@ </a> <? endif ?> <? if (!$hide_close): ?> - <a class="close" href="#" title="<?= _('Nachrichtenbox schließen') ?>"> + <a class="close" role="button" href="#" title="<?= _('Nachrichtenbox schließen') ?>"> <span><?= _('Nachrichtenbox schließen') ?></span> </a> <? endif; ?> </div> + <div role="status" id="messagebox-<?= $counter ?>"> <?= $message ?> -<? if (count($details) > 0) : ?> - <div class="messagebox_details"> - <ul> - <? foreach ($details as $li) : ?> - <li><?= $li ?></li> - <? endforeach ?> - </ul> + <? if (count($details) > 0) : ?> + <div class="messagebox_details"> + <ul> + <? foreach ($details as $li) : ?> + <li><?= $li ?></li> + <? endforeach ?> + </ul> + </div> + <? endif ?> </div> -<? endif ?> </div> -- GitLab