diff --git a/app/views/questionnaire/edit.php b/app/views/questionnaire/edit.php index df3677bd45b8830c88395844ee7653da106765bd..8e4d22d689c2fbbd4acbffd8405c45686434bbd5 100644 --- a/app/views/questionnaire/edit.php +++ b/app/views/questionnaire/edit.php @@ -57,6 +57,31 @@ foreach ($questionnaire->questions as $question) { <div class="editor"> <div class="rightside" aria-live="polite" tabindex="0" ref="rightside"> <div class="admin" v-if="activeTab === 'admin'"> + + <article aria-live="assertive" + class="validation_notes studip"> + <header> + <h1> + <?= Icon::create('info-circle', Icon::ROLE_INFO)->asImg(17, ['class' => "text-bottom validation_notes_icon"]) ?> + <?= _('Hinweise zum Ausfüllen des Formulars') ?> + </h1> + </header> + <div class="required_note"> + <div aria-hidden="true"> + <?= _('Pflichtfelder sind mit Sternchen gekennzeichnet.') ?> + </div> + <div class="sr-only"> + <?= _('Dieses Formular enthält Pflichtfelder.') ?> + </div> + </div> + <div v-if="validationNotice && !data.title"> + <?= _('Folgende Angaben müssen korrigiert werden, um das Formular abschicken zu können:') ?> + <ul> + <li aria-describedby="questionnaire_title"><?= _('Titel des Fragebogens') ?></li> + </ul> + </div> + </article> + <div class="formpart"> <label class="studiprequired" for="questionnaire_title"> <span class="textlabel"><?= _('Titel des Fragebogens') ?></span> diff --git a/resources/assets/javascripts/lib/questionnaire.js b/resources/assets/javascripts/lib/questionnaire.js index 20c356c6d23de9b9254e4f35e8b0ac46b79e1fd7..e9c908dc9569080d70b31096a41681165825b044 100644 --- a/resources/assets/javascripts/lib/questionnaire.js +++ b/resources/assets/javascripts/lib/questionnaire.js @@ -43,7 +43,8 @@ const Questionnaire = { range_type: $(form).data('range_type'), range_id: $(form).data('range_id'), editInternalName: null, - tempInternalName: '' + tempInternalName: '', + validationNotice: false }; }, methods: { @@ -58,6 +59,11 @@ const Questionnaire = { this.activeTab = id; }, submit: function () { + if (!this.data.title) { + this.switchTab('admin'); + this.validationNotice = true; + return; + } let data = { title: this.data.title, copyable: this.data.copyable,