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:
@@ -134,6 +134,13 @@ while ($row = mysqli_fetch_assoc($resultSavedEinrichts)) {
|
||||
$savedEinrichts[] = $row['einricht_id'];
|
||||
}
|
||||
|
||||
// Verknüpfungskarte für Einrichtungen (Gruppen → Mitglieder)
|
||||
$einrichtLinks = [];
|
||||
$linkRes = mysqli_query($GLOBALS['mysql_con'], "SELECT einricht_id, linked_einricht_id FROM organigramm_einricht_link");
|
||||
while ($lr = mysqli_fetch_assoc($linkRes)) {
|
||||
$einrichtLinks[strval($lr['einricht_id'])][] = strval($lr['linked_einricht_id']);
|
||||
}
|
||||
|
||||
// Array mit Daten für Tagify (Einrichtungen)
|
||||
$savedEinrichtsData = [];
|
||||
foreach ($einrichts as $einricht) {
|
||||
@@ -842,6 +849,17 @@ $parentCount = count($parentCategories);
|
||||
}
|
||||
}
|
||||
});
|
||||
var einrichtLinks = <?= json_encode($einrichtLinks) ?>;
|
||||
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,
|
||||
|
||||
@@ -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'), {
|
||||
|
||||
Reference in New Issue
Block a user