From 3057a3cb7774089c3b604f7b1a34927e217840d2 Mon Sep 17 00:00:00 2001
From: Thomas Hackl <hackl@data-quest.de>
Date: Fri, 19 Apr 2024 07:42:14 +0000
Subject: [PATCH] Resolve "Mangelnde Tastatur-Bedienbarkeit im
 Veranstaltungsverzeichnis"

Closes #4031

Merge request studip/studip!2886
---
 resources/vue/components/tree/StudipTreeList.vue     | 6 +++---
 resources/vue/components/tree/StudipTreeTable.vue    | 4 ++--
 resources/vue/components/tree/TreeCourseDetails.vue  | 8 +++++---
 resources/vue/components/tree/TreeNodeCoursePath.vue | 8 +++++++-
 resources/vue/components/tree/TreeSearchResult.vue   | 5 +++--
 5 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/resources/vue/components/tree/StudipTreeList.vue b/resources/vue/components/tree/StudipTreeList.vue
index 4ba08bcbb81..2ab489c62a4 100644
--- a/resources/vue/components/tree/StudipTreeList.vue
+++ b/resources/vue/components/tree/StudipTreeList.vue
@@ -91,9 +91,9 @@
             <tbody>
                 <tr v-for="(course) in courses" :key="course.id" class="studip-tree-child studip-tree-course">
                     <td>
-                        <a :href="courseUrl(course.id)"
-                           :title="$gettextInterpolate($gettext('Zur Veranstaltung %{ course }'),
-                                { course: course.attributes.title })">
+                        <a :href="courseUrl(course.id)" tabindex="0"
+                           :title="$gettextInterpolate($gettext('Zur Veranstaltung %{ title }'),
+                                { title: course.attributes.title })">
                             <studip-icon shape="seminar" :size="26"></studip-icon>
                             <template v-if="course.attributes['course-number']">
                                 {{ course.attributes['course-number'] }}
diff --git a/resources/vue/components/tree/StudipTreeTable.vue b/resources/vue/components/tree/StudipTreeTable.vue
index 03a9d7b60e9..4cfa7d59fd8 100644
--- a/resources/vue/components/tree/StudipTreeTable.vue
+++ b/resources/vue/components/tree/StudipTreeTable.vue
@@ -112,8 +112,8 @@
                     </td>
                     <td>
                         <a :href="courseUrl(course.id)" tabindex="0"
-                           :title="$gettextInterpolate($gettext('Zur Veranstaltung %{ course }'),
-                                { course: course.attributes.title })">
+                           :title="$gettextInterpolate($gettext('Zur Veranstaltung %{ title }'),
+                                { title: course.attributes.title })">
                             <template v-if="course.attributes['course-number']">
                                 {{ course.attributes['course-number'] }}
                             </template>
diff --git a/resources/vue/components/tree/TreeCourseDetails.vue b/resources/vue/components/tree/TreeCourseDetails.vue
index 609349d86fe..6f3e056cdb1 100644
--- a/resources/vue/components/tree/TreeCourseDetails.vue
+++ b/resources/vue/components/tree/TreeCourseDetails.vue
@@ -4,14 +4,16 @@
             ({{ details.semester }})
         </div>
         <div class="admission-state" v-if="details.admissionstate">
-            <studip-icon :shape="details.admissionstate.icon" :role="details.admissionstate.role"
-                         :title="details.admissionstate.info"></studip-icon>
+            <studip-icon :shape="details.admissionstate.icon"
+                         :role="details.admissionstate.role"
+                         :alt="details.admissionstate.info"></studip-icon>
         </div>
         <div class="course-lecturers">
             <span v-for="(lecturer, index) in details.lecturers" :key="index">
                 <a :href="profileUrl(lecturer.username)"
                    :title="$gettextInterpolate($gettext('Zum Profil von %{ user }'),
-                        { user: lecturer.name })">
+                        { user: lecturer.name })"
+                   tabindex="0">
                     {{ lecturer.name }}
                 </a><template v-if="details.lecturers.length > 1 && index < details.lecturers.length - 1">, </template>
             </span>
diff --git a/resources/vue/components/tree/TreeNodeCoursePath.vue b/resources/vue/components/tree/TreeNodeCoursePath.vue
index 26ab88eb4d4..71f69eab0b7 100644
--- a/resources/vue/components/tree/TreeNodeCoursePath.vue
+++ b/resources/vue/components/tree/TreeNodeCoursePath.vue
@@ -1,6 +1,12 @@
 <template>
     <div>
-        <studip-icon shape="info-circle" @click="togglePathInfo"></studip-icon>
+        <button type="button"
+                @click.prevent="togglePathInfo"
+                :title="showPaths
+                    ? $gettext('Pfad im Verzeichnis ausblenden')
+                    : $gettext('Pfad im Verzeichnis anzeigen')">
+            <studip-icon shape="info-circle"></studip-icon>
+        </button>
         <ul v-if="showPaths" class="studip-tree-course-path">
             <li v-for="(path, pindex) in paths" :key="pindex">
                 <button @click.prevent="openNode(path[path.length - 1].id)">
diff --git a/resources/vue/components/tree/TreeSearchResult.vue b/resources/vue/components/tree/TreeSearchResult.vue
index e5093eb1bcf..1943dd355fe 100644
--- a/resources/vue/components/tree/TreeSearchResult.vue
+++ b/resources/vue/components/tree/TreeSearchResult.vue
@@ -31,13 +31,14 @@
                     </td>
                     <td>
                         <a :href="courseUrl(course.id)"
-                           :title="$gettextInterpolate($gettext('Zur Veranstaltung %{name}'), {name:  + course.attributes.title})">
+                           :title="$gettextInterpolate($gettext('Zur Veranstaltung %{title}'), {title: course.attributes.title})"
+                           tabindex="0">
                             <template v-if="course.attributes['course-number']">
                                 {{ course.attributes['course-number'] }}
                             </template>
                             {{ course.attributes.title }}
-                            <div :id="'course-dates-' + course.id" class="course-dates"></div>
                         </a>
+                        <div :id="'course-dates-' + course.id" class="course-dates"></div>
                         <tree-node-course-path :node-class="searchConfig.classname"
                                                :course-id="course.id"></tree-node-course-path>
                     </td>
-- 
GitLab