Aktualisiere Versionsnummer auf 3.2.2 in README.md, package.json, package-lock.json und package-solution.json. Entferne inkompatibles Seiten-Provisioning-Feature und passe Tests entsprechend an.
This commit is contained in:
@@ -6,14 +6,14 @@ PortalSettings V3 ist ein providerbasiertes SPFx-WebPart für SharePoint Server
|
|||||||
|
|
||||||
| Eigenschaft | Wert |
|
| Eigenschaft | Wert |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Version | 3.2.1 |
|
| Version | 3.2.2 |
|
||||||
| SharePoint Framework | 1.4.1 |
|
| SharePoint Framework | 1.4.1 |
|
||||||
| Build-Node | 8.17.0 |
|
| Build-Node | 8.17.0 |
|
||||||
| npm | 6.x |
|
| npm | 6.x |
|
||||||
| Gulp | lokal 3.9.1 |
|
| Gulp | lokal 3.9.1 |
|
||||||
| Komponente | Client-Side WebPart |
|
| Komponente | Client-Side WebPart |
|
||||||
|
|
||||||
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.
|
Die Oberfläche wird vollständig vom WebPart erzeugt und verwendet kein `innerHTML`. Die moderne `SitePages/PortalSettings.aspx` wird bewusst per PnP-PowerShell provisioniert, damit das SPFx-WebPart auf SharePoint Server zuverlässig registriert bleibt.
|
||||||
|
|
||||||
## Unterstützte Solutions
|
## Unterstützte Solutions
|
||||||
|
|
||||||
@@ -165,12 +165,9 @@ sharepoint/solution/portal-settings.sppkg
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. `portal-settings.sppkg` im App Catalog durch Version `3.2.1.0` ersetzen.
|
1. `portal-settings.sppkg` im App Catalog durch Version `3.2.2.0` ersetzen.
|
||||||
2. Die App im Root Web der gewünschten Site Collection installieren oder aktualisieren.
|
2. Die App im Root Web der gewünschten Site Collection installieren oder aktualisieren.
|
||||||
3. Die App provisioniert automatisch die veröffentlichte Seite `SitePages/PortalSettings.aspx` mit dem WebPart.
|
3. Die Seite mit dem PnP-PowerShell-Skript erzeugen beziehungsweise reparieren:
|
||||||
4. Eine bereits vorhandene `PortalSettings.aspx` wird nicht überschrieben.
|
|
||||||
|
|
||||||
Optional kann eine Seite per PnP PowerShell erzeugt werden:
|
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
.\deployment\Add-PortalSettingsPage.ps1 `
|
.\deployment\Add-PortalSettingsPage.ps1 `
|
||||||
@@ -178,7 +175,7 @@ Optional kann eine Seite per PnP PowerShell erzeugt werden:
|
|||||||
-Publish
|
-Publish
|
||||||
```
|
```
|
||||||
|
|
||||||
Das Skript bleibt als Reparaturweg erhalten und verwendet standardmäßig ebenfalls `PortalSettings.aspx`.
|
Das Skript verwendet standardmäßig `PortalSettings.aspx` und platziert dort das Portal-Settings-WebPart.
|
||||||
|
|
||||||
## Migration von V2
|
## Migration von V2
|
||||||
|
|
||||||
@@ -191,9 +188,8 @@ V3 liest die vorhandenen Konfigurationsorte direkt weiter:
|
|||||||
Es ist keine Datenmigration in eine neue Liste erforderlich. Empfohlenes Vorgehen:
|
Es ist keine Datenmigration in eine neue Liste erforderlich. Empfohlenes Vorgehen:
|
||||||
|
|
||||||
1. Paket aktualisieren und die App im Root-Web aktualisieren.
|
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.
|
2. Das PnP-Skript ausführen, wenn `PortalSettings.aspx` fehlt oder das WebPart noch nicht enthält.
|
||||||
3. Falls eine vorhandene Seite das WebPart noch nicht enthält, das PnP-Skript als Reparaturweg ausführen.
|
3. Alle Provider laden, Konfigurationen testweise speichern und Root Web sowie Subwebs prüfen.
|
||||||
4. Alle Provider laden, Konfigurationen testweise speichern und Root Web sowie Subwebs prüfen.
|
|
||||||
|
|
||||||
## Diagnose
|
## Diagnose
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Stand: 21.07.2026
|
Stand: 21.07.2026
|
||||||
Branch: `dev-3.0`
|
Branch: `dev-3.0`
|
||||||
Zielversion: 3.2.1
|
Zielversion: 3.2.2
|
||||||
|
|
||||||
## Architektur
|
## Architektur
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ Zielversion: 3.2.1
|
|||||||
- [x] Versionen auf 3.0.0 angehoben.
|
- [x] Versionen auf 3.0.0 angehoben.
|
||||||
- [x] Node-Engine auf SPFx-1.4.1-Buildumgebung begrenzt.
|
- [x] Node-Engine auf SPFx-1.4.1-Buildumgebung begrenzt.
|
||||||
- [x] Alte monolithische Seiten-, 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] Automatisches Feature-Provisioning wegen fehlender WebPart-Registrierung auf SharePoint Server zurückgenommen.
|
||||||
- [x] Altes Gulp-Copy-Task entfernt.
|
- [x] Altes Gulp-Copy-Task entfernt.
|
||||||
- [x] Serve-Konfiguration auf WebPart Workbench umgestellt.
|
- [x] Serve-Konfiguration auf WebPart Workbench umgestellt.
|
||||||
- [x] Tests laufen vor der Paketierung.
|
- [x] Tests laufen vor der Paketierung.
|
||||||
@@ -76,7 +76,7 @@ Zielversion: 3.2.1
|
|||||||
|
|
||||||
- [ ] Ship-Paket mit Node.js 8.17.0 erstellen.
|
- [ ] Ship-Paket mit Node.js 8.17.0 erstellen.
|
||||||
- [ ] App im Root Web aktualisieren.
|
- [ ] App im Root Web aktualisieren.
|
||||||
- [ ] Automatisch provisionierte `PortalSettings.aspx` und enthaltenes WebPart prüfen.
|
- [ ] Per PnP-Skript provisionierte `PortalSettings.aspx` und enthaltenes WebPart prüfen.
|
||||||
- [ ] MegaMenu-Termsets laden und speichern.
|
- [ ] MegaMenu-Termsets laden und speichern.
|
||||||
- [ ] CustomBranding laden und schemaerhaltend speichern.
|
- [ ] CustomBranding laden und schemaerhaltend speichern.
|
||||||
- [ ] ExpiryIndicator-Standard speichern.
|
- [ ] ExpiryIndicator-Standard speichern.
|
||||||
|
|||||||
@@ -3,22 +3,9 @@
|
|||||||
"solution": {
|
"solution": {
|
||||||
"name": "portal-settings-client-side-solution",
|
"name": "portal-settings-client-side-solution",
|
||||||
"id": "1c98e32d-bb7b-43b7-9625-074d6e4ea286",
|
"id": "1c98e32d-bb7b-43b7-9625-074d6e4ea286",
|
||||||
"version": "3.2.1.0",
|
"version": "3.2.2.0",
|
||||||
"includeClientSideAssets": true,
|
"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": {
|
"paths": {
|
||||||
"zippedPackage": "solution/portal-settings.sppkg"
|
"zippedPackage": "solution/portal-settings.sppkg"
|
||||||
|
|||||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "portal-settings",
|
"name": "portal-settings",
|
||||||
"version": "3.2.1",
|
"version": "3.2.2",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "portal-settings",
|
"name": "portal-settings",
|
||||||
"version": "3.2.1",
|
"version": "3.2.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -15,9 +15,6 @@ var config = json('config/config.json');
|
|||||||
var copyAssets = json('config/copy-assets.json');
|
var copyAssets = json('config/copy-assets.json');
|
||||||
var manifest = json('src/webparts/portalSettings/PortalSettingsWebPart.manifest.json');
|
var manifest = json('src/webparts/portalSettings/PortalSettingsWebPart.manifest.json');
|
||||||
var styles = read('src/webparts/portalSettings/PortalSettings.scss');
|
var styles = read('src/webparts/portalSettings/PortalSettings.scss');
|
||||||
var pageAsset = read('sharepoint/assets/PortalSettings.aspx');
|
|
||||||
var elements = read('sharepoint/assets/elements.xml');
|
|
||||||
var upgradeActions = read('sharepoint/assets/upgrade-actions.xml');
|
|
||||||
var sourceFiles = [
|
var sourceFiles = [
|
||||||
'src/ui/Dom.ts',
|
'src/ui/Dom.ts',
|
||||||
'src/ui/DynamicFormRenderer.ts',
|
'src/ui/DynamicFormRenderer.ts',
|
||||||
@@ -25,27 +22,13 @@ var sourceFiles = [
|
|||||||
].map(read).join('\n');
|
].map(read).join('\n');
|
||||||
var dataService = read('src/services/PortalSettingsDataService.ts');
|
var dataService = read('src/services/PortalSettingsDataService.ts');
|
||||||
|
|
||||||
assert(packageJson.version === '3.2.1', 'Package-Version ist nicht 3.2.1.');
|
assert(packageJson.version === '3.2.2', 'Package-Version ist nicht 3.2.2.');
|
||||||
assert(solution.version === '3.2.1.0', 'Solution-Version ist nicht 3.2.1.0.');
|
assert(solution.version === '3.2.2.0', 'Solution-Version ist nicht 3.2.2.0.');
|
||||||
assert(solution.features && solution.features.length === 1, 'Das Seiten-Provisioning-Feature fehlt.');
|
assert(!solution.features, 'Das inkompatible Seiten-Provisioning-Feature darf nicht paketiert werden.');
|
||||||
assert(solution.features[0].assets.elementManifests.indexOf('elements.xml') >= 0 &&
|
|
||||||
solution.features[0].assets.elementFiles.indexOf('PortalSettings.aspx') >= 0 &&
|
|
||||||
solution.features[0].assets.upgradeActions.indexOf('upgrade-actions.xml') >= 0,
|
|
||||||
'Die Provisioning-Assets sind nicht vollständig registriert.');
|
|
||||||
assert(!!config.bundles['portal-settings-web-part'], 'WebPart-Bundle fehlt.');
|
assert(!!config.bundles['portal-settings-web-part'], 'WebPart-Bundle fehlt.');
|
||||||
assert(copyAssets.deployCdnPath === 'temp/deploy', 'Ship-Assets werden nicht nach temp/deploy geschrieben.');
|
assert(copyAssets.deployCdnPath === 'temp/deploy', 'Ship-Assets werden nicht nach temp/deploy geschrieben.');
|
||||||
assert(manifest.componentType === 'WebPart', 'Komponente ist kein WebPart.');
|
assert(manifest.componentType === 'WebPart', 'Komponente ist kein WebPart.');
|
||||||
assert(!fs.existsSync(path.join(root, 'src/assets/PortalSettings.aspx')), 'Alte ASPX-Seite ist noch vorhanden.');
|
assert(!fs.existsSync(path.join(root, 'src/assets/PortalSettings.aspx')), 'Alte ASPX-Seite ist noch vorhanden.');
|
||||||
assert(pageAsset.indexOf('Microsoft.SharePoint.WebControls.ClientSidePage') >= 0,
|
|
||||||
'Das provisionierte Asset ist keine moderne SharePoint-Seite.');
|
|
||||||
assert(elements.indexOf('Url="PortalSettings.aspx"') >= 0 && elements.indexOf('RootWebOnly="TRUE"') >= 0 &&
|
|
||||||
elements.indexOf('IgnoreIfAlreadyExists="TRUE"') >= 0 && elements.indexOf('Level="Published"') >= 0,
|
|
||||||
'PortalSettings.aspx wird nicht sicher im Root-Web provisioniert.');
|
|
||||||
assert(elements.indexOf('CanvasContent1') >= 0 &&
|
|
||||||
elements.indexOf('c41d05ec-0682-4af0-b807-649806ed56b3') >= 0,
|
|
||||||
'Das PortalSettings-WebPart fehlt im provisionierten Canvas.');
|
|
||||||
assert(upgradeActions.indexOf('71841e33-8bbd-4007-83a6-d950453226a2\\elements.xml') >= 0,
|
|
||||||
'Die Upgrade-Provisionierung fehlt.');
|
|
||||||
assert(!fs.existsSync(path.join(root, 'src/extensions/portalSettings/PortalSettingsApplicationCustomizer.ts')), 'Alter Application Customizer ist noch vorhanden.');
|
assert(!fs.existsSync(path.join(root, 'src/extensions/portalSettings/PortalSettingsApplicationCustomizer.ts')), 'Alter Application Customizer ist noch vorhanden.');
|
||||||
assert(sourceFiles.indexOf('innerHTML') < 0, 'UI darf innerHTML nicht verwenden.');
|
assert(sourceFiles.indexOf('innerHTML') < 0, 'UI darf innerHTML nicht verwenden.');
|
||||||
assert(dataService.indexOf('/_api/site/rootweb/UserCustomActions') >= 0 &&
|
assert(dataService.indexOf('/_api/site/rootweb/UserCustomActions') >= 0 &&
|
||||||
|
|||||||
Reference in New Issue
Block a user