PHPackages                             wapplersystems/site-sets-extras - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. wapplersystems/site-sets-extras

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

wapplersystems/site-sets-extras
===============================

Quality-of-life UX improvements for the TYPO3 v13 backend Site Settings / Site Sets area.

v0.3.1(1mo ago)03↓100%GPL-2.0-or-laterJavaScriptPHP ^8.3

Since May 6Pushed 1mo agoCompare

[ Source](https://github.com/WapplerSystems/site-sets-extras)[ Packagist](https://packagist.org/packages/wapplersystems/site-sets-extras)[ RSS](/packages/wapplersystems-site-sets-extras/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (2)Versions (3)Used By (0)

Site Sets Extras
================

[](#site-sets-extras)

Quality-of-life UX improvements for the TYPO3 v13 backend Site Settings / Site Sets area.

Requirements
------------

[](#requirements)

- TYPO3 v13
- PHP 8.3+

Installation
------------

[](#installation)

```
composer require wapplersystems/site-sets-extras
```

The extension auto-activates via composer; no manual extension setup needed beyond the usual `vendor/bin/typo3 extension:setup`.

Features
--------

[](#features)

### Collapsible navigation

[](#collapsible-navigation)

The Site Settings module's left-hand navigation gains collapsible parent blocks. **All blocks start collapsed by default.** Click the chevron in front of a parent label to fold/unfold its children.

- Expanded state is persisted in `localStorage` **per site** (key: `t3-settings-nav-expanded:`), so each site keeps its own preferences. Keys for categories no longer present in the configuration are pruned automatically on each render.
- Leaf items (no children, or whose only children are filtered out) show a faint bullet instead of the chevron.
- The chevron's clickable area is wider than the chevron itself (extended via an invisible pseudo-element) so it forgives slightly off-target clicks.

### Bulk expand / collapse

[](#bulk-expand--collapse)

Two buttons sit directly below the search input:

- **Expand all** — opens every collapsible block and writes them all to the persisted set.
- **Collapse all** — closes every block (active branch included) and empties the persisted set. The active-path auto-reveal is suppressed for the duration so the click feels final, releasing once the active leaf moves out of the closed branch.

Labels are translated via `Resources/Private/Language/{locallang,de.locallang}.xlf` — German is shipped, additional locales can be added as sibling `.locallang.xlf`files.

### Active-path highlight

[](#active-path-highlight)

When you select or scroll to a category, its entire ancestor chain in the navigation gets a subordinate fill. The active leaf still wears core's outlined ring as the destination; ancestors read as the trail. Collapsed ancestors auto-reveal so the active leaf is always visible.

If you explicitly close a parent while a child of it is still the active leaf, the parent stays highlighted (you're still semantically inside it) but its children hide. The override is session-only — when the active leaf moves out of that branch, the auto-reveal is restored.

### Keyboard

[](#keyboard)

- **Arrow Right** — expand the currently active section
- **Arrow Left** — collapse the currently active section
- **Enter / Space** — navigate (unchanged)

Arrow keys always target the *active* section, regardless of which button has focus, so scrolling the body re-points them automatically.

Every collapsible nav button carries an `aria-expanded` attribute mirroring its visual state.

### Click &amp; scroll behaviour

[](#click--scroll-behaviour)

- Clicking a nav item jumps **instantly** to its section. The previous smooth scroll caused core's IntersectionObserver to fire on every section in between, briefly revealing each branch en route.
- The first leaf of a parent now activates correctly on click — a brief post-click pin overrides the IntersectionObserver picking the still-partially-visible parent above it.
- Scrolling to the very bottom of the body marks the last leaf as active (core's "first visible in tree order" picker can never reach it on its own).

### Search

[](#search)

Typing in the navigation's search field auto-reveals all collapsed branches so matches stay visible. Clearing the search restores the previous collapse state.

How it works
------------

[](#how-it-works)

- A PSR-14 listener on `BeforeJavaScriptsRenderingEvent` adds a small ES module to every backend page's asset collection.
- A PSR-15 backend middleware registers the inline language label file via `PageRenderer::addInlineLanguageLabelFile()`. The asset listener fires too late for this — `PageRenderer::renderMainJavaScriptLibraries()`compiles inline labels into the `TYPO3.lang` global *before* the asset-render event runs.
- The module installs a `MutationObserver` on `document.body` and enhances any `` light-DOM tree it finds, re-running on every Lit re-render so search and state changes are handled correctly.
- A backend stylesheet is registered through `$GLOBALS['TYPO3_CONF_VARS']['BE']['stylesheets']`.

No vendor patching: TYPO3 core's compiled `editor.js` is left untouched.

License
-------

[](#license)

GPL-2.0-or-later

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance93

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

34d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1bf1871bc1b7151bf8fe8565cb988371eed0153225f151b214c46352e5a88aef?d=identicon)[iljam](/maintainers/iljam)

### Embed Badge

![Health badge](/badges/wapplersystems-site-sets-extras/health.svg)

```
[![Health](https://phpackages.com/badges/wapplersystems-site-sets-extras/health.svg)](https://phpackages.com/packages/wapplersystems-site-sets-extras)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k44](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

41515.2k](/packages/wazum-sluggi)[fluidtypo3/flux

The flux package from FluidTYPO3

150999.7k24](/packages/fluidtypo3-flux)[typo3/cms-redirects

TYPO3 CMS Redirects - Create manual redirects, list existing redirects and automatically createredirects on slug changes.

167.3M74](/packages/typo3-cms-redirects)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.0M6](/packages/netresearch-rte-ckeditor-image)[eliashaeussler/typo3-form-consent

Extension for TYPO3 CMS that adds double opt-in functionality to EXT:form

1590.6k](/packages/eliashaeussler-typo3-form-consent)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
