From abf2bce46875fc413d290a4d81559477063f28ee Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Mon, 14 Oct 2024 15:13:45 +0200
Subject: [PATCH] Link to coursebook and absences book on group overview page

---
 .../group_actions/OpenCoursebook.vue          | 30 +++++++++++++++++++
 .../group_actions/ShowAbsences.vue            | 30 +++++++++++++++++++
 aleksis/apps/alsijil/frontend/index.js        | 17 +++++++++++
 .../apps/alsijil/frontend/messages/en.json    |  4 ++-
 4 files changed, 80 insertions(+), 1 deletion(-)
 create mode 100644 aleksis/apps/alsijil/frontend/components/injectables/group_actions/OpenCoursebook.vue
 create mode 100644 aleksis/apps/alsijil/frontend/components/injectables/group_actions/ShowAbsences.vue

diff --git a/aleksis/apps/alsijil/frontend/components/injectables/group_actions/OpenCoursebook.vue b/aleksis/apps/alsijil/frontend/components/injectables/group_actions/OpenCoursebook.vue
new file mode 100644
index 000000000..c52dedfc1
--- /dev/null
+++ b/aleksis/apps/alsijil/frontend/components/injectables/group_actions/OpenCoursebook.vue
@@ -0,0 +1,30 @@
+<script>
+import groupActionsMixin from "aleksis.core/components/group/actions/groupActionsMixin.js";
+export default {
+  name: "OpenCoursebook",
+  mixins: [groupActionsMixin],
+};
+</script>
+
+<template>
+  <v-list-item
+    :to="{
+      name: 'alsijil.coursebook',
+      params: {
+        filterType: 'all',
+        pageType: 'documentations',
+        objType: 'group',
+        objId: group.id,
+      },
+    }"
+  >
+    <v-list-item-icon>
+      <v-icon>mdi-book-education-outline</v-icon>
+    </v-list-item-icon>
+    <v-list-item-content>
+      <v-list-item-title>
+        {{ $t("actions.open_in_coursebook") }}
+      </v-list-item-title>
+    </v-list-item-content>
+  </v-list-item>
+</template>
diff --git a/aleksis/apps/alsijil/frontend/components/injectables/group_actions/ShowAbsences.vue b/aleksis/apps/alsijil/frontend/components/injectables/group_actions/ShowAbsences.vue
new file mode 100644
index 000000000..e582968e3
--- /dev/null
+++ b/aleksis/apps/alsijil/frontend/components/injectables/group_actions/ShowAbsences.vue
@@ -0,0 +1,30 @@
+<script>
+import groupActionsMixin from "aleksis.core/components/group/actions/groupActionsMixin.js";
+export default {
+  name: "ShowAbsences",
+  mixins: [groupActionsMixin],
+};
+</script>
+
+<template>
+  <v-list-item
+    :to="{
+      name: 'alsijil.coursebook',
+      params: {
+        filterType: 'all',
+        pageType: 'absences',
+        objType: 'group',
+        objId: group.id,
+      },
+    }"
+  >
+    <v-list-item-icon>
+      <v-icon>mdi-account-details-outline</v-icon>
+    </v-list-item-icon>
+    <v-list-item-content>
+      <v-list-item-title>
+        {{ $t("actions.show_absences") }}
+      </v-list-item-title>
+    </v-list-item-content>
+  </v-list-item>
+</template>
diff --git a/aleksis/apps/alsijil/frontend/index.js b/aleksis/apps/alsijil/frontend/index.js
index 37bde1e72..4945f0b98 100644
--- a/aleksis/apps/alsijil/frontend/index.js
+++ b/aleksis/apps/alsijil/frontend/index.js
@@ -1,6 +1,23 @@
 import { hasPersonValidator } from "aleksis.core/routeValidators";
 import { DateTime } from "luxon";
 
+export const collectionItems = {
+  coreGroupActions: [
+    {
+      key: "alsijil-open-coursebook",
+      component: () =>
+        import("./components/injectables/group_actions/OpenCoursebook.vue"),
+      isActive: () => true,
+    },
+    {
+      key: "alsijil-show-absences",
+      component: () =>
+        import("./components/injectables/group_actions/ShowAbsences.vue"),
+      isActive: () => true,
+    },
+  ],
+};
+
 export default {
   meta: {
     inMenu: true,
diff --git a/aleksis/apps/alsijil/frontend/messages/en.json b/aleksis/apps/alsijil/frontend/messages/en.json
index 13baa9af4..34dff10f5 100644
--- a/aleksis/apps/alsijil/frontend/messages/en.json
+++ b/aleksis/apps/alsijil/frontend/messages/en.json
@@ -140,7 +140,9 @@
   },
   "actions": {
     "back_to_overview": "Back to overview",
-    "open_person_page": "Open detail view for {fullName}"
+    "open_person_page": "Open detail view for {fullName}",
+    "open_in_coursebook": "View Coursebook",
+    "show_absences": "Open absence list"
   },
   "time": {
     "minutes": "minutes",
-- 
GitLab