Neue Features: - Badge-Farben pro Feld konfigurierbar (Admin > Element-Typen) - Datei-Vorschau Tooltip beim Hover über Datei-Badge - Mobile/Kompakte Ansicht mit einheitlichen Button-Größen - Autocomplete für Textfelder - Backup/Restore für Konfiguration Bugfixes: - Dolibarr App Navigation: Vor/Zurück-Pfeile funktionieren jetzt (Module akzeptieren id UND socid/contactid Parameter) - Datei-Badge zeigt jetzt Büroklammer-Icon Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
4 KiB
Executable file
4 KiB
Executable file
CLAUDE_CODE_DISABLE_AUTO_MEMORY=0
KundenKarte Module - Entwicklungshinweise
Dolibarr App Navigation (Vor/Zurück Pfeile)
Problem
Die Dolibarr Mobile App hat eigene Navigations-Pfeile (vorheriger/nächster Kunde), die zwischen Datensätzen navigieren. Diese verwenden andere Parameter als unsere Module erwarten:
- Kunden-Navigation: Dolibarr verwendet
socid, Module erwarten oftid - Kontakt-Navigation: Dolibarr verwendet
contactid, Module erwarten oftid
Wenn man diese Pfeile auf einem Modul-Tab verwendet, verliert das Modul die ID und zeigt einen Fehler oder leere Seite.
Lösung: Beide Parameter akzeptieren
In JEDEM Tab-PHP-File muss am Anfang beide Parameter akzeptiert werden:
Für Kunden-Tabs (thirdparty):
// Get parameters
// Support both 'id' and 'socid' for compatibility with Dolibarr's customer navigation arrows
$id = GETPOSTINT('id');
if ($id <= 0) {
$id = GETPOSTINT('socid');
}
Für Kontakt-Tabs (contact):
// Get parameters
// Support both 'id' and 'contactid' for compatibility with Dolibarr's contact navigation arrows
$id = GETPOSTINT('id');
if ($id <= 0) {
$id = GETPOSTINT('contactid');
}
Betroffene Dateien in diesem Modul
tabs/anlagen.php- Kunden-Anlagen (socid)tabs/favoriteproducts.php- Kunden-Favoriten (socid)tabs/contact_anlagen.php- Kontakt-Anlagen (contactid)tabs/contact_favoriteproducts.php- Kontakt-Favoriten (contactid)
Best Practices für zukünftige Module
- IMMER beide Parameter akzeptieren -
idUNDsocid/contactid - Tab-Definition in modXxx.class.php verwendet
?id=__ID__- das ist korrekt - Dolibarr's
dol_banner_tab()generiert die Navigationspfeile mitsocid/contactid - Fallback bei fehlender ID - zur Liste weiterleiten, nicht Fehler zeigen:
if ($id <= 0) {
header('Location: '.DOL_URL_ROOT.'/societe/list.php');
exit;
}
Mobile Ansicht - Einheitliche Button-Größen
Problem
Auf mobilen Geräten haben die Buttons (Kompakt, Aufklappen, Einklappen, PDF Export) unterschiedliche Größen.
Lösung
CSS Media Queries für einheitliche Button-Größen:
@media (max-width: 768px) {
.kundenkarte-tree-controls {
justify-content: center !important;
flex-wrap: wrap !important;
gap: 8px !important;
}
.kundenkarte-tree-controls .button {
flex: 1 1 auto !important;
min-width: 80px !important;
max-width: 150px !important;
padding: 10px 8px !important;
font-size: 12px !important;
text-align: center !important;
}
}
@media (max-width: 480px) {
/* 2x2 Grid auf sehr kleinen Bildschirmen */
.kundenkarte-tree-controls {
display: grid !important;
grid-template-columns: 1fr 1fr !important;
}
}
Migrationen
Alle Datenbankänderungen werden als idempotente Migrationen in modKundenKarte.class.php implementiert:
runMigrations()wird bei jeder Modulaktivierung aufgerufen- Jede Migration prüft zuerst, ob die Änderung bereits existiert
- Später werden Migrationen entfernt und Tabellen direkt korrekt erstellt
Dateistruktur
tabs/anlagen.php- Hauptansicht für Anlagen auf Kundenebenetabs/contact_anlagen.php- Anlagen für Kontaktetabs/favoriteproducts.php- Lieblingsprodukte auf Kundenebenetabs/contact_favoriteproducts.php- Lieblingsprodukte für Kontakteadmin/anlage_types.php- Verwaltung der Element-Typenajax/- AJAX-Endpunkte für dynamische Funktionenjs/kundenkarte.js- Alle JavaScript-Komponentencss/kundenkarte.css- Alle Styles (Dark Mode)
Wichtige Hinweise
FontAwesome Icons
- Dolibarr verwendet FontAwesome 4.x Format:
fa fa-icon-name - NICHT:
fas fa-icon-nameoderfar fa-icon-name
Badge-Farben
- Können pro Feld in Admin > Element-Typen konfiguriert werden
- Spalte
badge_colorinllx_kundenkarte_anlage_type_field - Hex-Format:
#RRGGBB
Datei-Vorschau Tooltip
- AJAX-Endpoint:
ajax/file_preview.php - Zeigt Thumbnails für Bilder, Icons für Dokumente
- Hover über Datei-Badge im Baum