PHPackages                             ithilgers/pagetree-edit-highlight - 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. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. ithilgers/pagetree-edit-highlight

ActiveTypo3-cms-extension[Authentication &amp; Authorization](/categories/authentication)

ithilgers/pagetree-edit-highlight
=================================

Highlights pages in the backend page tree where the user has content editing permissions

1.0.0(3mo ago)0120GPL-2.0-or-laterPHP

Since Mar 16Pushed 1w agoCompare

[ Source](https://github.com/ithilgers/pagetree_edit_highlight)[ Packagist](https://packagist.org/packages/ithilgers/pagetree-edit-highlight)[ RSS](/packages/ithilgers-pagetree-edit-highlight/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (2)Dependencies (2)Versions (2)Used By (0)

TYPO3 Extension: PageTree Edit Highlight
========================================

[](#typo3-extension-pagetree-edit-highlight)

[![TYPO3 12](https://camo.githubusercontent.com/ebabe0a8105378f3f366ee2235e4dcd50a97659b62c3f6c7e7436f832f12a852/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31322e342d6f72616e67652e737667)](https://get.typo3.org/version/12)[![License](https://camo.githubusercontent.com/26f8b6541ea045cc1dbc2267208158b5a7ebbf5cf437c4b486d80fee9386f77e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d47504c2d2d322e302d2d6f722d2d6c617465722d626c75652e737667)](https://www.gnu.org/licenses/gpl-2.0.html)[![Packagist Version](https://camo.githubusercontent.com/74fff9991d7eb55e8daf1d4588134813ab05f5f488d01edfe4d0492c7c25f5ca/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f697468696c676572732f70616765747265652d656469742d686967686c69676874)](https://packagist.org/packages/ithilgers/pagetree-edit-highlight)[![Packagist Downloads](https://camo.githubusercontent.com/964f81652644d6a9e9e6aa6430f514d6caf421d31a7427e88cf9843e5643a3a9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f697468696c676572732f70616765747265652d656469742d686967686c69676874)](https://packagist.org/packages/ithilgers/pagetree-edit-highlight)

Visual highlighting of pages in the TYPO3 backend page tree where the current user has content editing permissions.

Features
--------

[](#features)

- **Visual Feedback**: Highlights pages with a customizable background color where the user has content editing rights
- **Filter Toggle**: Dropdown menu item "Editable pages only" in the page tree to filter down to editable pages only, with bridge nodes keeping the tree structure intact
- **Finds Hidden Pages**: When the filter is active, editable pages are found even in collapsed branches of the tree, independent of the currently expanded state
- **Localized**: Full English and German translations, respects TYPO3 backend language setting
- **Permission-Aware**: Only shows highlights based on actual user permissions
- **Admin-Optimized**: Skips highlighting for admin users (who have all permissions anyway)
- **Configurable**: Customize the highlight color through extension configuration
- **Lightweight**: Minimal performance impact using TYPO3's event system

Why This Extension?
-------------------

[](#why-this-extension)

In large TYPO3 installations with complex permission structures, editors often struggle to identify which pages they can actually edit. This extension provides instant visual feedback in the page tree, making it immediately clear where users have content editing permissions.

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

[](#installation)

### Via Composer (recommended)

[](#via-composer-recommended)

```
composer require ithilgers/pagetree-edit-highlight
```

### Activation

[](#activation)

After installation, activate the extension in the Extension Manager or via CLI:

```
vendor/bin/typo3 extension:setup
```

Configuration
-------------

[](#configuration)

The extension can be configured in the Extension Configuration:

1. Go to **Admin Tools &gt; Settings &gt; Extension Configuration**
2. Select `pagetree_edit_highlight`
3. Configure the following options:

OptionTypeDefaultDescription`highlightColor`string`rgba(0, 255, 0, 0.1)`Background color for pages where the user has content editing permissions. Accepts any valid CSS color value (hex, rgb, rgba, named colors).### Example Configuration

[](#example-configuration)

```
// config/system/settings.php
'EXTENSIONS' => [
    'pagetree_edit_highlight' => [
        'highlightColor' => 'rgba(255, 215, 0, 0.15)', // Golden highlight
    ],
],
```

Usage
-----

[](#usage)

Once installed and activated, the extension works automatically:

1. Log in to the TYPO3 backend as a non-admin user
2. Open the page tree
3. Pages where you have content editing permissions are highlighted with the configured color
4. Admin users see no highlighting (as they have permissions everywhere)

Technical Details
-----------------

[](#technical-details)

### Requirements

[](#requirements)

- TYPO3 12.4 or higher
- PHP 8.1 or higher

### How It Works

[](#how-it-works)

The extension uses TYPO3's PSR-14 event system:

- Listens to `AfterPageTreeItemsPreparedEvent`
- Checks each page for `Permission::CONTENT_EDIT` rights
- Applies background color to permitted pages
- Skips processing for admin users

When the filter is **inactive**, only the prepared (lazy-loaded) items are colorized — a lightweight per-item check. When the filter is **active**, the `PermittedPagesResolver` queries every editable page directly from the database and rebuilds the item list so editable pages are shown even when their branch is collapsed. The resolver runs a single permission query (via `getPagePermsClause`), walks ancestors level by level (one query per tree depth) to build bridge nodes, and caches its result per user for the request.

### Architecture

[](#architecture)

```
Classes/
├── EventListener/
│   ├── BackendTemplateListener.php  # Loads JS module in backend
│   └── PageTreeItemsListener.php    # Main event listener
└── Service/
    ├── PermittedPagesResolver.php   # Resolves editable pages + bridge nodes from DB
    └── PageTreeItemFactory.php      # Builds tree items for non-lazy-loaded pages

Configuration/
├── JavaScriptModules.php            # ES6 module registration
└── Services.yaml                    # Service registration

Resources/
├── Private/
│   └── Language/
│       ├── locallang.xlf                # English labels
│       └── de.locallang.xlf             # German translation
└── Public/
    └── JavaScript/
        └── permissions-filter-toggle.js  # Filter toggle UI

ext_conf_template.txt               # Extension configuration template
ext_emconf.php                      # Extension metadata
composer.json                       # Composer metadata

```

Compatibility
-------------

[](#compatibility)

TYPO3 VersionExtension VersionSupport12.4 LTS1.0.x, 1.1.x✅ ActiveContributing
------------

[](#contributing)

Contributions are welcome! Please:

1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request

License
-------

[](#license)

This extension is licensed under the [GNU General Public License v2.0 or later](https://www.gnu.org/licenses/gpl-2.0.html).

Support
-------

[](#support)

For bugs, feature requests, or questions:

- Open an issue on GitHub: [https://github.com/ithilgers/pagetree\_edit\_highlight](https://github.com/ithilgers/pagetree_edit_highlight)

Credits
-------

[](#credits)

Developed by Theodor Hilgers.

---

**Keywords**: TYPO3, backend, page tree, permissions, visual feedback, editor experience

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance90

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity34

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

Unknown

Total

1

Last Release

101d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/97b30d38419f629d584387084ffc6f79ab2b8859813fc9a5277b6f4d9ad97d2b?d=identicon)[ithilgers](/maintainers/ithilgers)

---

Tags

highlightpermissionsextensioneditorbackendtypo3pagetree

### Embed Badge

![Health badge](/badges/ithilgers-pagetree-edit-highlight/health.svg)

```
[![Health](https://phpackages.com/badges/ithilgers-pagetree-edit-highlight/health.svg)](https://phpackages.com/packages/ithilgers-pagetree-edit-highlight)
```

###  Alternatives

[friendsoftypo3/content-blocks

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

101466.4k45](/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)[in2code/femanager

Modern TYPO3 Frontend User Registration.

50774.5k7](/packages/in2code-femanager)[pagemachine/typo3-formlog

Form log for TYPO3

23233.9k7](/packages/pagemachine-typo3-formlog)[leuchtfeuer/locate

Locate - The users country, preferred language and other facts will be detected. Depending on configurable rules the user can be redirected to other languages or pages. Locate also provides geo blocking for configurable pages in configurable countries.

1185.3k](/packages/leuchtfeuer-locate)[friendsoftypo3/visual-editor

TYPO3 CMS Visual Editor - Brings a modern WYSIWYG editing experience to TYPO3 CMS.

523.1k2](/packages/friendsoftypo3-visual-editor)

PHPackages © 2026

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