From 1504f1d4bbda6d329152dea6a757fe17fe38acbb Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms Date: Thu, 20 Jun 2024 12:27:18 +0000 Subject: don't html escape title attributes in vue, fixes #3050 Closes #3050 Merge request studip/studip!3135 --- resources/vue/components/ActiveFilter.vue | 2 +- resources/vue/components/AdminCourses.vue | 2 +- resources/vue/components/ContentModulesControl.vue | 2 +- resources/vue/components/ContentModulesEditTiles.vue | 9 ++++++--- resources/vue/components/ContentmodulesEditTable.vue | 8 +++++--- resources/vue/components/EditableList.vue | 2 +- resources/vue/components/FilesTable.vue | 12 ++++++------ .../components/courseware/CoursewareContentPermissions.vue | 6 +++--- .../courseware/tasks/CoursewareTasksDialogDistribute.vue | 4 ++-- .../courseware/tasks/TaskGroupsAddSolversDialog.vue | 4 ++-- .../vue/components/courseware/unit/CoursewareUnitItem.vue | 2 +- .../components/courseware/unit/CoursewareUnitProgress.vue | 2 +- .../vue/components/form_inputs/CalendarPermissionsTable.vue | 6 ++++-- .../vue/components/form_inputs/MyCoursesColouredTable.vue | 2 +- resources/vue/components/questionnaires/InputArray.vue | 6 +++--- resources/vue/components/tree/StudipTreeList.vue | 11 +++++++---- resources/vue/components/tree/StudipTreeTable.vue | 11 +++++++---- resources/vue/components/tree/TreeBreadcrumb.vue | 2 +- resources/vue/components/tree/TreeCourseDetails.vue | 2 +- resources/vue/components/tree/TreeNodeTile.vue | 2 +- resources/vue/components/tree/TreeSearchResult.vue | 2 +- 21 files changed, 56 insertions(+), 43 deletions(-) diff --git a/resources/vue/components/ActiveFilter.vue b/resources/vue/components/ActiveFilter.vue index d4654fa..5394bce 100644 --- a/resources/vue/components/ActiveFilter.vue +++ b/resources/vue/components/ActiveFilter.vue @@ -4,7 +4,7 @@ diff --git a/resources/vue/components/AdminCourses.vue b/resources/vue/components/AdminCourses.vue index 23f9375..d24a900 100644 --- a/resources/vue/components/AdminCourses.vue +++ b/resources/vue/components/AdminCourses.vue @@ -23,7 +23,7 @@ {{ fields[activeField] }} diff --git a/resources/vue/components/ContentModulesControl.vue b/resources/vue/components/ContentModulesControl.vue index f403bdd..34f4125 100644 --- a/resources/vue/components/ContentModulesControl.vue +++ b/resources/vue/components/ContentModulesControl.vue @@ -15,7 +15,7 @@ @click.prevent="toggleModuleVisibility(module)"> + :title="$gettextInterpolate($gettext('Inhaltsmodul %{ name } für Teilnehmende unsichtbar bzw. sichtbar schalten'), { name: module.displayname}, true)"> diff --git a/resources/vue/components/ContentModulesEditTiles.vue b/resources/vue/components/ContentModulesEditTiles.vue index 383c6ab..7407632 100644 --- a/resources/vue/components/ContentModulesEditTiles.vue +++ b/resources/vue/components/ContentModulesEditTiles.vue @@ -35,7 +35,8 @@ $gettext( 'Sortierelement für Werkzeug %{module}. Drücken Sie die Tasten Pfeil-nach-oben oder Pfeil-nach-unten, um dieses Element in der Liste zu verschieben.' ), - { module: module.displayname } + { module: module.displayname }, + true ) " @keydown="keyboardHandler($event, module)" @@ -76,7 +77,8 @@ $gettext( 'Inhaltsmodul %{ name } für Teilnehmende unsichtbar bzw. sichtbar schalten' ), - { name: module.displayname } + { name: module.displayname }, + true ) " > @@ -90,7 +92,8 @@ $gettext( 'Umbenennen des Inhaltsmoduls %{ name }' ), - { name: module.displayname } + { name: module.displayname }, + true ) " > diff --git a/resources/vue/components/ContentmodulesEditTable.vue b/resources/vue/components/ContentmodulesEditTable.vue index 8724a24..0a8a0aa 100644 --- a/resources/vue/components/ContentmodulesEditTable.vue +++ b/resources/vue/components/ContentmodulesEditTable.vue @@ -25,7 +25,8 @@ $gettext( 'Sortierelement für Module %{module}. Drücken Sie die Tasten Pfeil-nach-oben oder Pfeil-nach-unten, um dieses Element in der Liste zu verschieben.' ), - { module: module.displayname } + { module: module.displayname }, + true ) " @keydown="keyboardHandler($event, module)" @@ -71,7 +72,8 @@ $gettext( 'Inhaltsmodul %{ name } für Teilnehmende unsichtbar bzw. sichtbar schalten' ), - { name: module.displayname } + { name: module.displayname }, + true ) " > @@ -83,7 +85,7 @@ :title=" $gettextInterpolate($gettext('Umbenennen des Inhaltsmoduls %{ name }'), { name: module.displayname, - }) + }, true) " > diff --git a/resources/vue/components/EditableList.vue b/resources/vue/components/EditableList.vue index cf1716b..39c32ac 100644 --- a/resources/vue/components/EditableList.vue +++ b/resources/vue/components/EditableList.vue @@ -12,7 +12,7 @@ {{item.name}} - diff --git a/resources/vue/components/FilesTable.vue b/resources/vue/components/FilesTable.vue index 0c9dbda..1e19cc9 100644 --- a/resources/vue/components/FilesTable.vue +++ b/resources/vue/components/FilesTable.vue @@ -132,7 +132,7 @@ > + :title="$gettextInterpolate($gettext('Nach %{ colName } sortieren'), {colName: name}, true)"> {{name}} @@ -170,14 +170,14 @@ + { foldername: folder.name}, true)"> + { foldername: folder.name}, true)"> @@ -228,7 +228,7 @@ :href="file.download_url" target="_blank" rel="noopener noreferrer" :title="$gettextInterpolate($gettext('Datei %{filename} herunterladen'), - { filename: file.name })"> + { filename: file.name }, true)"> @@ -238,14 +238,14 @@ class="lightbox-image" data-lightbox="gallery" :title="$gettextInterpolate($gettext('Datei %{filename} anzeigen'), - { filename: file.name })"> + { filename: file.name }, true)"> + { filename: file.name }, true)"> diff --git a/resources/vue/components/courseware/tasks/CoursewareTasksDialogDistribute.vue b/resources/vue/components/courseware/tasks/CoursewareTasksDialogDistribute.vue index 1e076c7..7680167 100644 --- a/resources/vue/components/courseware/tasks/CoursewareTasksDialogDistribute.vue +++ b/resources/vue/components/courseware/tasks/CoursewareTasksDialogDistribute.vue @@ -179,7 +179,7 @@ :aria-label=" $gettextInterpolate($gettext('%{userName} auswählen'), { userName: user.formattedname, - }) + }, true) " /> @@ -217,7 +217,7 @@ :aria-label=" $gettextInterpolate($gettext('%{groupName} auswählen'), { groupName: group.name, - }) + }, true) " /> diff --git a/resources/vue/components/courseware/tasks/TaskGroupsAddSolversDialog.vue b/resources/vue/components/courseware/tasks/TaskGroupsAddSolversDialog.vue index a843341..d7db6e1 100644 --- a/resources/vue/components/courseware/tasks/TaskGroupsAddSolversDialog.vue +++ b/resources/vue/components/courseware/tasks/TaskGroupsAddSolversDialog.vue @@ -44,7 +44,7 @@ :aria-label=" $gettextInterpolate($gettext('%{userName} auswählen'), { userName: user.formattedname, - }) + }, true) " /> @@ -77,7 +77,7 @@ :aria-label=" $gettextInterpolate($gettext('%{groupName} auswählen'), { groupName: group.name, - }) + }, true) " /> diff --git a/resources/vue/components/courseware/unit/CoursewareUnitItem.vue b/resources/vue/components/courseware/unit/CoursewareUnitItem.vue index f09601e..dc68225 100644 --- a/resources/vue/components/courseware/unit/CoursewareUnitItem.vue +++ b/resources/vue/components/courseware/unit/CoursewareUnitItem.vue @@ -63,7 +63,7 @@ :question=" $gettextInterpolate($gettext('Möchten Sie das Lernmaterial %{ unitTitle } wirklich löschen?'), { unitTitle: title, - }) + }, true) " height="200" @confirm="executeDelete" diff --git a/resources/vue/components/courseware/unit/CoursewareUnitProgress.vue b/resources/vue/components/courseware/unit/CoursewareUnitProgress.vue index 7c9de01..31c6c01 100644 --- a/resources/vue/components/courseware/unit/CoursewareUnitProgress.vue +++ b/resources/vue/components/courseware/unit/CoursewareUnitProgress.vue @@ -17,7 +17,7 @@

{{ selected.name }} diff --git a/resources/vue/components/form_inputs/CalendarPermissionsTable.vue b/resources/vue/components/form_inputs/CalendarPermissionsTable.vue index a0a76a2..e507adc 100644 --- a/resources/vue/components/form_inputs/CalendarPermissionsTable.vue +++ b/resources/vue/components/form_inputs/CalendarPermissionsTable.vue @@ -30,14 +30,16 @@ v-model="user.write_permissions" :aria-label="$gettextInterpolate( $gettext('Schreibzugriff für %{name}'), - {name: user.name} + {name: user.name}, + true )"> diff --git a/resources/vue/components/form_inputs/MyCoursesColouredTable.vue b/resources/vue/components/form_inputs/MyCoursesColouredTable.vue index d2cc2f1..fe67db5 100644 --- a/resources/vue/components/form_inputs/MyCoursesColouredTable.vue +++ b/resources/vue/components/form_inputs/MyCoursesColouredTable.vue @@ -42,7 +42,7 @@ + :title="$gettextInterpolate($gettext('%{course} auswählen'), {course: course.name}, true)"> diff --git a/resources/vue/components/questionnaires/InputArray.vue b/resources/vue/components/questionnaires/InputArray.vue index f57ca58..896418f 100644 --- a/resources/vue/components/questionnaires/InputArray.vue +++ b/resources/vue/components/questionnaires/InputArray.vue @@ -22,7 +22,7 @@ @@ -41,7 +41,7 @@ shape="trash" :size="20" @click.prevent="deleteOption(index)" - :title="$gettextInterpolate($gettext('%{label} löschen'), {label})" + :title="$gettextInterpolate($gettext('%{label} löschen'), {label}, true)" /> @@ -50,7 +50,7 @@ diff --git a/resources/vue/components/tree/StudipTreeList.vue b/resources/vue/components/tree/StudipTreeList.vue index 2ab489c..6214234 100644 --- a/resources/vue/components/tree/StudipTreeList.vue +++ b/resources/vue/components/tree/StudipTreeList.vue @@ -15,7 +15,7 @@ + :title="$gettextInterpolate($gettext('%{name} bearbeiten'), {name: currentNode.attributes.name}, true)"> @@ -36,7 +36,7 @@
  • @@ -92,8 +92,11 @@ + :title="$gettextInterpolate( + $gettext('Zur Veranstaltung %{ title }'), + { title: course.attributes.title }, + true + )">