Add CKndigung layout files and update cache timestamps; improve UI structure and error handling

This commit is contained in:
2026-01-25 10:26:44 +01:00
parent 30326da8c6
commit eaeba65487
8 changed files with 323 additions and 14 deletions

View File

@@ -177,50 +177,92 @@ Basierend auf der Analyse von Git-Commits und praktischen Erfahrungen treten bes
#### 2. Layout-Strukturfehler #### 2. Layout-Strukturfehler
**Problem:** Unnötige oder falsche Array-Elemente in Layouts, die zu UI-Problemen führen. **Problem:** Falsche Platzhalter und Strukturen in Layouts führen zu UI-Problemen.
**⚠️ KRITISCH für EspoCRM 7.x:**
In EspoCRM 7.x ist `false` als Platzhalter **NICHT MEHR ERLAUBT**!
**Symptome:** **Symptome:**
- Layout wird nicht geladen, Fehlermeldung in UI
- Felder werden nicht korrekt angeordnet - Felder werden nicht korrekt angeordnet
- Leere Bereiche in Detail-Views - Leere Bereiche in Detail-Views
- Inkonsistente Spaltenbreiten - bottomPanelsDetail funktioniert nicht
**❌ FALSCH:** **❌ FALSCH (EspoCRM 7.x):**
```json ```json
// layouts/Entity/detail.json // layouts/Entity/detail.json
{ {
"rows": [ "rows": [
[ [
{"name": "field1"} {"name": "field1"},
],
[
{"name": "field2"}, {"name": "field2"},
false // ← Unnötiges false-Element! false, // ← DEPRECATED! Funktioniert in 7.x NICHT!
false // ← Verursacht Layout-Fehler!
] ]
] ]
} }
``` ```
**✅ RICHTIG:** **✅ RICHTIG (EspoCRM 7.x):**
```json ```json
{ {
"rows": [ "rows": [
[ [
{"name": "field1"}, {"name": "field1"},
{"name": "field2"} // Beide in einer Row {"name": "field2"},
{}, // ← Leeres Objekt verwenden!
{} // ← Funktioniert in 7.x korrekt
] ]
] ]
} }
``` ```
**❌ FALSCH - bottomPanelsDetail.json als Array:**
```json
// layouts/Entity/bottomPanelsDetail.json
[
{"name": "contacts"},
{"name": "documents"}
]
```
**✅ RICHTIG - bottomPanelsDetail.json als Objekt:**
```json
{
"contacts": {
"index": 0,
"sticked": true,
"style": "warning"
},
"_tabBreak_0": {
"index": 1,
"columnBreak": true
},
"documents": {
"index": 2
},
"activities": {
"disabled": true
},
"history": {
"disabled": true
}
}
```
**Häufige Layout-Fehler:** **Häufige Layout-Fehler:**
-**`false` als Platzhalter** (seit EspoCRM 7.x nicht mehr unterstützt!)
- ❌ Width-Attribute in Detail-Layouts (nur für List-Layouts!) - ❌ Width-Attribute in Detail-Layouts (nur für List-Layouts!)
-Leere Objekte `{}` oder `false` in Rows -bottomPanelsDetail.json als Array statt Objekt
- ❌ Index nicht angepasst nach Entfernung von Panels (bottomPanelsDetail) - ❌ Index nicht angepasst nach Entfernung von Panels
**Best Practice:** **Best Practice:**
- **Immer `{}` statt `false`** für leere Zellen in detail.json verwenden
- Width nur in `list.json` und `listSmall.json` verwenden - Width nur in `list.json` und `listSmall.json` verwenden
- Rows immer vollständig füllen oder Felder kombinieren - bottomPanelsDetail.json **MUSS** Objekt-Format haben
- Rows immer mit 4 Spalten füllen (nutze `{}` zum Auffüllen)
- Nach Panel-Entfernung Indices neu nummerieren - Nach Panel-Entfernung Indices neu nummerieren
- `_tabBreak_{index}` verwenden um Panels auf verschiedene Tabs zu verteilen
--- ---

View File

@@ -0,0 +1,63 @@
{
"_delimiter_": {
"disabled": true
},
"activities": {
"disabled": true
},
"history": {
"disabled": true
},
"_tabBreak_0": {
"index": 0,
"tabBreak": true,
"tabLabel": "Freigegebene Nutzer"
},
"contactsKuendigung": {
"dynamicLogicVisible": null,
"style": "warning",
"dynamicLogicStyled": null,
"sticked": true,
"index": 1
},
"_tabBreak_1": {
"index": 2,
"tabBreak": true,
"tabLabel": "Kündigende"
},
"kuendiger": {
"index": 3
},
"_tabBreak_2": {
"index": 4,
"tabBreak": true,
"tabLabel": "Gekündigte"
},
"gekuendigte": {
"index": 5
},
"_tabBreak_3": {
"index": 6,
"tabBreak": true,
"tabLabel": "Mietverhältnisse"
},
"vmhMietverhltnises": {
"index": 7
},
"_tabBreak_4": {
"index": 8,
"tabBreak": true,
"tabLabel": "Dokumente"
},
"dokumenteskuendigung": {
"index": 9
},
"_tabBreak_5": {
"index": 10,
"tabBreak": true,
"tabLabel": "Mietobjekte"
},
"mietobjekte": {
"index": 11
}
}

View File

@@ -0,0 +1,11 @@
[
{
"name": ":assignedUser"
},
{
"name": "teams"
},
{
"name": "freigeschalteteNutzer"
}
]

View File

@@ -0,0 +1,114 @@
[
{
"label": "Kündigungsdetails",
"style": "default",
"tabBreak": false,
"rows": [
[
{
"name": "name"
},
{
"name": "kuendigungsart"
},
{
"name": "status"
},
{
"name": "advowareAktenzeichen"
}
],
[
{
"name": "kuendigungsgrund"
},
{
"name": "kuendigungsdatum"
},
{
"name": "zustelldatum"
},
{
"name": "zustellart"
}
],
[
{
"name": "kuendigungsfrist"
},
{
"name": "beendigungstermin"
},
{},
{}
],
[
{
"name": "kuendigungsgrundDetails"
}
]
]
},
{
"label": "Finanzielle Forderungen",
"style": "default",
"tabBreak": false,
"rows": [
[
{
"name": "rueckstandMiete"
},
{
"name": "rueckstandNebenkosten"
},
{
"name": "sonstigeForderungen"
},
{
"name": "aussergerichtlicheGebuehren13"
}
]
]
},
{
"label": "Notizen & Reaktion",
"style": "default",
"tabBreak": false,
"rows": [
[
{
"name": "reaktionMieter"
}
],
[
{
"name": "notizen"
}
],
[
{
"name": "description"
}
]
]
},
{
"label": "Advoware Sync",
"style": "default",
"tabBreak": true,
"tabLabel": "Erweitert",
"rows": [
[
{
"name": "betnr"
},
{
"name": "syncStatus"
},
{
"name": "advowareLastSync"
}
]
]
}
]

View File

@@ -0,0 +1,33 @@
[
{
"rows": [
[
{
"name": "name",
"noLabel": true
}
],
[
{
"name": "kuendigungsart"
},
{
"name": "status"
}
],
[
{
"name": "kuendigungsdatum"
},
{
"name": "beendigungstermin"
}
],
[
{
"name": "assignedUser"
}
]
]
}
]

View File

@@ -0,0 +1,31 @@
[
{
"name": "name",
"link": true,
"width": 20
},
{
"name": "kuendigungsart",
"width": 12
},
{
"name": "status",
"width": 12
},
{
"name": "kuendigungsdatum",
"width": 12
},
{
"name": "beendigungstermin",
"width": 12
},
{
"name": "assignedUser",
"width": 16
},
{
"name": "modifiedAt",
"width": 16
}
]

View File

@@ -0,0 +1,15 @@
[
{
"name": "name",
"link": true
},
{
"name": "kuendigungsart"
},
{
"name": "status"
},
{
"name": "kuendigungsdatum"
}
]

View File

@@ -360,8 +360,8 @@ return [
0 => 'youtube.com', 0 => 'youtube.com',
1 => 'google.com' 1 => 'google.com'
], ],
'cacheTimestamp' => 1769331937, 'cacheTimestamp' => 1769332527,
'microtime' => 1769331937.84435, 'microtime' => 1769332527.595512,
'siteUrl' => 'https://crm.bitbylaw.com', 'siteUrl' => 'https://crm.bitbylaw.com',
'fullTextSearchMinLength' => 4, 'fullTextSearchMinLength' => 4,
'appTimestamp' => 1768843902, 'appTimestamp' => 1768843902,