Add default PortalSettings footer link

This commit is contained in:
Torsten Brendgen
2026-08-18 15:56:41 +02:00
parent 64a157f7a8
commit eef1ac7394
8 changed files with 27 additions and 9 deletions
+2 -2
View File
@@ -6,7 +6,7 @@ PortalSettings V3 ist ein providerbasiertes SPFx-WebPart für SharePoint Server
| Eigenschaft | Wert | | Eigenschaft | Wert |
|---|---| |---|---|
| Version | 3.0.2 | | Version | 3.0.3 |
| 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 |
@@ -155,7 +155,7 @@ sharepoint/solution/portal-settings.sppkg
## Installation ## Installation
1. `portal-settings.sppkg` im App Catalog durch Version `3.0.2.0` ersetzen. 1. `portal-settings.sppkg` im App Catalog durch Version `3.0.3.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. Eine moderne Seite erstellen. 3. Eine moderne Seite erstellen.
4. Das WebPart **Portal Settings** einmal auf der Seite hinzufügen. 4. Das WebPart **Portal Settings** einmal auf der Seite hinzufügen.
+1 -1
View File
@@ -2,7 +2,7 @@
Stand: 21.07.2026 Stand: 21.07.2026
Branch: `dev-3.0` Branch: `dev-3.0`
Zielversion: 3.0.2 Zielversion: 3.0.3
## Architektur ## Architektur
+1 -1
View File
@@ -3,7 +3,7 @@
"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.0.2.0", "version": "3.0.3.0",
"includeClientSideAssets": true, "includeClientSideAssets": true,
"skipFeatureDeployment": false "skipFeatureDeployment": false
}, },
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "portal-settings", "name": "portal-settings",
"version": "3.0.2", "version": "3.0.3",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "portal-settings", "name": "portal-settings",
"version": "3.0.2", "version": "3.0.3",
"private": true, "private": true,
"main": "lib/index.js", "main": "lib/index.js",
"engines": { "engines": {
@@ -94,7 +94,21 @@ export const CustomBrandingSettingsProvider: ISettingsProvider<ICustomBrandingSe
allowedCssHosts: [], allowedCssHosts: [],
cssfiles: [], cssfiles: [],
placeholdertop: { elements: [] }, placeholdertop: { elements: [] },
placeholderbottom: { elements: [] } placeholderbottom: {
elements: [{
type: 'div',
attributes: { role: 'contentinfo', 'aria-label': 'Portalverwaltung' },
styles: {
'background-color': '#323130', color: '#ffffff', padding: '12px 16px',
'text-align': 'center', width: '100%', 'box-sizing': 'border-box'
},
children: [{
type: 'a', content: 'Portal Settings',
attributes: { href: '~sitecollection/SitePages/PortalSettings.aspx' },
styles: { color: '#ffffff', 'text-decoration': 'underline' }
}]
}]
}
}), }),
normalize: (value: any): ICustomBrandingSettings => { // tslint:disable-line:no-any normalize: (value: any): ICustomBrandingSettings => { // tslint:disable-line:no-any
const source: any = value && typeof value === 'object' ? value : {}; // tslint:disable-line:no-any const source: any = value && typeof value === 'object' ? value : {}; // tslint:disable-line:no-any
+4
View File
@@ -35,6 +35,10 @@ const branding: ISettingsProvider<any> = getSettingsProvider('custombranding');
assert(!!branding.storage.action, 'CustomBranding-Aktivierungsdefinition fehlt.'); assert(!!branding.storage.action, 'CustomBranding-Aktivierungsdefinition fehlt.');
assert(branding.storage.action.name === 'CustomBranding', 'CustomBranding Action-Name ist nicht stabil.'); assert(branding.storage.action.name === 'CustomBranding', 'CustomBranding Action-Name ist nicht stabil.');
assert(branding.storage.action.location === 'ClientSideExtension.ApplicationCustomizer', 'CustomBranding Action-Location ist ungültig.'); assert(branding.storage.action.location === 'ClientSideExtension.ApplicationCustomizer', 'CustomBranding Action-Location ist ungültig.');
const defaultBranding: any = branding.createDefault(); // tslint:disable-line:no-any
assert(defaultBranding.placeholderbottom.elements.length === 1, 'Standard-Footer für CustomBranding fehlt.');
assert(defaultBranding.placeholderbottom.elements[0].children[0].attributes.href ===
'~sitecollection/SitePages/PortalSettings.aspx', 'Standard-Footer verweist nicht auf PortalSettings.');
const normalizedBranding: any = branding.normalize({ elements: [{ type: 'span' }], future: 7 }); // tslint:disable-line:no-any const normalizedBranding: any = branding.normalize({ elements: [{ type: 'span' }], future: 7 }); // tslint:disable-line:no-any
assert(normalizedBranding.placeholdertop.elements.length === 1, 'Legacy-Branding-Elemente werden nicht übernommen.'); assert(normalizedBranding.placeholdertop.elements.length === 1, 'Legacy-Branding-Elemente werden nicht übernommen.');
assert(normalizedBranding.future === 7, 'Unbekannte Branding-Properties gehen verloren.'); assert(normalizedBranding.future === 7, 'Unbekannte Branding-Properties gehen verloren.');
+2 -2
View File
@@ -21,8 +21,8 @@ var sourceFiles = [
'src/ui/PortalSettingsApp.ts' 'src/ui/PortalSettingsApp.ts'
].map(read).join('\n'); ].map(read).join('\n');
assert(packageJson.version === '3.0.2', 'Package-Version ist nicht 3.0.2.'); assert(packageJson.version === '3.0.3', 'Package-Version ist nicht 3.0.3.');
assert(solution.version === '3.0.2.0', 'Solution-Version ist nicht 3.0.2.0.'); assert(solution.version === '3.0.3.0', 'Solution-Version ist nicht 3.0.3.0.');
assert(!solution.features, 'Alte ASPX-Feature-Assets sind noch registriert.'); assert(!solution.features, 'Alte ASPX-Feature-Assets sind noch 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.');