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`.
|
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.
|
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
|
```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
|
## 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.
|
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.
|
1. `expiry-indicator.sppkg` in den App Catalog der On-Premises-Farm laden.
|
||||||
2. Die App in der gewünschten Site installieren.
|
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:
|
4. Den Field Customizer mit der vorhandenen Ablaufdatumsspalte verbinden:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"solution": {
|
"solution": {
|
||||||
"name": "expiry-indicator-client-side-solution",
|
"name": "expiry-indicator-client-side-solution",
|
||||||
"id": "68bb6d2d-9895-45b4-88e8-b98835faa981",
|
"id": "68bb6d2d-9895-45b4-88e8-b98835faa981",
|
||||||
"version": "1.0.0.0",
|
"version": "1.0.1.0",
|
||||||
"includeClientSideAssets": true,
|
"includeClientSideAssets": true,
|
||||||
"skipFeatureDeployment": false,
|
"skipFeatureDeployment": false,
|
||||||
"features": [
|
"features": [
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"title": "ExpiryIndicator command set registration",
|
"title": "ExpiryIndicator command set registration",
|
||||||
"description": "Registers ExpiryIndicator commands for modern lists and document libraries. Does not provision ExpiryDate.",
|
"description": "Registers ExpiryIndicator commands for modern lists and document libraries. Does not provision ExpiryDate.",
|
||||||
"id": "913402af-ab9a-4974-9f86-5c2159ae41db",
|
"id": "913402af-ab9a-4974-9f86-5c2159ae41db",
|
||||||
"version": "1.0.0.0",
|
"version": "1.0.1.0",
|
||||||
"assets": {
|
"assets": {
|
||||||
"elementManifests": [
|
"elementManifests": [
|
||||||
"elements.xml"
|
"elements.xml"
|
||||||
@@ -24,4 +24,3 @@
|
|||||||
"zippedPackage": "solution/expiry-indicator.sppkg"
|
"zippedPackage": "solution/expiry-indicator.sppkg"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "expiry-indicator",
|
"name": "expiry-indicator",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0 <9.0.0"
|
"node": ">=6.9.0 <9.0.0"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"alias": "ExpiryIndicatorFieldCustomizer",
|
"alias": "ExpiryIndicatorFieldCustomizer",
|
||||||
"componentType": "Extension",
|
"componentType": "Extension",
|
||||||
"extensionType": "FieldCustomizer",
|
"extensionType": "FieldCustomizer",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"manifestVersion": 2
|
"manifestVersion": 2,
|
||||||
|
"requiresCustomScript": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
"alias": "ExpiryIndicatorCommandSet",
|
"alias": "ExpiryIndicatorCommandSet",
|
||||||
"componentType": "Extension",
|
"componentType": "Extension",
|
||||||
"extensionType": "ListViewCommandSet",
|
"extensionType": "ListViewCommandSet",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"manifestVersion": 2,
|
"manifestVersion": 2,
|
||||||
|
"requiresCustomScript": false,
|
||||||
"items": {
|
"items": {
|
||||||
"EXTEND_ONE_YEAR": {
|
"EXTEND_ONE_YEAR": {
|
||||||
"title": {
|
"title": {
|
||||||
@@ -23,4 +24,3 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user