Aktualisiere Versionsnummern auf 1.0.3 in package.json, package-solution.json, Manifestdateien und verbessere README.md mit neuen Registrierungsanweisungen; entferne Test-ExpiryIndicatorRegistration.ps1.

This commit is contained in:
Torsten Brendgen
2026-07-17 00:01:56 +02:00
parent f574a749d1
commit 5e2086a1d8
9 changed files with 26 additions and 101 deletions

View File

@@ -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 {

View File

@@ -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()

View File

@@ -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()
}