<template> <div class="cw-tools cw-tools-admin"> <form class="default" @submit.prevent=""> <fieldset> <legend>{{ $gettext('Allgemeine Einstellungen') }}</legend> <label> <span>{{ $gettext('Art der Inhaltsabfolge') }}</span> <select class="size-s" v-model="currentProgression"> <option value="0">{{ $gettext('Frei') }}</option> <option value="1">{{ $gettext('Sequentiell') }}</option> </select> </label> <label> <span>{{ $gettext('Editierberechtigung für Tutor/-innen') }}</span> <select class="size-s" v-model="currentPermissionLevel"> <option value="dozent">{{ $gettext('Nein') }}</option> <option value="tutor">{{ $gettext('Ja') }}</option> </select> </label> </fieldset> <fieldset> <legend> {{ $gettext('Zertifikate') }} </legend> <label> <input type="checkbox" name="makecert" v-model="makeCert"> <span> {{ $gettext('Zertifikat bei Erreichen einer Fortschrittsgrenze versenden') }} </span> <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), um ein Zertifikat zu erhalten') }} </span> <input type="number" min="1" max="100" name="threshold" v-model="certThreshold"> </label> <label v-if="makeCert"> <span> {{ $gettext('Hintergrundbild des Zertifikats wählen') }} </span> <courseware-file-chooser :isImage="true" v-model="certImage" @selectFile="updateCertImage"></courseware-file-chooser> </label> </fieldset> <fieldset> <legend> {{ $gettext('Erinnerungen') }} </legend> <label> <input type="checkbox" name="sendreminders" v-model="sendReminders"> <span> {{ $gettext('Erinnerungsnachrichten an alle Teilnehmenden schicken') }} </span> <studip-tooltip-icon :text="$gettext('Hier können periodisch Nachrichten an alle ' + '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 name="reminder_interval" 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" name="reminder_start_date" v-model="reminderStartDate"> </span> </label> <label v-if="sendReminders" class="col-3"> <span> {{ $gettext('Letztmalige Erinnerung am') }} <input type="date" name="reminder_end_date" v-model="reminderEndDate"> </span> </label> <label v-if="sendReminders"> <span> {{ $gettext('Text der Erinnerungsmail') }} <textarea cols="70" rows="4" name="reminder_mail_text" data-editor="minimal" v-model="reminderMailText"></textarea> </span> </label> </fieldset> <fieldset> <legend> {{ $gettext('Fortschritt') }} </legend> <label> <input type="checkbox" name="resetprogress" v-model="resetProgress"> <span> {{ $gettext('Fortschritt periodisch auf 0 zurücksetzen') }} </span> <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 name="reset_progress_interval" 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" dataformatas="" name="reset_progress_start_date" v-model="resetProgressStartDate"> </span> </label> <label v-if="resetProgress" class="col-3"> <span> {{ $gettext('Letztmaliges Zurücksetzen am') }} <input type="date" name="reset_progress_end_date" v-model="resetProgressEndDate"> </span> </label> <label v-if="resetProgress"> <span> {{ $gettext('Text der Rücksetzungsmail') }} <textarea cols="70" rows="4" name="reset_progress_mail_text" data-editor="minimal" v-model="resetProgressMailText"></textarea> </span> </label> </fieldset> </form> <button class="button" @click="store">{{ $gettext('Übernehmen') }}</button> </div> </template> <script> import { mapActions, mapGetters } from 'vuex'; import CoursewareFileChooser from "./CoursewareFileChooser.vue"; import StudipTooltipIcon from '../StudipTooltipIcon.vue'; export default { name: 'cw-tools-admin', components: { StudipTooltipIcon, CoursewareFileChooser }, data() { return { currentPermissionLevel: '', currentProgression: '', makeCert: false, certThreshold: 0, certImage: '', sendReminders: false, reminderInterval: 7, reminderStartDate: '', reminderEndDate: '', reminderMailText: '', resetProgress: false, resetProgressInterval: 180, resetProgressStartDate: '', resetProgressEndDate: '', resetProgressMailText: '' }; }, computed: { ...mapGetters({ courseware: 'courseware', }), }, methods: { ...mapActions({ storeCoursewareSettings: 'storeCoursewareSettings', companionSuccess: 'companionSuccess', }), initData() { console.log(this.courseware.attributes); this.currentPermissionLevel = this.courseware.attributes['editing-permission-level']; this.currentProgression = this.courseware.attributes['sequential-progression'] ? '1' : '0'; this.certSettings = this.courseware.attributes['certificate-settings']; this.makeCert = typeof(this.certSettings) === 'object' && Object.keys(this.certSettings).length > 0; this.certThreshold = this.certSettings.threshold; this.certImage = this.certSettings.image; this.reminderSettings = this.courseware.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.resetProgressSettings = this.courseware.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; }, store() { this.companionSuccess({ info: this.$gettext('Die Einstellungen wurden übernommen.'), }) this.storeCoursewareSettings({ permission: this.currentPermissionLevel, progression: this.currentProgression, certificateSettings: this.generateCertificateSettings(), reminderSettings: this.generateReminderSettings(), resetProgressSettings: this.generateResetProgressSettings() }); }, generateCertificateSettings() { return this.makeCert ? { threshold: this.certThreshold, image: this.certImage } : {}; }, generateReminderSettings() { return this.sendReminders ? { interval: this.reminderInterval, startDate: this.reminderStartDate, endDate: this.reminderEndDate, mailText: this.reminderMailText } : {}; }, generateResetProgressSettings() { return this.resetProgress ? { interval: this.resetProgressInterval, startDate: this.resetProgressStartDate, endDate: this.resetProgressEndDate, mailText: this.resetProgressMailText } : {}; }, updateCertImage(file) { this.certImage = file.id; } }, mounted() { this.initData(); }, }; </script>