From f2f3393b1230c0ede2f91974e0a9be2fc757c030 Mon Sep 17 00:00:00 2001 From: data Date: Mon, 16 Feb 2026 19:57:37 +0100 Subject: [PATCH] Version 3.4.0 - Kategorie-Auswahl, Icons, Sicherheitsfixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Kategorie-Select (Gebäude/Standort vs Element/Gerät) beim Erstellen - Select2 mit FontAwesome-Icons und Farbkodierung für Typ-Auswahl - GLOBAL-Gebäudetypen aus Admin Element-Typen ausgeblendet (eigener Tab) - Aktions-Buttons rechtsbündig in der Typ-Verwaltung - Sicherheits-Fixes: Berechtigungsprüfungen, Path-Traversal, Transaktionen - Version auf 3.4.0 aktualisiert Co-Authored-By: Claude Opus 4.6 --- README.md | 5 + admin/anlage_types.php | 10 +- ajax/anlage_docs.php | 7 ++ ajax/anlage_images.php | 7 ++ ajax/equipment_type_block_image.php | 3 + class/anlageconnection.class.php | 64 ++++++++-- class/anlagetype.class.php | 16 ++- class/buildingtype.class.php | 3 +- class/terminalbridge.class.php | 4 +- core/modules/modKundenKarte.class.php | 2 +- langs/de_DE/kundenkarte.lang | 3 + langs/en_US/kundenkarte.lang | 12 ++ tabs/anlagen.php | 173 +++++++++++++++++++++++++- 13 files changed, 285 insertions(+), 24 deletions(-) mode change 100644 => 100755 ajax/equipment_type_block_image.php mode change 100644 => 100755 class/anlageconnection.class.php mode change 100644 => 100755 class/buildingtype.class.php mode change 100644 => 100755 class/terminalbridge.class.php diff --git a/README.md b/README.md index 87bf1c8..7ca09c0 100755 --- a/README.md +++ b/README.md @@ -13,6 +13,9 @@ Das KundenKarte-Modul erweitert Dolibarr um zwei wichtige Funktionen fuer Kunden ### Technische Anlagen (Anlagen) - Hierarchische Baumstruktur fuer technische Installationen - Flexible Systemkategorien (z.B. Strom, Internet, Kabel, Sat) +- Kategorie-Auswahl beim Erstellen: Gebaeude/Standort oder Element/Geraet +- Typ-Select mit FontAwesome-Icons und Farbkodierung (Select2) +- Gebaeude-Typen gruppiert nach Ebene (Gebaeude, Etage, Fluegel, Raum, Bereich) - Konfigurierbare Element-Typen mit individuellen Feldern - Datei-Upload mit Bild-Vorschau und PDF-Anzeige - Separate Verwaltung pro Kunde oder pro Kontakt/Adresse (z.B. verschiedene Gebaeude) @@ -63,6 +66,8 @@ Im Admin-Bereich (Home > Setup > Module > KundenKarte) koennen Sie: - **Anlagen-Systeme**: System-Kategorien anlegen (z.B. Strom, Internet) - **Element-Typen**: Geraetetypen definieren (z.B. Zaehler, Router, Wallbox) - **Typ-Felder**: Individuelle Felder pro Geraetetyp konfigurieren +- **Gebaeudetypen**: Strukturtypen (Haus, Etage, Raum etc.) fuer die Gebaeude-Hierarchie +- **Kabeltypen**: Verbindungsmedien (NYM, NYY, CAT etc.) mit Spezifikationen - **Equipment-Typen**: Schaltplan-Komponenten (z.B. Sicherungsautomaten, FI-Schalter) mit Breite (TE), Farbe und Terminal-Konfiguration - **Phasenschienen-Typen**: Sammelschienen/Phasenschienen-Vorlagen (L1, L2, L3, N, PE, 3P+N etc.) mit Farben und Linien-Konfiguration diff --git a/admin/anlage_types.php b/admin/anlage_types.php index 23cbee3..7849fb0 100755 --- a/admin/anlage_types.php +++ b/admin/anlage_types.php @@ -345,6 +345,7 @@ if (in_array($action, array('create', 'edit'))) { $selAll = (empty($anlageType->fk_system)) ? ' selected' : ''; print ''; foreach ($systems as $sys) { + if ($sys->code === 'GLOBAL') continue; // Gebaeude-Typen haben eigenen Tab $sel = ($anlageType->fk_system == $sys->rowid) ? ' selected' : ''; print ''; } @@ -634,6 +635,7 @@ if (in_array($action, array('create', 'edit'))) { print ''; - // Type - print ''.$langs->trans('Type').''; + // Kategorie (Gebäude/Standort vs Element/Gerät) + $currentCategory = ''; + if (($isEdit || $isCopy) && !empty($anlage->fk_anlage_type)) { + // Kategorie des aktuellen Typs ermitteln + foreach ($types as $t) { + if ($t->id == $anlage->fk_anlage_type) { + $currentCategory = ($t->system_code === 'GLOBAL') ? 'building' : 'element'; + break; + } + } + } + $postedCategory = GETPOST('element_category', 'alpha'); + if ($postedCategory) $currentCategory = $postedCategory; + + print ''.$langs->trans('Category').''; + print ''; + + // Type (gefiltert nach Kategorie) + print ''.$langs->trans('Type').''; print ''; if (empty($types)) { print '
'.$langs->trans('NoTypesDefinedForSystem').''; @@ -692,6 +758,105 @@ if (empty($customerSystems)) { print ''; print ''; + + // JavaScript: Kategorie-Filter + Select2 mit Icons + print ''; } print '';