From 8aadf65cc3ce6a170ea4c5f6711ef98aa2c63230 Mon Sep 17 00:00:00 2001 From: Moritz Weinmann Date: Mon, 29 Jun 2026 10:07:25 +0200 Subject: [PATCH] =?UTF-8?q?feat(einricht):=20Verkn=C3=BCpfte=20Einrichtung?= =?UTF-8?q?en=20bei=20Mehrfachauswahl=20automatisch=20mitselektieren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn eine Einrichtung mit hinterlegten Links ausgewählt wird, werden alle verknüpften Einrichtungen (aus organigramm_einricht_link) automatisch mitausgewählt. Gilt für alle 5 Einrichtungs-Multiselects (3× Semantic UI Dropdown, 2× Tagify). Co-Authored-By: Claude Sonnet 4.6 --- module/collection/edit_collection.inc.php | 38 +++++++++++++++++-- module/knowledgecenter/knowledge.inc.php | 38 +++++++++++++++++-- .../Views/categories_cardform.php | 18 +++++++++ .../Views/post_cardform_settings.php | 18 +++++++++ mysyde/admin/edit_main_navigation.inc.php | 36 +++++++++++++++++- 5 files changed, 140 insertions(+), 8 deletions(-) diff --git a/module/collection/edit_collection.inc.php b/module/collection/edit_collection.inc.php index 40439df..b30c6b2 100644 --- a/module/collection/edit_collection.inc.php +++ b/module/collection/edit_collection.inc.php @@ -2893,18 +2893,50 @@ function multi_select_permission($collection_id, $type){ + + ; + tagifyEinrichts.on('add', function(e) { + var addedId = String(e.detail.data.value); + (einrichtLinks[addedId] || []).forEach(function(lid) { + var exists = tagifyEinrichts.value.some(function(t) { return String(t.value) === lid; }); + if (!exists) { + var item = einrichtsData.find(function(d) { return String(d.value) === lid; }); + if (item) tagifyEinrichts.addTags([item]); + } + }); + }); var tagifyFachbereiche = new Tagify(document.getElementById('selected_fachbereiche'), { whitelist: fachbereicheData, diff --git a/module/knowledgecenter_update/Views/post_cardform_settings.php b/module/knowledgecenter_update/Views/post_cardform_settings.php index dc475be..305a207 100644 --- a/module/knowledgecenter_update/Views/post_cardform_settings.php +++ b/module/knowledgecenter_update/Views/post_cardform_settings.php @@ -136,6 +136,13 @@ $result = mysqli_query($GLOBALS['mysql_con'], $query); while ($row = mysqli_fetch_assoc($result)) { $postEinrichtsData[] = ['value' => $row['id'], 'name' => $row['description']]; } + +// Verknüpfungskarte für Einrichtungen (Gruppen → Mitglieder) +$postEinrichtLinks = []; +$linkRes = mysqli_query($GLOBALS['mysql_con'], "SELECT einricht_id, linked_einricht_id FROM organigramm_einricht_link"); +while ($lr = mysqli_fetch_assoc($linkRes)) { + $postEinrichtLinks[strval($lr['einricht_id'])][] = strval($lr['linked_einricht_id']); +} $selectedPostEinrichts = []; if ($postId != 0) { $querySelected = "SELECT e.id, e.description @@ -409,6 +416,17 @@ if (!empty($post['text_color'])) { if (selectedPostEinrichts.length) { tagifyPostEinrichts.addTags(selectedPostEinrichts); } + var postEinrichtLinks = ; + tagifyPostEinrichts.on('add', function(e) { + var addedId = String(e.detail.data.value); + (postEinrichtLinks[addedId] || []).forEach(function(lid) { + var exists = tagifyPostEinrichts.value.some(function(t) { return String(t.value) === lid; }); + if (!exists) { + var item = postEinrichtsData.find(function(d) { return String(d.value) === lid; }); + if (item) tagifyPostEinrichts.addTags([item]); + } + }); + }); // Fachbereiche für Post var tagifyPostFachbereiche = new Tagify(document.getElementById('postFachbereichTags'), { diff --git a/mysyde/admin/edit_main_navigation.inc.php b/mysyde/admin/edit_main_navigation.inc.php index bb9f778..f0868f4 100644 --- a/mysyde/admin/edit_main_navigation.inc.php +++ b/mysyde/admin/edit_main_navigation.inc.php @@ -747,13 +747,45 @@ function multi_select_permission($navigation_id, $type){ +