Füge Application Customizer für ExpiryIndicator hinzu; aktualisiere Versionsnummern auf 1.0.10 in package.json, package-solution.json, ExpiryIndicatorFieldCustomizer.manifest.json und ExpiryIndicatorCommandSet.manifest.json; verbessere die Konfiguration und Benutzeroberfläche in README.md und ToDo.md.

This commit is contained in:
Torsten Brendgen
2026-07-17 21:59:34 +02:00
parent 76a0fcd898
commit b2337e9548
17 changed files with 280 additions and 176 deletions

24
ToDo.md
View File

@@ -8,7 +8,7 @@ Eine SharePoint-Framework-Solution für SharePoint Server Subscription Edition a
- Berechnung eines effektiven Ablaufdatums aus `Created`, wenn `ExpiryDate` leer ist,
- frei konfigurierbare Laufzeit-, Schwellenwert- und Farbregeln pro Liste/Bibliothek,
- einen Befehl **„Ablaufdatum +1 Jahr“** für ein oder mehrere ausgewählte Elemente,
- einen nur für Listenverwalter sichtbaren Befehl **„Expiry-Einstellungen“**.
- einen unsichtbar laufenden Application Customizer, der den Einstellungsdialog per URL-Parameter für Listenverwalter öffnet.
## Wichtige Randbedingung
@@ -33,7 +33,7 @@ Die Berechnung arbeitet mit Kalenderjahren/-monaten/-tagen, nicht mit pauschalen
### 2. ListView Command Set
`ExpiryIndicatorCommandSet` stellt in der modernen Befehlsleiste zwei Aktionen bereit:
`ExpiryIndicatorCommandSet` stellt in der modernen Befehlsleiste eine fachliche Aktion bereit:
- **Ablaufdatum +1 Jahr**
- sichtbar, wenn mindestens ein Element gewählt wurde und `ExpiryDate` vorhanden ist,
@@ -42,13 +42,16 @@ Die Berechnung arbeitet mit Kalenderjahren/-monaten/-tagen, nicht mit pauschalen
- verwendet bei leerem `ExpiryDate` zunächst das berechnete effektive Ablaufdatum,
- addiert ein Kalenderjahr und schreibt das Ergebnis nach `ExpiryDate`,
- zeigt eine Zusammenfassung über erfolgreiche und fehlgeschlagene Änderungen.
- **Expiry-Einstellungen**
- nur sichtbar für Benutzer mit `ManageLists`-Berechtigung,
- öffnet einen Konfigurationsdialog für die aktuelle Liste/Bibliothek.
### 3. Konfiguration
### 3. Application Customizer
Die Konfiguration wird pro Liste anhand ihrer GUID gespeichert. Dafür verwendet die App eine eigene, versteckte Konfigurationsliste im aktuellen Web. Diese technische Liste darf von der Solution beziehungsweise beim ersten Speichern der Einstellungen erzeugt werden; die fachliche Spalte `ExpiryDate` bleibt davon unberührt.
`ExpiryIndicatorApplicationCustomizer` läuft ohne permanente Oberfläche. Auf einer modernen Listen- oder
Bibliotheksansicht öffnet `expiryIndicatorSettings=1` den Konfigurationsdialog für Benutzer mit
`ManageLists`-Berechtigung. Die Befehlsleiste enthält dadurch keinen Einstellungsbefehl.
### 4. Konfiguration
Die Konfiguration wird pro Liste als JSON in `ClientSideComponentProperties` des gebundenen lokalen Listenfeldes gespeichert. Eine zusätzliche Konfigurationsliste wird bei neuen Installationen nicht erzeugt. Für Upgrades darf eine bestehende `_ExpiryIndicatorConfiguration` ausschließlich als Lese-Fallback verwendet werden, bis die Konfiguration beim nächsten Speichern in die Component Properties migriert wurde. Die fachliche Spalte `ExpiryDate` bleibt davon unberührt.
Konfigurierbar sind mindestens:
@@ -90,10 +93,10 @@ Beispiel einer Laufzeitkonfiguration:
}
```
### 4. Aktivierung und Deployment
### 5. Aktivierung und Deployment
- Erstellung eines `.sppkg`-Pakets mit eingebetteten Client-Side Assets.
- Registrierung des Command Sets für moderne generische Listen und Dokumentbibliotheken.
- Registrierung des Command Sets und des Settings-Application-Customizers.
- Keine Provisionierung fachlicher Ablaufdatumsspalten, Site Columns oder Content Types.
- Bereitstellung eines PowerShell-/CSOM-Aktivierungsskripts, das den Field Customizer mit einer als Parameter angegebenen vorhandenen Ablaufdatumsspalte verknüpft.
- Bereitstellung eines entsprechenden Deaktivierungsskripts, das nur diese Verknüpfung und App-Custom-Actions entfernt, nicht aber fachliche Daten oder Spalten.
@@ -106,7 +109,8 @@ Beispiel einer Laufzeitkonfiguration:
- [ ] Regel-Engine für feldwertabhängige Laufzeiten und Farbschwellen implementieren.
- [ ] REST-Service für Konfiguration und Elementaktualisierungen implementieren.
- [ ] Field Customizer implementieren.
- [ ] ListView Command Set und Einstellungsdialog implementieren.
- [x] ListView Command Set und Einstellungsdialog implementieren.
- [x] Settings-Application-Customizer mit URL-Aktivierung implementieren.
- [ ] Feature-XML für Command-Bar-Registrierung erstellen.
- [ ] CSOM-Aktivierungs- und Deaktivierungsskripte für die vorhandene `ExpiryDate`-Spalte erstellen.
- [ ] Lokalisierung Deutsch/Englisch ergänzen.