From a77056f61db8de69f8f57fdddaf77b34c78bb0f3 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sat, 7 Dec 2024 13:53:10 +0100
Subject: [PATCH] Add validation to coursebook print dialog

---
 .../frontend/components/coursebook/Coursebook.vue    |  4 +---
 .../components/coursebook/CoursebookPrintDialog.vue  | 12 +++++++++++-
 aleksis/apps/alsijil/frontend/messages/de.json       |  4 ++--
 aleksis/apps/alsijil/frontend/messages/en.json       |  4 ++--
 4 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
index a9080da16..008014734 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
@@ -69,9 +69,7 @@
         <DocumentationLoader />
       </template>
     </infinite-scrolling-date-sorted-c-r-u-d-iterator>
-    <absence-creation-dialog
-      :absence-reasons="absenceReasons"
-    />
+    <absence-creation-dialog :absence-reasons="absenceReasons" />
   </div>
 </template>
 
diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue
index 8f048056c..9b121aa01 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue
@@ -68,6 +68,7 @@ import CancelButton from "aleksis.core/components/generic/buttons/CancelButton.v
       <primary-action-button
         i18n-key="alsijil.coursebook.print.button"
         icon-text="$print"
+        :disabled="!valid"
         @click="print"
       />
     </template>
@@ -94,7 +95,7 @@ export default {
     value: {
       type: Array,
       required: false,
-      default: [],
+      default: () => [],
     },
     /**
      * Loading state
@@ -126,6 +127,15 @@ export default {
         return this.currentGroupSelection;
       }
     },
+    valid() {
+      return (
+        this.currentGroupSelection.length > 0 &&
+        (this.includeMembersTable ||
+          this.includeTeachersAndSubjectsTable ||
+          this.includePersonOverviews ||
+          this.includeCoursebook)
+      );
+    },
   },
   methods: {
     setGroupSelection(groups) {
diff --git a/aleksis/apps/alsijil/frontend/messages/de.json b/aleksis/apps/alsijil/frontend/messages/de.json
index 3a34a352a..872b2e075 100644
--- a/aleksis/apps/alsijil/frontend/messages/de.json
+++ b/aleksis/apps/alsijil/frontend/messages/de.json
@@ -103,8 +103,8 @@
       "print": {
         "button": "Drucken",
         "title": "Kursbuchausdruck",
-        "groups": "Drucke Gruppen:",
-        "include": "Drucke Abschnitte:",
+        "groups": "Gruppen",
+        "include": "Abschnitte",
         "include_cover": "Deckblatt",
         "include_abbreviations": "Abkürzungen",
         "include_members_table": "Tabelle aller Gruppenmitglieder mit Statistiken",
diff --git a/aleksis/apps/alsijil/frontend/messages/en.json b/aleksis/apps/alsijil/frontend/messages/en.json
index 4b273e3a7..2294349f2 100644
--- a/aleksis/apps/alsijil/frontend/messages/en.json
+++ b/aleksis/apps/alsijil/frontend/messages/en.json
@@ -133,8 +133,8 @@
       "print": {
         "button": "Print",
         "title": "Print Coursebook",
-        "groups": "Groups to print:",
-        "include": "Parts to print:",
+        "groups": "Groups",
+        "include": "Parts to include",
         "include_cover": "Cover",
         "include_abbreviations": "Abbreviations",
         "include_members_table": "Members Table",
-- 
GitLab