diff --git a/README.md b/README.md
index 02cc57f..fdf1ce3 100644
--- a/README.md
+++ b/README.md
@@ -209,8 +209,8 @@ Nach **Speichern** wird die Konfiguration pro Liste beziehungsweise Bibliothek i
### Anzeige aktivieren
-Der Field Customizer und das Command Set werden einmal pro Liste beziehungsweise Bibliothek mit dem
-mitgelieferten Skript registriert:
+Der Field Customizer wird einmal pro Liste beziehungsweise Bibliothek mit dem mitgelieferten Skript
+an der Ablaufdatumsspalte registriert:
```powershell
.\scripts\Enable-ExpiryIndicator.ps1 `
@@ -220,8 +220,8 @@ mitgelieferten Skript registriert:
```
Der Wert von `ExpiryFieldInternalName` muss mit **Internes Ablaufdatumsfeld** in den Einstellungen
-übereinstimmen. Das Skript registriert zugleich die Befehle **Expiry-Einstellungen** und
-**Ablaufdatum +1 Jahr**. Danach die Listenansicht neu laden.
+übereinstimmen. Das Command Set wird durch die Installation der App registriert. Danach die Listenansicht
+neu laden.
### Ablaufdatum um ein Jahr verlängern
diff --git a/config/package-solution.json b/config/package-solution.json
index 0c3d78b..7c28aed 100644
--- a/config/package-solution.json
+++ b/config/package-solution.json
@@ -3,7 +3,7 @@
"solution": {
"name": "expiry-indicator-client-side-solution",
"id": "68bb6d2d-9895-45b4-88e8-b98835faa981",
- "version": "1.0.1.0",
+ "version": "1.0.3.0",
"includeClientSideAssets": true,
"skipFeatureDeployment": false,
"features": [
@@ -11,7 +11,7 @@
"title": "ExpiryIndicator command set registration",
"description": "Registers ExpiryIndicator commands for modern lists and document libraries. Does not provision ExpiryDate.",
"id": "913402af-ab9a-4974-9f86-5c2159ae41db",
- "version": "1.0.1.0",
+ "version": "1.0.3.0",
"assets": {
"elementManifests": [
"elements.xml"
diff --git a/package.json b/package.json
index 1ba50dc..330a344 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "expiry-indicator",
- "version": "1.0.1",
+ "version": "1.0.3",
"private": true,
"engines": {
"node": ">=6.9.0 <9.0.0"
diff --git a/scripts/Disable-ExpiryIndicator.ps1 b/scripts/Disable-ExpiryIndicator.ps1
index fa6ba0f..b7b568f 100644
--- a/scripts/Disable-ExpiryIndicator.ps1
+++ b/scripts/Disable-ExpiryIndicator.ps1
@@ -9,9 +9,7 @@ param(
[Parameter(Mandatory = $true)]
[string]$ExpiryFieldInternalName,
- [Guid]$FieldCustomizerComponentId = 'a555f4fc-d6a6-4421-8189-457449d9bbde',
-
- [Guid]$CommandSetComponentId = 'cd58f5d9-ffc8-4df7-a910-3054842d7abf'
+ [Guid]$FieldCustomizerComponentId = 'a555f4fc-d6a6-4421-8189-457449d9bbde'
)
$isapiPath = Join-Path ([Environment]::GetFolderPath('CommonProgramFiles')) 'microsoft shared\Web Server Extensions\16\ISAPI'
@@ -24,28 +22,20 @@ $context.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
try {
$list = $context.Web.Lists.GetByTitle($ListTitle)
$field = $list.Fields.GetByInternalNameOrTitle($ExpiryFieldInternalName)
- $customActions = $list.UserCustomActions
$context.Load($list)
$context.Load($field)
- $context.Load($customActions)
$context.ExecuteQuery()
- if ($PSCmdlet.ShouldProcess("$($list.Title)/$($field.InternalName)", 'ExpiryIndicator-Registrierungen entfernen')) {
- if ($field.ClientSideComponentId -eq $FieldCustomizerComponentId) {
- $field.ClientSideComponentId = [Guid]::Empty
- $field.ClientSideComponentProperties = ''
- $field.Update()
- }
-
- $customActions | Where-Object {
- $_.Name -eq 'ExpiryIndicator.CommandSet' -or
- $_.ClientSideComponentId -eq $CommandSetComponentId
- } | ForEach-Object {
- $_.DeleteObject()
- }
+ if ($field.ClientSideComponentId -ne $FieldCustomizerComponentId) {
+ throw "Das Feld '$($field.InternalName)' ist nicht mit dem erwarteten ExpiryIndicator-Field-Customizer verbunden."
+ }
+ if ($PSCmdlet.ShouldProcess("$($list.Title)/$($field.InternalName)", 'Field-Customizer-Verknüpfung entfernen')) {
+ $field.ClientSideComponentId = [Guid]::Empty
+ $field.ClientSideComponentProperties = ''
+ $field.Update()
$context.ExecuteQuery()
- Write-Host 'ExpiryIndicator-Registrierungen wurden entfernt. Feld und Daten bleiben unverändert.'
+ Write-Host 'ExpiryIndicator-Verknüpfung wurde entfernt. Feld und Daten bleiben unverändert.'
}
}
finally {
diff --git a/scripts/Enable-ExpiryIndicator.ps1 b/scripts/Enable-ExpiryIndicator.ps1
index 59f66b1..ba98714 100644
--- a/scripts/Enable-ExpiryIndicator.ps1
+++ b/scripts/Enable-ExpiryIndicator.ps1
@@ -9,9 +9,7 @@ param(
[Parameter(Mandatory = $true)]
[string]$ExpiryFieldInternalName,
- [Guid]$FieldCustomizerComponentId = 'a555f4fc-d6a6-4421-8189-457449d9bbde',
-
- [Guid]$CommandSetComponentId = 'cd58f5d9-ffc8-4df7-a910-3054842d7abf'
+ [Guid]$FieldCustomizerComponentId = 'a555f4fc-d6a6-4421-8189-457449d9bbde'
)
$isapiPath = Join-Path ([Environment]::GetFolderPath('CommonProgramFiles')) 'microsoft shared\Web Server Extensions\16\ISAPI'
@@ -38,27 +36,17 @@ try {
$field.ClientSideComponentProperties = '{}'
$field.Update()
- $commandAction = $customActions | Where-Object {
- $_.Name -eq 'ExpiryIndicator.CommandSet' -or
- $_.ClientSideComponentId -eq $CommandSetComponentId
- } | Select-Object -First 1
-
- if ($null -eq $commandAction) {
- $commandAction = $customActions.Add()
+ # Remove the temporary list-scoped command registration used by older
+ # diagnostic scripts. The app feature owns the production registration.
+ $customActions | Where-Object {
+ $_.Name -eq 'ExpiryIndicator.CommandSet'
+ } | ForEach-Object {
+ $_.DeleteObject()
}
- $commandAction.Name = 'ExpiryIndicator.CommandSet'
- $commandAction.Title = 'ExpiryIndicator commands'
- $commandAction.Location = 'ClientSideExtension.ListViewCommandSet.CommandBar'
- $commandAction.ClientSideComponentId = $CommandSetComponentId
- $commandAction.ClientSideComponentProperties = '{}'
- $commandAction.Update()
-
$context.ExecuteQuery()
- Write-Host "Field Customizer wurde an '$($field.InternalName)' gebunden."
- Write-Host "Command Set wurde an '$($list.Title)' registriert."
- Write-Host 'Bitte die moderne Listenansicht mit Strg+F5 neu laden.'
+ Write-Host "ExpiryIndicator wurde für '$($list.Title)' an '$($field.InternalName)' gebunden."
}
finally {
$context.Dispose()
diff --git a/scripts/Test-ExpiryIndicatorRegistration.ps1 b/scripts/Test-ExpiryIndicatorRegistration.ps1
deleted file mode 100644
index 66c5028..0000000
--- a/scripts/Test-ExpiryIndicatorRegistration.ps1
+++ /dev/null
@@ -1,50 +0,0 @@
-[CmdletBinding()]
-param(
- [Parameter(Mandatory = $true)]
- [string]$SiteUrl,
-
- [Parameter(Mandatory = $true)]
- [string]$ListTitle,
-
- [Parameter(Mandatory = $true)]
- [string]$ExpiryFieldInternalName
-)
-
-$isapiPath = Join-Path ([Environment]::GetFolderPath('CommonProgramFiles')) 'microsoft shared\Web Server Extensions\16\ISAPI'
-Add-Type -Path (Join-Path $isapiPath 'Microsoft.SharePoint.Client.Runtime.dll')
-Add-Type -Path (Join-Path $isapiPath 'Microsoft.SharePoint.Client.dll')
-
-$context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
-$context.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
-
-try {
- $list = $context.Web.Lists.GetByTitle($ListTitle)
- $field = $list.Fields.GetByInternalNameOrTitle($ExpiryFieldInternalName)
- $customActions = $list.UserCustomActions
- $context.Load($list)
- $context.Load($field)
- $context.Load($customActions)
- $context.ExecuteQuery()
-
- Write-Host "Liste: $($list.Title)"
- Write-Host "Feld: $($field.InternalName)"
- Write-Host "Field Customizer: $($field.ClientSideComponentId)"
- Write-Host ''
- Write-Host 'List User Custom Actions:'
-
- $actions = @($customActions | Where-Object {
- $_.Location -like 'ClientSideExtension.ListViewCommandSet*' -or
- $_.Name -like 'ExpiryIndicator*'
- })
-
- if ($actions.Count -eq 0) {
- Write-Warning 'Kein ExpiryIndicator Command Set an der Liste registriert.'
- }
- else {
- $actions | Select-Object Name, Title, Location, ClientSideComponentId, ClientSideComponentProperties |
- Format-List
- }
-}
-finally {
- $context.Dispose()
-}
diff --git a/sharepoint/assets/elements.xml b/sharepoint/assets/elements.xml
index 229e14e..41f6dd0 100644
--- a/sharepoint/assets/elements.xml
+++ b/sharepoint/assets/elements.xml
@@ -3,7 +3,6 @@
-
diff --git a/src/extensions/expiryIndicator/ExpiryIndicatorFieldCustomizer.manifest.json b/src/extensions/expiryIndicator/ExpiryIndicatorFieldCustomizer.manifest.json
index 59e6605..8bede9a 100644
--- a/src/extensions/expiryIndicator/ExpiryIndicatorFieldCustomizer.manifest.json
+++ b/src/extensions/expiryIndicator/ExpiryIndicatorFieldCustomizer.manifest.json
@@ -4,7 +4,7 @@
"alias": "ExpiryIndicatorFieldCustomizer",
"componentType": "Extension",
"extensionType": "FieldCustomizer",
- "version": "1.0.1",
+ "version": "1.0.3",
"manifestVersion": 2,
"requiresCustomScript": false
}
diff --git a/src/extensions/expiryIndicatorCommandSet/ExpiryIndicatorCommandSet.manifest.json b/src/extensions/expiryIndicatorCommandSet/ExpiryIndicatorCommandSet.manifest.json
index f00d361..a2e2909 100644
--- a/src/extensions/expiryIndicatorCommandSet/ExpiryIndicatorCommandSet.manifest.json
+++ b/src/extensions/expiryIndicatorCommandSet/ExpiryIndicatorCommandSet.manifest.json
@@ -4,7 +4,7 @@
"alias": "ExpiryIndicatorCommandSet",
"componentType": "Extension",
"extensionType": "ListViewCommandSet",
- "version": "1.0.1",
+ "version": "1.0.3",
"manifestVersion": 2,
"requiresCustomScript": false,
"items": {