From f47212f848a28a3cc4c62daf9284667edce20de9 Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Sat, 24 Feb 2024 18:58:21 +0100
Subject: [PATCH] Use canEdit in coursebook frontend

---
 .../frontend/components/coursebook.graphql    |  2 ++
 .../documentation/LessonInformation.vue       |  2 +-
 .../documentation/LessonSummary.vue           | 28 +++++++++++++------
 3 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/aleksis/apps/alsijil/frontend/components/coursebook.graphql b/aleksis/apps/alsijil/frontend/components/coursebook.graphql
index a8067e79a..5d7adabf4 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook.graphql
+++ b/aleksis/apps/alsijil/frontend/components/coursebook.graphql
@@ -52,6 +52,8 @@ query documentationsForCoursebook(
     datetimeEnd
     dateStart
     dateEnd
+    canEdit
+    canDelete
   }
 }
 
diff --git a/aleksis/apps/alsijil/frontend/components/documentation/LessonInformation.vue b/aleksis/apps/alsijil/frontend/components/documentation/LessonInformation.vue
index 7ac73d8e5..c438a5575 100644
--- a/aleksis/apps/alsijil/frontend/components/documentation/LessonInformation.vue
+++ b/aleksis/apps/alsijil/frontend/components/documentation/LessonInformation.vue
@@ -7,7 +7,7 @@
       v-if="documentation.subject"
       :subject="documentation.subject"
       class="ms-2"
-      append-icon="$edit"
+      :append-icon="documentation.canEdit ? '$edit' : undefined"
     />
   </v-card-text>
 </template>
diff --git a/aleksis/apps/alsijil/frontend/components/documentation/LessonSummary.vue b/aleksis/apps/alsijil/frontend/components/documentation/LessonSummary.vue
index 69126f6f1..86c5e39dd 100644
--- a/aleksis/apps/alsijil/frontend/components/documentation/LessonSummary.vue
+++ b/aleksis/apps/alsijil/frontend/components/documentation/LessonSummary.vue
@@ -16,6 +16,7 @@
         @focusout="save"
         @keydown.enter="saveAndBlur"
         :loading="loading"
+        :disabled="!documentation.canEdit"
       />
       <div class="d-flex flex-column align-start">
         <v-chip
@@ -29,10 +30,7 @@
               ? $t("alsijil.coursebook.summary.homework.value", documentation)
               : $t("alsijil.coursebook.summary.homework.empty")
           }}</span>
-          <v-icon right v-if="documentation.homework"
-            >mdi-book-edit-outline</v-icon
-          >
-          <v-icon right v-else>mdi-book-plus-outline</v-icon>
+          <v-icon right>{{ homeworkIcon }}</v-icon>
         </v-chip>
         <v-chip
           :outlined="!documentation.groupNote"
@@ -47,10 +45,7 @@
                 })
               : $t("alsijil.coursebook.summary.group_note.empty")
           }}</span>
-          <v-icon right v-if="documentation.groupNote"
-            >mdi-note-edit-outline</v-icon
-          >
-          <v-icon right v-else>mdi-note-plus-outline</v-icon>
+          <v-icon right>{{ groupNoteIcon }}</v-icon>
         </v-chip>
       </div>
     </div>
@@ -62,6 +57,7 @@
       :label="$t('alsijil.coursebook.summary.topic')"
       :value="documentation.topic"
       @input="topic = $event"
+      :disabled="!documentation.canEdit"
     />
     <v-textarea
       filled
@@ -70,6 +66,7 @@
       :label="$t('alsijil.coursebook.summary.homework.label')"
       :value="documentation.homework"
       @input="homework = $event"
+      :disabled="!documentation.canEdit"
     />
     <v-textarea
       filled
@@ -78,6 +75,7 @@
       :label="$t('alsijil.coursebook.summary.group_note.label')"
       :value="documentation.groupNote"
       @input="groupNote = $event"
+      :disabled="!documentation.canEdit"
     />
   </v-card-text>
 </template>
@@ -154,6 +152,20 @@ export default {
       event.target.blur();
     },
   },
+  computed: {
+    homeworkIcon() {
+      if (this.documentation.homework) {
+        return this.documentation.canEdit ? "mdi-book-edit-outline" : "mdi-book-alert-outline";
+      }
+      return this.documentation.canEdit ? "mdi-book-plus-outline" : "mdi-book-off-outline";
+    },
+    groupNoteIcon() {
+      if (this.documentation.groupNote) {
+        return this.documentation.canEdit ? "mdi-note-edit-outline" : "mdi-note-alert-outline";
+      }
+      return this.documentation.canEdit ? "mdi-note-plus-outline" : "mdi-note-off-outline";
+    },
+  },
 };
 </script>
 
-- 
GitLab