diff --git a/README.md b/README.md index 336088a..ae94563 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,14 @@ PortalSettings V3 ist ein providerbasiertes SPFx-WebPart für SharePoint Server | Eigenschaft | Wert | |---|---| -| Version | 3.1.0 | +| Version | 3.2.0 | | SharePoint Framework | 1.4.1 | | Build-Node | 8.17.0 | | npm | 6.x | | Gulp | lokal 3.9.1 | | Komponente | Client-Side WebPart | -Die frühere provisionierte `PortalSettings.aspx` und der leere Application Customizer wurden entfernt. Die Oberfläche wird vollständig vom WebPart erzeugt und verwendet kein `innerHTML`. +Die Oberfläche wird vollständig vom WebPart erzeugt und verwendet kein `innerHTML`. Ein schlankes SharePoint-Feature provisioniert beim Installieren der App im Root-Web automatisch die moderne `SitePages/PortalSettings.aspx` und platziert dort genau eine Instanz des WebParts. ## Unterstützte Solutions @@ -164,22 +164,20 @@ sharepoint/solution/portal-settings.sppkg ## Installation -1. `portal-settings.sppkg` im App Catalog durch Version `3.1.0.0` ersetzen. +1. `portal-settings.sppkg` im App Catalog durch Version `3.2.0.0` ersetzen. 2. Die App im Root Web der gewünschten Site Collection installieren oder aktualisieren. -3. Eine moderne Seite erstellen. -4. Das WebPart **Portal Settings** einmal auf der Seite hinzufügen. -5. Die Seite veröffentlichen und nur für die gewünschte Administratorgruppe verlinken. +3. Die App provisioniert automatisch die veröffentlichte Seite `SitePages/PortalSettings.aspx` mit dem WebPart. +4. Eine bereits vorhandene `PortalSettings.aspx` wird nicht überschrieben. Optional kann eine Seite per PnP PowerShell erzeugt werden: ```powershell .\deployment\Add-PortalSettingsPage.ps1 ` -SiteUrl 'http://clshp001/sites/target' ` - -PageName 'PortalSettingsV3' ` -Publish ``` -Die Standardseite heißt absichtlich `PortalSettingsV3.aspx`, damit die alte V2-Seite während der Abnahme erhalten bleiben kann. +Das Skript bleibt als Reparaturweg erhalten und verwendet standardmäßig ebenfalls `PortalSettings.aspx`. ## Migration von V2 @@ -191,11 +189,10 @@ V3 liest die vorhandenen Konfigurationsorte direkt weiter: Es ist keine Datenmigration in eine neue Liste erforderlich. Empfohlenes Vorgehen: -1. V3-Paket installieren. -2. `PortalSettingsV3.aspx` parallel zur alten Seite bereitstellen. -3. Alle drei Provider laden und Konfigurationen testweise speichern. -4. Root Web und Subwebs prüfen. -5. Erst danach die alte `PortalSettings.aspx` löschen oder archivieren. +1. Paket aktualisieren und die App im Root-Web aktualisieren. +2. Fehlt `PortalSettings.aspx`, wird sie durch das Feature angelegt. Eine vorhandene Seite bleibt unverändert. +3. Falls eine vorhandene Seite das WebPart noch nicht enthält, das PnP-Skript als Reparaturweg ausführen. +4. Alle Provider laden, Konfigurationen testweise speichern und Root Web sowie Subwebs prüfen. ## Diagnose diff --git a/ToDo.md b/ToDo.md index b346713..f38e462 100644 --- a/ToDo.md +++ b/ToDo.md @@ -2,7 +2,7 @@ Stand: 21.07.2026 Branch: `dev-3.0` -Zielversion: 3.1.0 +Zielversion: 3.2.0 ## Architektur @@ -51,7 +51,8 @@ Zielversion: 3.1.0 - [x] Versionen auf 3.0.0 angehoben. - [x] Node-Engine auf SPFx-1.4.1-Buildumgebung begrenzt. -- [x] Alte Feature-, Upgrade-, Copy- und Azure-Assets entfernt. +- [x] Alte monolithische Seiten-, Copy- und Azure-Assets entfernt. +- [x] Schlankes Feature zur automatischen Provisionierung der modernen PortalSettings.aspx ergänzt. - [x] Altes Gulp-Copy-Task entfernt. - [x] Serve-Konfiguration auf WebPart Workbench umgestellt. - [x] Tests laufen vor der Paketierung. @@ -74,7 +75,7 @@ Zielversion: 3.1.0 - [ ] Ship-Paket mit Node.js 8.17.0 erstellen. - [ ] App im Root Web aktualisieren. -- [ ] Moderne `PortalSettingsV3.aspx` provisionieren. +- [ ] Automatisch provisionierte `PortalSettings.aspx` und enthaltenes WebPart prüfen. - [ ] MegaMenu-Termsets laden und speichern. - [ ] CustomBranding laden und schemaerhaltend speichern. - [ ] ExpiryIndicator-Standard speichern. diff --git a/config/package-solution.json b/config/package-solution.json index a5509dd..167fe7d 100644 --- a/config/package-solution.json +++ b/config/package-solution.json @@ -3,9 +3,22 @@ "solution": { "name": "portal-settings-client-side-solution", "id": "1c98e32d-bb7b-43b7-9625-074d6e4ea286", - "version": "3.1.0.0", + "version": "3.2.0.0", "includeClientSideAssets": true, - "skipFeatureDeployment": false + "skipFeatureDeployment": false, + "features": [ + { + "title": "Portal Settings Page", + "description": "Provisioniert die moderne PortalSettings.aspx im Root-Web.", + "id": "71841e33-8bbd-4007-83a6-d950453226a2", + "version": "3.2.0.0", + "assets": { + "elementManifests": ["elements.xml"], + "elementFiles": ["PortalSettings.aspx"], + "upgradeActions": ["upgrade-actions.xml"] + } + } + ] }, "paths": { "zippedPackage": "solution/portal-settings.sppkg" diff --git a/deployment/Add-PortalSettingsPage.ps1 b/deployment/Add-PortalSettingsPage.ps1 index 19089d8..a929311 100644 --- a/deployment/Add-PortalSettingsPage.ps1 +++ b/deployment/Add-PortalSettingsPage.ps1 @@ -2,7 +2,7 @@ param( [Parameter(Mandatory = $true)] [string]$SiteUrl, - [string]$PageName = 'PortalSettingsV3', + [string]$PageName = 'PortalSettings', [switch]$Publish ) diff --git a/package-lock.json b/package-lock.json index 1f0ad71..28827f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "portal-settings", - "version": "3.1.0", + "version": "3.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 23dde93..92ad000 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "portal-settings", - "version": "3.1.0", + "version": "3.2.0", "private": true, "main": "lib/index.js", "engines": { diff --git a/sharepoint/assets/PortalSettings.aspx b/sharepoint/assets/PortalSettings.aspx new file mode 100644 index 0000000..edb5378 --- /dev/null +++ b/sharepoint/assets/PortalSettings.aspx @@ -0,0 +1,16 @@ +<%@ Page language="C#" Inherits="Microsoft.SharePoint.WebControls.ClientSidePage, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> +<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> + +
+ + + + diff --git a/sharepoint/assets/elements.xml b/sharepoint/assets/elements.xml new file mode 100644 index 0000000..fc0dedd --- /dev/null +++ b/sharepoint/assets/elements.xml @@ -0,0 +1,14 @@ + +