From 5df90ba506e2ca8f58d5632d1ec102d99bc385f9 Mon Sep 17 00:00:00 2001 From: Thomas Hackl <hackl@data-quest.de> Date: Wed, 9 Oct 2024 08:55:44 +0000 Subject: [PATCH] Resolve "Falscher Fokus im CKEditor bei den Courseware-Zertifikatseinstellungen" Closes #4681 Merge request studip/studip!3483 --- .../unit/CoursewareUnitItemDialogSettings.vue | 243 +++++++++--------- 1 file changed, 124 insertions(+), 119 deletions(-) diff --git a/resources/vue/components/courseware/unit/CoursewareUnitItemDialogSettings.vue b/resources/vue/components/courseware/unit/CoursewareUnitItemDialogSettings.vue index d3534ee9670..14c8d304d93 100644 --- a/resources/vue/components/courseware/unit/CoursewareUnitItemDialogSettings.vue +++ b/resources/vue/components/courseware/unit/CoursewareUnitItemDialogSettings.vue @@ -56,37 +56,39 @@ <studip-tooltip-icon :text="$gettext('Erreicht eine Person in diesem Lernmaterial den ' + 'hier eingestellten Fortschritt, so erhält Sie ein PDF-Zertifikat per E-Mail.')"/> </label> - <label v-if="makeCert"> - <span> - {{ $gettext('Erforderlicher Fortschritt (in Prozent)') }} - </span> - <input type="number" min="1" max="100" v-model="certThreshold"> - </label> - <label v-if="makeCert"> - <span> - {{ $gettext('Bild wählen') }} - </span> - <studip-tooltip-icon :text="$gettext('Wählen Sie hier ein Bild, das auf ' + - 'dem Zertifikat in der linken oberen Ecke in Originalgröße angezeigt wird. Wenn Sie das ' + - 'Bild als Hintergrund des Zertifikats verwenden möchten, muss es nur die passende Größe ' + - 'haben, um die ganze Seite auszufüllen.')"></studip-tooltip-icon> - <courseware-file-chooser :isImage="true" v-model="certImage" @selectFile="updateCertImage" /> - </label> - <label v-if="makeCert" class="col-3"> - <span> - {{ $gettext('Titel') }} - <input type="text" v-model="certTitle"> - </span> - </label> - <label v-if="makeCert"> - <span> - {{ $gettext('Text') }} - <studip-wysiwyg v-model="certText"></studip-wysiwyg> - </span> - </label> - <button v-if="makeCert" type="button" class="button" @click.prevent="previewCertificate"> - {{ $gettext('Vorschau') }} - </button> + <template v-if="makeCert"> + <label> + <span> + {{ $gettext('Erforderlicher Fortschritt (in Prozent)') }} + </span> + <input type="number" min="1" max="100" v-model="certThreshold"> + </label> + <label> + <span> + {{ $gettext('Bild wählen') }} + </span> + <studip-tooltip-icon :text="$gettext('Wählen Sie hier ein Bild, das auf ' + + 'dem Zertifikat in der linken oberen Ecke in Originalgröße angezeigt wird. Wenn Sie das ' + + 'Bild als Hintergrund des Zertifikats verwenden möchten, muss es nur die passende Größe ' + + 'haben, um die ganze Seite auszufüllen.')"></studip-tooltip-icon> + <courseware-file-chooser :isImage="true" v-model="certImage" @selectFile="updateCertImage" /> + </label> + <label> + <span> + {{ $gettext('Titel') }} + <input type="text" v-model="certTitle"> + </span> + </label> + <label for="cert-text"> + <span> + {{ $gettext('Text') }} + </span> + </label> + <studip-wysiwyg v-model="certText" id="cert-text"></studip-wysiwyg> + <button type="button" class="button" @click.prevent="previewCertificate"> + {{ $gettext('Vorschau') }} + </button> + </template> </fieldset> <fieldset v-if="certificatesRemindersEnabled"> <legend> @@ -101,50 +103,51 @@ 'Teilnehmenden verschickt werden, um z.B. an die Bearbeitung dieses Lernmaterials ' + 'zu erinnern.')"/> </label> - - <label v-if="sendReminders"> - <span> - {{ $gettext('Zeitraum zwischen Erinnerungen') }} - </span> - <select v-model="reminderInterval"> - <option value="7"> - {{ $gettext('wöchentlich') }} - </option> - <option value="14"> - {{ $gettext('14-tägig') }} - </option> - <option value="30"> - {{ $gettext('monatlich') }} - </option> - <option value="90"> - {{ $gettext('vierteljährlich') }} - </option> - <option value="180"> - {{ $gettext('halbjährlich') }} - </option> - <option value="365"> - {{ $gettext('jährlich') }} - </option> - </select> - </label> - <label v-if="sendReminders" class="col-3"> - <span> - {{ $gettext('Erstmalige Erinnerung am') }} - <input type="date" v-model="reminderStartDate"> - </span> - </label> - <label v-if="sendReminders" class="col-3"> - <span> - {{ $gettext('Letztmalige Erinnerung am') }} - <input type="date" v-model="reminderEndDate"> - </span> - </label> - <label v-if="sendReminders"> - <span> - {{ $gettext('Text der Erinnerungsmail') }} - <studip-wysiwyg v-model="reminderMailText"></studip-wysiwyg> - </span> - </label> + <template v-if="sendReminders"> + <label> + <span> + {{ $gettext('Zeitraum zwischen Erinnerungen') }} + </span> + <select v-model="reminderInterval"> + <option value="7"> + {{ $gettext('wöchentlich') }} + </option> + <option value="14"> + {{ $gettext('14-tägig') }} + </option> + <option value="30"> + {{ $gettext('monatlich') }} + </option> + <option value="90"> + {{ $gettext('vierteljährlich') }} + </option> + <option value="180"> + {{ $gettext('halbjährlich') }} + </option> + <option value="365"> + {{ $gettext('jährlich') }} + </option> + </select> + </label> + <label class="col-3"> + <span> + {{ $gettext('Erstmalige Erinnerung am') }} + <input type="date" v-model="reminderStartDate"> + </span> + </label> + <label class="col-3"> + <span> + {{ $gettext('Letztmalige Erinnerung am') }} + <input type="date" v-model="reminderEndDate"> + </span> + </label> + <label for="reminder-text"> + <span> + {{ $gettext('Text der Erinnerungsmail') }} + </span> + </label> + <studip-wysiwyg v-model="reminderMailText" id="reminder-text"></studip-wysiwyg> + </template> </fieldset> <fieldset v-if="certificatesRemindersEnabled"> <legend> @@ -158,46 +161,48 @@ <studip-tooltip-icon :text="$gettext('Hier kann eingestellt werden, den Fortschritt ' + 'aller Teilnehmenden periodisch auf 0 zurückzusetzen.')"/> </label> - <label v-if="resetProgress"> - <span> - {{ $gettext('Zeitraum zum Rücksetzen des Fortschritts') }} - </span> - <select v-model="resetProgressInterval"> - <option value="14"> - {{ $gettext('14-tägig') }} - </option> - <option value="30"> - {{ $gettext('monatlich') }} - </option> - <option value="90"> - {{ $gettext('vierteljährlich') }} - </option> - <option value="180"> - {{ $gettext('halbjährlich') }} - </option> - <option value="365"> - {{ $gettext('jährlich') }} - </option> - </select> - </label> - <label v-if="resetProgress" class="col-3"> - <span> - {{ $gettext('Erstmaliges Zurücksetzen am') }} - <input type="date" v-model="resetProgressStartDate"> - </span> - </label> - <label v-if="resetProgress" class="col-3"> - <span> - {{ $gettext('Letztmaliges Zurücksetzen am') }} - <input type="date" v-model="resetProgressEndDate"> - </span> - </label> - <label v-if="resetProgress"> - <span> - {{ $gettext('Text der Rücksetzungsmail') }} - <studip-wysiwyg v-model="resetProgressMailText"></studip-wysiwyg> - </span> - </label> + <template v-if="resetProgress"> + <label> + <span> + {{ $gettext('Zeitraum zum Rücksetzen des Fortschritts') }} + </span> + <select v-model="resetProgressInterval"> + <option value="14"> + {{ $gettext('14-tägig') }} + </option> + <option value="30"> + {{ $gettext('monatlich') }} + </option> + <option value="90"> + {{ $gettext('vierteljährlich') }} + </option> + <option value="180"> + {{ $gettext('halbjährlich') }} + </option> + <option value="365"> + {{ $gettext('jährlich') }} + </option> + </select> + </label> + <label class="col-3"> + <span> + {{ $gettext('Erstmaliges Zurücksetzen am') }} + <input type="date" v-model="resetProgressStartDate"> + </span> + </label> + <label class="col-3"> + <span> + {{ $gettext('Letztmaliges Zurücksetzen am') }} + <input type="date" v-model="resetProgressEndDate"> + </span> + </label> + <label for="reset-text"> + <span> + {{ $gettext('Text der Rücksetzungsmail') }} + </span> + </label> + <studip-wysiwyg v-model="resetProgressMailText" id="reset-text"></studip-wysiwyg> + </template> </fieldset> </form> <studip-progress-indicator v-else :description="$gettext('Lade Einstellungen…')"/> @@ -288,23 +293,23 @@ export default { this.makeCert = typeof(this.certSettings) === 'object' && Object.keys(this.certSettings).length > 0; this.certThreshold = this.certSettings.threshold; - this.certImage = this.certSettings.image; + this.certImage = this.certSettings.image ?? ''; this.certTitle = this.certSettings.title; - this.certText = this.certSettings.text; + this.certText = this.certSettings.text ?? ''; this.reminderSettings = this.currentInstance.attributes['reminder-settings']; this.sendReminders = typeof(this.reminderSettings) === 'object' && Object.keys(this.reminderSettings).length > 0; this.reminderInterval = this.reminderSettings.interval; this.reminderStartDate = this.reminderSettings.startDate; this.reminderEndDate = this.reminderSettings.endDate; - this.reminderMailText = this.reminderSettings.mailText; + this.reminderMailText = this.reminderSettings.mailText ?? ''; this.resetProgressSettings = this.currentInstance.attributes['reset-progress-settings']; this.resetProgress = typeof(this.resetProgressSettings) === 'object' && Object.keys(this.resetProgressSettings).length > 0; this.resetProgressInterval = this.resetProgressSettings.interval; this.resetProgressStartDate = this.resetProgressSettings.startDate; this.resetProgressEndDate = this.resetProgressSettings.endDate; - this.resetProgressMailText = this.resetProgressSettings.mailText; + this.resetProgressMailText = this.resetProgressSettings.mailText ?? ''; }, storeSettings() { this.$emit('close'); -- GitLab