From 226ce75259541dc2e62823a037699d057a090297 Mon Sep 17 00:00:00 2001 From: Viktoria Wiebe <vwiebe@uni-osnabrueck.de> Date: Wed, 4 Sep 2024 08:59:03 +0000 Subject: [PATCH] =?UTF-8?q?Courseware:=20Datum=20bei=20Verl=C3=A4ngerung?= =?UTF-8?q?=20von=20Aufgaben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2553 Merge request studip/studip!3335 --- .../courseware/layouts/CoursewareDateInput.vue | 11 +++++++++-- .../courseware/tasks/PagesTaskGroupsShow.vue | 2 +- .../vue/components/courseware/tasks/RenewalDialog.vue | 8 ++++---- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/resources/vue/components/courseware/layouts/CoursewareDateInput.vue b/resources/vue/components/courseware/layouts/CoursewareDateInput.vue index 57a5619fbee..773aa62fa1e 100644 --- a/resources/vue/components/courseware/layouts/CoursewareDateInput.vue +++ b/resources/vue/components/courseware/layouts/CoursewareDateInput.vue @@ -1,5 +1,5 @@ <template> - <input :value="formattedDate" @input="onInput" type="date" /> + <input :value="formattedDate" @input="onInput" type="date" :min="formattedMinDate" /> </template> <script> @@ -8,14 +8,18 @@ const toISO8601 = (date) => date.toISOString(); const pad = (what, length = 2) => `00000000${what}`.substr(-length); export default { - props: ['value'], + props: ['value', 'min'], data: () => ({ date: new Date(), + submissionDate: new Date() }), computed: { formattedDate() { return `${this.date.getFullYear()}-${pad(this.date.getMonth() + 1)}-${pad(this.date.getDate())}`; }, + formattedMinDate() { + return `${this.submissionDate.getFullYear()}-${pad(this.submissionDate.getMonth() + 1)}-${pad(this.submissionDate.getDate())}`; + } }, methods: { onInput({ target }) { @@ -29,6 +33,9 @@ export default { if (this.value) { this.date = fromISO8601(this.value); } + if (this.min) { + this.submissionDate = fromISO8601(this.min); + } }, }; </script> diff --git a/resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue b/resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue index e17d18e60a4..c75ab4b87f3 100644 --- a/resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue +++ b/resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue @@ -50,8 +50,8 @@ <RenewalDialog v-if="renewalTask" - :renewalDate="renewalDate" :renewalState="renewalTask.attributes.renewal" + :submissionDate="renewalTask.attributes['submission-date']" @update="updateRenewal" @close="closeDialogs" /> diff --git a/resources/vue/components/courseware/tasks/RenewalDialog.vue b/resources/vue/components/courseware/tasks/RenewalDialog.vue index f08719e22d2..671f1b9c969 100644 --- a/resources/vue/components/courseware/tasks/RenewalDialog.vue +++ b/resources/vue/components/courseware/tasks/RenewalDialog.vue @@ -24,7 +24,7 @@ </label> <label v-if="state === 'granted'"> {{ $gettext('neue Frist') }} - <DateInput v-model="date" class="size-l" /> + <DateInput v-model="date" class="size-l" :min="submissionDate" /> </label> </form> </template> @@ -34,7 +34,7 @@ <script> import DateInput from '../layouts/CoursewareDateInput.vue'; export default { - props: ['renewalDate', 'renewalState'], + props: ['renewalState', 'submissionDate'], components: { DateInput, }, @@ -44,7 +44,7 @@ export default { }), methods: { resetLocalVars() { - this.date = this.renewalDate ?? null; + this.date = this.submissionDate ?? null; this.state = this.renewalState; }, updateRenewal() { @@ -64,7 +64,7 @@ export default { this.resetLocalVars(); }, watch: { - renewalDate(newValue) { + submissionDate(newValue) { if (newValue !== this.date) { this.resetLocalVars(); } -- GitLab