diff options
| author | Finn Schneider <schneider@data-quest.de> | 2026-02-23 15:29:40 +0100 |
|---|---|---|
| committer | Finn Schneider <schneider@data-quest.de> | 2026-03-13 17:25:01 +0000 |
| commit | 270280accaf5d54cccafabe03096a8ab8051c051 (patch) | |
| tree | 485da531276d2e1bd005562947fcc8f60208359c | |
| parent | 7465d7609ba2d31643a240a5261f63f0e2f7ce06 (diff) | |
template editor changes
| -rw-r--r-- | app/controllers/questionnaire.php | 4 | ||||
| -rw-r--r-- | app/views/evaluation/pool/index.php | 3 | ||||
| -rw-r--r-- | app/views/questionnaire/edit.php | 2 | ||||
| -rw-r--r-- | resources/vue/apps/questionnaires/QuestionnaireEditor.vue | 62 |
4 files changed, 41 insertions, 30 deletions
diff --git a/app/controllers/questionnaire.php b/app/controllers/questionnaire.php index d85d279..019e22f 100644 --- a/app/controllers/questionnaire.php +++ b/app/controllers/questionnaire.php @@ -172,6 +172,10 @@ class QuestionnaireController extends AuthenticatedController $this->questionnaire['stopdate'] = is_numeric($questionnaire_data['stopdate']) ? $questionnaire_data['stopdate'] : null; + $this->questionnaire['is_template'] = $questionnaire_data['is_template'] ?? 0; + if(!$this->questionnaire->template_is_enabled && $this->questionnaire->is_template) { + $this->questionnaire['template_is_enabled'] = 0; + } $this->questionnaire['user_id'] = User::findCurrent()->id; $questions_data = json_decode(Request::get('questions_data'), true); diff --git a/app/views/evaluation/pool/index.php b/app/views/evaluation/pool/index.php index a6c9784..6eb2e7d 100644 --- a/app/views/evaluation/pool/index.php +++ b/app/views/evaluation/pool/index.php @@ -33,7 +33,8 @@ use Studip\Button; </td> <td> <?php if ($template->isEditable()) : ?> - <a href="<?= $controller->link_for('questionnaire/edit/' . $template->id) ?>" + <a href="<?= $controller->link_for('questionnaire/edit/' . $template->id, + ['range_type' => 'pool']) ?>" data-dialog="size=big"> <?= htmlReady($template->title) ?> </a> diff --git a/app/views/questionnaire/edit.php b/app/views/questionnaire/edit.php index cd73fbc..44cd113 100644 --- a/app/views/questionnaire/edit.php +++ b/app/views/questionnaire/edit.php @@ -24,6 +24,7 @@ foreach (get_declared_classes() as $class) { } } +$is_template = Request::get('range_type') == 'pool'; $questionnaire_data = [ 'anonymous' => $questionnaire->anonymous, 'copyable' => $questionnaire->copyable, @@ -41,6 +42,7 @@ $questionnaire_data = [ 'startdate' => $questionnaire->isNew() ? _('sofort') : $questionnaire->startdate, 'stopdate' => $questionnaire->stopdate, 'title' => $questionnaire->title, + 'is_template' => $is_template ? 1 : $questionnaire->is_template, ]; ?> <?= Studip\VueApp::create('questionnaires/QuestionnaireEditor') diff --git a/resources/vue/apps/questionnaires/QuestionnaireEditor.vue b/resources/vue/apps/questionnaires/QuestionnaireEditor.vue index 26b2f32..56ac09e 100644 --- a/resources/vue/apps/questionnaires/QuestionnaireEditor.vue +++ b/resources/vue/apps/questionnaires/QuestionnaireEditor.vue @@ -36,43 +36,46 @@ <div class="formpart"> <label class="studiprequired" for="questionnaire_title"> - <span class="textlabel">{{ $gettext('Titel des Fragebogens') }}</span> + <span v-if="data.is_template !== 1" class="textlabel">{{$gettext('Titel des Fragebogens') }}</span> + <span v-else class="textlabel">{{$gettext('Titel der Vorlage') }}</span> <span title="Dies ist ein Pflichtfeld" aria-hidden="true" class="asterisk">*</span> </label> <input type="text" id="questionnaire_title" v-model="data.title" v-autofocus> </div> - <div class="hgroup"> + <template v-if="data.is_template !== 1"> + <div class="hgroup"> + <label> + {{ $gettext('Startzeitpunkt') }} + <datetimepicker v-model="data.startdate"></datetimepicker> + </label> + <label> + {{ $gettext('Endzeitpunkt') }} + <datetimepicker v-model="data.stopdate"></datetimepicker> + </label> + </div> <label> - {{ $gettext('Startzeitpunkt') }} - <datetimepicker v-model="data.startdate"></datetimepicker> + <input type="checkbox" v-model="data.copyable" true-value="1" false-value="0"> + {{ $gettext('Fragebogen zum Kopieren freigeben') }} </label> <label> - {{ $gettext('Endzeitpunkt') }} - <datetimepicker v-model="data.stopdate"></datetimepicker> + <input type="checkbox" v-model="data.anonymous" true-value="1" false-value="0"> + {{ $gettext('Teilnehmende anonymisieren') }} </label> - </div> - <label> - <input type="checkbox" v-model="data.copyable" true-value="1" false-value="0"> - {{ $gettext('Fragebogen zum Kopieren freigeben') }} - </label> - <label> - <input type="checkbox" v-model="data.anonymous" true-value="1" false-value="0"> - {{ $gettext('Teilnehmende anonymisieren') }} - </label> - <label> - <input type="checkbox" v-model="data.editanswers" true-value="1" false-value="0"> - {{ $gettext('Teilnehmende dürfen ihre Antworten revidieren') }} - </label> - <label> - {{ $gettext('Ergebnisse einsehbar') }} - <select v-model="data.resultvisibility"> - <option value="always">{{ $gettext('Immer') }}</option> - <option value="afterending">{{ $gettext('Nach Ende der Befragung') }}</option> - <option value="afterparticipation">{{ $gettext('Nach der Teilnahme') }}</option> - <option value="never">{{ $gettext('Niemals') }}</option> - </select> - </label> + <label> + <input type="checkbox" v-model="data.editanswers" true-value="1" false-value="0"> + {{ $gettext('Teilnehmende dürfen ihre Antworten revidieren') }} + </label> + <label> + {{ $gettext('Ergebnisse einsehbar') }} + <select v-model="data.resultvisibility"> + <option value="always">{{ $gettext('Immer') }}</option> + <option value="afterending">{{ $gettext('Nach Ende der Befragung') }}</option> + <option value="afterparticipation">{{ $gettext('Nach der Teilnahme') }}</option> + <option value="never">{{ $gettext('Niemals') }}</option> + </select> + </label> + </template> </div> <div class="add_question file_select_possibilities" v-else-if="activeTab === 'add_question'"> <div> @@ -240,7 +243,8 @@ export default { editanswers: this.data.editanswers, startdate: this.data.startdate, stopdate: this.data.stopdate, - resultvisibility: this.data.resultvisibility + resultvisibility: this.data.resultvisibility, + is_template: this.data.is_template }; const questions = this.data.questions.map(question => ({ id: question.id, |
