- Added localization support for loading states, empty navigation, and submenu actions in both German and English. - Introduced new properties in IMenuItem for description, openInNewWindow, and external links. - Updated SPTermStorePickerService to handle cache versioning and language-specific caching. - Implemented a new MegaMenuCore service for handling term properties, cache management, and navigation URL resolution. - Refactored TaxonomyNavigationService to build menu hierarchy and filter hidden terms. - Added automated tests for MegaMenu core functionalities and static asset validation. - Removed unused ItemDictionary service. - Created a comprehensive ToDo document outlining the implementation status and future tasks.
66 lines
2.0 KiB
Markdown
66 lines
2.0 KiB
Markdown
# MegaMenu für klassische SharePoint-Seiten
|
|
|
|
Die Classic-Variante verwendet dieselbe Site-Collection-Konfiguration wie der moderne Application Customizer. Sie unterstützt `megaMenu` und `flyout`, wird aber unabhängig von SPFx über ScriptLink geladen.
|
|
|
|
## Dateien
|
|
|
|
- `megamenu-classic.css`
|
|
- `megamenu-services-standalone.js`
|
|
- `megamenu-classic.js`
|
|
|
|
Mit `build-classic.ps1` werden die Dateien nach `classic/dist` kopiert.
|
|
|
|
## Konfiguration
|
|
|
|
Die Classic-Variante liest die `ClientSideComponentProperties` der zentralen MegaMenu-Site-Action:
|
|
|
|
```json
|
|
{
|
|
"termSetId": "7948e6f9-7af4-431e-b6fe-328122f2746c",
|
|
"termSetName": "Global Navigation",
|
|
"cacheMinutes": 15,
|
|
"cacheVersion": "1",
|
|
"menuMode": "megaMenu",
|
|
"debug": false
|
|
}
|
|
```
|
|
|
|
`menuMode` erlaubt `megaMenu` oder `flyout`. `termSetId` hat Vorrang vor `termSetName`.
|
|
|
|
Die lokalen benutzerdefinierten Term-Eigenschaften `MegaMenu.Hidden`, `MegaMenu.OpenInNewWindow` und `MegaMenu.Description` werden wie in der modernen Variante ausgewertet. Der Cache ist nach Site Collection, Sprache und `cacheVersion` getrennt.
|
|
|
|
## Einbindung
|
|
|
|
Die drei Dateien beispielsweise nach `/SiteAssets/megamenu/` hochladen und in dieser Reihenfolge laden:
|
|
|
|
```html
|
|
<link rel="stylesheet" href="/SiteAssets/megamenu/megamenu-classic.css" />
|
|
<script src="/SiteAssets/megamenu/megamenu-services-standalone.js"></script>
|
|
<script src="/SiteAssets/megamenu/megamenu-classic.js"></script>
|
|
```
|
|
|
|
Die Einbindung kann über die Masterpage oder eine Site-scoped ScriptLink-CustomAction erfolgen. Der moderne SPFx Application Customizer wird auf klassischen Seiten nicht ausgeführt.
|
|
|
|
## Optionaler Container
|
|
|
|
Vor dem Laden kann ein anderer Zielcontainer gesetzt werden:
|
|
|
|
```html
|
|
<script>
|
|
window.MegaMenuConfig = {
|
|
containerId: 's4-titlerow',
|
|
debug: true
|
|
};
|
|
</script>
|
|
```
|
|
|
|
## Diagnose
|
|
|
|
```javascript
|
|
typeof window.MegaMenuServices
|
|
typeof window.MegaMenuClassic
|
|
window.MegaMenuClassic.reload()
|
|
```
|
|
|
|
Benutzer benötigen Leserechte auf den verwendeten Managed-Metadata-Termstore.
|