Aktualisiere Versionsnummern auf 1.0.1 in package.json, package-solution.json und Manifestdateien für Erweiterungen; verbessere README.md mit Konfigurationsanweisungen für "Expiry-Einstellungen"
This commit is contained in:
178
README.md
178
README.md
@@ -21,7 +21,7 @@ Die Solution provisioniert ausdrücklich keine fachliche Ablaufdatumsspalte und
|
||||
3. Die erste Regel mit passendem `columnValue` bestimmt `lifeTime` und `columnRule`.
|
||||
4. Wenn keine Regel passt oder keines der Regelfelder vorhanden ist, gilt der gesamte `default`-Block.
|
||||
|
||||
Beispiel:
|
||||
Beispiel der intern gespeicherten Gesamtstruktur (nicht vollständig in eines der JSON-Felder des Dialogs einfügen):
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -58,6 +58,179 @@ Beispiel:
|
||||
}
|
||||
```
|
||||
|
||||
## Konfiguration über "Expiry-Einstellungen"
|
||||
|
||||
### Voraussetzungen
|
||||
|
||||
1. Die App muss in der betreffenden Site installiert sein.
|
||||
2. Die Liste oder Bibliothek muss die moderne Oberfläche verwenden.
|
||||
3. Der angemeldete Benutzer benötigt die SharePoint-Berechtigung `Listen verwalten`.
|
||||
4. Das konfigurierte Ablaufdatumsfeld muss bereits vorhanden sein. Die Solution legt dieses Feld nicht an.
|
||||
|
||||
Nach der Installation erscheint in modernen Listen und Dokumentbibliotheken der Befehl
|
||||
**Expiry-Einstellungen** in der Befehlsleiste. Falls der Befehl nicht sichtbar ist, zunächst prüfen, ob
|
||||
die App in der Site installiert und die Berechtigung `Listen verwalten` vorhanden ist.
|
||||
|
||||
### Interne Feldnamen ermitteln
|
||||
|
||||
Es müssen interne SharePoint-Feldnamen verwendet werden, nicht die angezeigten Spaltennamen.
|
||||
|
||||
1. **Listeneinstellungen** beziehungsweise **Bibliothekseinstellungen** öffnen.
|
||||
2. Die gewünschte Spalte anklicken.
|
||||
3. In der URL den Wert hinter `Field=` ablesen.
|
||||
|
||||
Beispiel: Bei `...FldEdit.aspx?Field=DataPrivacy` lautet der interne Feldname `DataPrivacy`.
|
||||
Ein Anzeigename wie "Ablaufdatum" kann intern beispielsweise `ExpiryDate` oder
|
||||
`CustomerExpiryDate` heißen.
|
||||
|
||||
### Allgemeine Einstellungen
|
||||
|
||||
- **Internes Basis-Datumsfeld:** Ausgangsdatum für die Berechnung, normalerweise `Created`.
|
||||
- **Internes Ablaufdatumsfeld:** Vorhandenes Datumsfeld, beispielsweise `ExpiryDate`.
|
||||
- **Standardlaufzeit:** Zahl für die Laufzeit, beispielsweise `2`.
|
||||
- **Einheit:** `days`, `months` oder `years`.
|
||||
- **Verlängerung vorher bestätigen:** Zeigt vor der Verlängerung eine Sicherheitsabfrage.
|
||||
- **Text bei fehlendem Datum:** Wird angezeigt, wenn weder Basis- noch Ablaufdatum gelesen werden können.
|
||||
|
||||
Ist das Ablaufdatumsfeld eines Elements bereits gefüllt, wird dieser gespeicherte Wert verwendet.
|
||||
Nur bei einem leeren Ablaufdatumsfeld wird das Datum aus Basisdatum plus passender Laufzeit berechnet.
|
||||
Ein berechnetes Datum wird durch die Anzeige allein nicht in das SharePoint-Feld geschrieben.
|
||||
|
||||
### Standard-Farbregeln
|
||||
|
||||
In **Standard-Farbregeln** wird nur das JSON-Array für `default.columnRule` eingetragen:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"daysUntilExpiry": 0,
|
||||
"operator": "lessOrEqual",
|
||||
"backgroundColor": "#a4262c",
|
||||
"textColor": "#ffffff",
|
||||
"label": "Abgelaufen"
|
||||
},
|
||||
{
|
||||
"daysUntilExpiry": 30,
|
||||
"operator": "lessOrEqual",
|
||||
"backgroundColor": "#ffaa44",
|
||||
"textColor": "#000000",
|
||||
"label": "Läuft bald ab"
|
||||
},
|
||||
{
|
||||
"daysUntilExpiry": 90,
|
||||
"operator": "lessOrEqual",
|
||||
"backgroundColor": "#fff4ce",
|
||||
"textColor": "#000000",
|
||||
"label": "Beobachten"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Die Farbregeln werden von oben nach unten ausgewertet; die erste passende Regel gewinnt. Deshalb muss
|
||||
`<= 0` vor `<= 30` und `<= 90` stehen. Ohne passende Farbregel wird das Datum ohne besondere Farbe angezeigt.
|
||||
|
||||
Unterstützte Operatoren:
|
||||
|
||||
| Operator | Bedeutung |
|
||||
| --- | --- |
|
||||
| `lessThan` | Resttage kleiner als Grenzwert |
|
||||
| `lessOrEqual` | Resttage kleiner oder gleich Grenzwert |
|
||||
| `equal` | Resttage genau gleich Grenzwert |
|
||||
| `greaterOrEqual` | Resttage größer oder gleich Grenzwert |
|
||||
| `greaterThan` | Resttage größer als Grenzwert |
|
||||
|
||||
### Feldabhängige Regeln
|
||||
|
||||
In **Feldwertregeln** wird nur das JSON-Array für `rules` eingetragen. Folgendes Beispiel verwendet bei
|
||||
`DataPrivacy = PersDat1` eine Laufzeit von einem Jahr und bei `PersDat2` eine Laufzeit von drei Jahren:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"columnName": "DataPrivacy",
|
||||
"columnValue": "PersDat1",
|
||||
"lifeTime": {
|
||||
"value": 1,
|
||||
"unit": "years"
|
||||
},
|
||||
"columnRule": [
|
||||
{
|
||||
"daysUntilExpiry": 0,
|
||||
"operator": "lessOrEqual",
|
||||
"backgroundColor": "#a4262c",
|
||||
"textColor": "#ffffff",
|
||||
"label": "Abgelaufen"
|
||||
},
|
||||
{
|
||||
"daysUntilExpiry": 30,
|
||||
"operator": "lessOrEqual",
|
||||
"backgroundColor": "#ffaa44",
|
||||
"textColor": "#000000",
|
||||
"label": "Läuft bald ab"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"columnName": "DataPrivacy",
|
||||
"columnValue": "PersDat2",
|
||||
"lifeTime": {
|
||||
"value": 3,
|
||||
"unit": "years"
|
||||
},
|
||||
"columnRule": [
|
||||
{
|
||||
"daysUntilExpiry": 0,
|
||||
"operator": "lessOrEqual",
|
||||
"backgroundColor": "#a4262c",
|
||||
"textColor": "#ffffff",
|
||||
"label": "Abgelaufen"
|
||||
},
|
||||
{
|
||||
"daysUntilExpiry": 60,
|
||||
"operator": "lessOrEqual",
|
||||
"backgroundColor": "#ffaa44",
|
||||
"textColor": "#000000",
|
||||
"label": "Läuft bald ab"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Die Regeln werden von oben nach unten geprüft. Dabei gilt:
|
||||
|
||||
1. Existiert `columnName` in der Liste oder Bibliothek?
|
||||
2. Entspricht der Feldwert dem konfigurierten `columnValue`?
|
||||
3. Die erste passende Regel liefert Laufzeit und Farbregeln.
|
||||
4. Existiert das Feld nicht oder passt kein Wert, werden Standardlaufzeit und Standard-Farbregeln verwendet.
|
||||
|
||||
Nach **Speichern** wird die Konfiguration pro Liste beziehungsweise Bibliothek in der ausgeblendeten Liste
|
||||
`_ExpiryIndicatorConfiguration` der aktuellen Site gespeichert. Anschließend die Ansicht neu laden.
|
||||
|
||||
### Anzeige aktivieren
|
||||
|
||||
Die Einstellungen registrieren noch nicht den Field Customizer an der kundenspezifischen Ablaufdatumsspalte.
|
||||
Diese Zuordnung erfolgt einmal pro Feld mit dem mitgelieferten Skript:
|
||||
|
||||
```powershell
|
||||
.\scripts\Enable-ExpiryIndicator.ps1 `
|
||||
-SiteUrl 'https://sharepoint/sites/fachbereich' `
|
||||
-ListTitle 'Dokumente' `
|
||||
-ExpiryFieldInternalName 'CustomerExpiryDate'
|
||||
```
|
||||
|
||||
Der Wert von `ExpiryFieldInternalName` muss mit **Internes Ablaufdatumsfeld** in den Einstellungen
|
||||
übereinstimmen. Danach die Listenansicht neu laden.
|
||||
|
||||
### Ablaufdatum um ein Jahr verlängern
|
||||
|
||||
Ein oder mehrere Elemente markieren und **Ablaufdatum +1 Jahr** auswählen. Ist bereits ein Ablaufdatum
|
||||
gespeichert, wird dieses um ein Kalenderjahr verlängert. Ist das Feld leer, wird zunächst das berechnete
|
||||
Ablaufdatum verwendet, um ein Jahr verlängert und anschließend in das Ablaufdatumsfeld geschrieben.
|
||||
|
||||
Der Befehl ist nur sichtbar, wenn das konfigurierte Ablaufdatumsfeld existiert, mindestens ein Element
|
||||
markiert wurde und der Benutzer Elemente bearbeiten darf.
|
||||
|
||||
## Build
|
||||
|
||||
SPFx 1.4.1 verwendet die Legacy-Toolchain. Unterstützt wird Node.js 6 oder 8; empfohlen wird für reproduzierbare Builds Node.js 8.17.0.
|
||||
@@ -73,7 +246,8 @@ Das Paket wird als `sharepoint/solution/expiry-indicator.sppkg` erzeugt.
|
||||
|
||||
1. `expiry-indicator.sppkg` in den App Catalog der On-Premises-Farm laden.
|
||||
2. Die App in der gewünschten Site installieren.
|
||||
3. Eine moderne Liste/Bibliothek öffnen und über **Expiry-Einstellungen** interne Feldnamen, Standardlaufzeit, Policies und Farben konfigurieren.
|
||||
3. Eine moderne Liste/Bibliothek öffnen und wie im Abschnitt
|
||||
**Konfiguration über "Expiry-Einstellungen"** beschrieben konfigurieren.
|
||||
4. Den Field Customizer mit der vorhandenen Ablaufdatumsspalte verbinden:
|
||||
|
||||
```powershell
|
||||
|
||||
Reference in New Issue
Block a user