From 8d2f9ec3486eeb148b1e67d9bc9e00ff83c482cc Mon Sep 17 00:00:00 2001
From: Rasmus Fuhse <fuhse@data-quest.de>
Date: Mon, 2 Jan 2023 09:49:00 +0000
Subject: [PATCH] =?UTF-8?q?Resolve=20"Fragebogen=20Validierung=20wird=20ni?=
 =?UTF-8?q?cht=20ausgef=C3=BChrt"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #1963

Merge request studip/studip!1275
---
 app/views/questionnaire/edit.php              | 25 +++++++++++++++++++
 .../assets/javascripts/lib/questionnaire.js   |  8 +++++-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/app/views/questionnaire/edit.php b/app/views/questionnaire/edit.php
index df3677bd45b..8e4d22d689c 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 20c356c6d23..e9c908dc956 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,
-- 
GitLab