From 9ebafb475c90728915d67eef967e09edb36b2828 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Thu, 15 Aug 2024 06:53:18 +0000
Subject: [PATCH] show visibility toggle on content modules administration page
 only for courses, fixes #4420

Closes #4420

Merge request studip/studip!3244
---
 app/views/course/contentmodules/index.php            | 5 ++++-
 resources/vue/components/ContentModules.vue          | 1 +
 resources/vue/components/ContentModulesEditTiles.vue | 2 +-
 resources/vue/components/ContentmodulesEditTable.vue | 3 +--
 resources/vue/mixins/ContentModulesMixin.js          | 8 ++++++++
 5 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/app/views/course/contentmodules/index.php b/app/views/course/contentmodules/index.php
index af8f3e1ebaf..443911a7c40 100644
--- a/app/views/course/contentmodules/index.php
+++ b/app/views/course/contentmodules/index.php
@@ -1 +1,4 @@
-<div class="content-modules-vue-app" is="ContentModules"></div>
+<div class="content-modules-vue-app"
+     is="ContentModules"
+     range-type="<?= get_class($sem) ?>"
+></div>
diff --git a/resources/vue/components/ContentModules.vue b/resources/vue/components/ContentModules.vue
index a48dd9d6909..e6164900787 100644
--- a/resources/vue/components/ContentModules.vue
+++ b/resources/vue/components/ContentModules.vue
@@ -36,6 +36,7 @@
         <component :is="displayComponent"
                    :modules="modules"
                    :filtercategory="filterCategory"
+                   :range-type="rangeType"
         ></component>
 
         <MountingPortal mount-to="#tool-view-switch .sidebar-widget-content .widget-list" name="sidebar-switch">
diff --git a/resources/vue/components/ContentModulesEditTiles.vue b/resources/vue/components/ContentModulesEditTiles.vue
index 7407632c40a..ae9324c4e7a 100644
--- a/resources/vue/components/ContentModulesEditTiles.vue
+++ b/resources/vue/components/ContentModulesEditTiles.vue
@@ -61,7 +61,7 @@
                                     href="#"
                                     class="toggle_visibility"
                                     role="checkbox"
-                                    v-if="!module.mandatory"
+                                    v-if="showVisibilityToggle(module)"
                                     :aria-checked="module.visibility !== 'tutor' ? 'true' : 'false'"
                                     @click.prevent="toggleModuleVisibility(module)"
                                 >
diff --git a/resources/vue/components/ContentmodulesEditTable.vue b/resources/vue/components/ContentmodulesEditTable.vue
index 0a8a0aa6f38..39835a7007e 100644
--- a/resources/vue/components/ContentmodulesEditTable.vue
+++ b/resources/vue/components/ContentmodulesEditTable.vue
@@ -59,7 +59,7 @@
                 <td class="actions">
                     <a
                         href="#"
-                        v-if="module.active && !module.mandatory"
+                        v-if="showVisibilityToggle(module)"
                         role="checkbox"
                         :aria-checked="module.visibility !== 'tutor' ? 'true' : 'false'"
                         @click.prevent="toggleModuleVisibility(module)"
@@ -121,7 +121,6 @@ import ContentModulesMixin from '../mixins/ContentModulesMixin.js';
 
 export default {
     name: 'contentmodules-edit-table',
-
     mixins: [ContentModulesMixin],
 };
 </script>
diff --git a/resources/vue/mixins/ContentModulesMixin.js b/resources/vue/mixins/ContentModulesMixin.js
index 86a29ffb52a..b02561d9ee1 100644
--- a/resources/vue/mixins/ContentModulesMixin.js
+++ b/resources/vue/mixins/ContentModulesMixin.js
@@ -5,6 +5,9 @@ export default {
     components: {
         draggable,
     },
+    props: {
+        rangeType: String,
+    },
     data: () => ({
         order: [],
     }),
@@ -132,5 +135,10 @@ export default {
 
             return classes.join(' ');
         },
+        showVisibilityToggle(module) {
+            return this.rangeType !== 'Institute'
+                && module.active
+                && !module.mandatory;
+        }
     },
 };
-- 
GitLab