feat(einricht): Verknüpfte Einrichtungen bei Mehrfachauswahl automatisch mitselektieren

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 <noreply@anthropic.com>
This commit is contained in:
2026-06-29 10:07:25 +02:00
parent ab4f38a360
commit 8aadf65cc3
5 changed files with 140 additions and 8 deletions

View File

@@ -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 = <?= json_encode($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'), {