feat: Update version to 3.0.2 and add default footer elements for portal settings

This commit is contained in:
Torsten Brendgen
2026-08-18 16:09:16 +02:00
parent 6f548362e2
commit c529716a18
10 changed files with 94 additions and 15 deletions
+16
View File
@@ -21,6 +21,22 @@ assert(empty.config.schemaVersion === 2, 'Das aktuelle Schema muss Version 2 ver
assert(empty.config.portalSettings.providerKey === 'custombranding', 'PortalSettings Provider-Key fehlt.');
assert(empty.config.portalSettings.contractVersion === 1, 'PortalSettings Contract-Version fehlt.');
assert(empty.config.enabled === true, 'Branding muss standardmaessig aktiviert sein.');
assert(empty.config.placeholderbottom.elements.length === 1, 'Der Standard-Footer fehlt.');
assert(empty.config.placeholderbottom.elements[0].children[0].content === 'Portal Settings',
'Der Standard-Footer enthaelt nicht den Portal-Settings-Link.');
assert(empty.config.placeholderbottom.elements[0].children[0].attributes.href ===
siteUrl + '/SitePages/PortalSettings.aspx', 'Der Standard-Footer verweist nicht auf PortalSettings.');
var emptyBottom = normalize({ placeholderbottom: { elements: [] } }, siteUrl);
assert(emptyBottom.config.placeholderbottom.elements.length === 1,
'Ein geleertes Footer-Array muss auf den Standard-Footer zurueckfallen.');
var customBottom = normalize({
placeholderbottom: { elements: [{ type: 'span', content: 'Eigener Footer' }] }
}, siteUrl);
assert(customBottom.config.placeholderbottom.elements.length === 1 &&
customBottom.config.placeholderbottom.elements[0].content === 'Eigener Footer',
'Ein eigener Footer muss den Standard-Footer ersetzen.');
var legacy = normalize({ elements: [{ type: 'span', content: 'Alt' }] }, siteUrl);
assert(legacy.config.placeholdertop.elements.length === 1, 'Das Legacy-Root-Array muss weiter funktionieren.');
+4 -2
View File
@@ -24,8 +24,8 @@ var appSource = read('src/extensions/customBranding/CustomBrandingApplicationCus
var rendererSource = read('src/extensions/customBranding/BrandingDomRenderer.ts');
var classicSource = read('classic/custom-branding-classic.js');
assert(packageJson.version === '3.0.1', 'package.json hat nicht Version 3.0.1.');
assert(solution.version === '3.0.1.0', 'Solution-Version ist inkonsistent.');
assert(packageJson.version === '3.0.2', 'package.json hat nicht Version 3.0.2.');
assert(solution.version === '3.0.2.0', 'Solution-Version ist inkonsistent.');
assert(solution.skipFeatureDeployment === true, 'Tenantweite Bereitstellung ist nicht aktiviert.');
assert(!solution.features, 'Die alte web-scoped Feature-Registrierung ist noch vorhanden.');
assert(!fs.existsSync(path.join(root, 'sharepoint/assets/elements.xml')), 'elements.xml muss entfernt sein.');
@@ -33,6 +33,8 @@ assert(serveText.indexOf('onclick') < 0, 'serve.json enthaelt ein Event-Attribut
assert(serveText.indexOf('placeholdertop') >= 0, 'serve.json verwendet nicht das echte Schema.');
assert(rendererSource.indexOf('innerHTML') < 0 && appSource.indexOf('innerHTML') < 0, 'Der moderne Renderer darf innerHTML nicht verwenden.');
assert(classicSource.indexOf('innerHTML') < 0, 'Die Classic-Runtime darf innerHTML nicht verwenden.');
assert(classicSource.indexOf('~sitecollection/SitePages/PortalSettings.aspx') >= 0,
'Der Standard-Footer fehlt in der Classic-Runtime.');
assert(appSource.indexOf('changedEvent.remove') >= 0, 'Lifecycle-Cleanup fuer changedEvent fehlt.');
assert(appSource.indexOf('_onTopPlaceholderDisposed') >= 0 && appSource.indexOf('_onBottomPlaceholderDisposed') >= 0,
'Top- und Bottom-Placeholder brauchen unabhaengige Dispose-Handler.');