Den TYPO3 Seitenbaum erweitern

Du hast ein TYPO3 mit verschiedenen Backendgruppen und unterschiedlichen Berechtigungen? Der Redakteur muss den gesamten Seitenbaum sehen, darf aber nur einen Teil bearbeiten? Dann könnte der folgende Ansatz helfen: Wir prüfen die Lese-/Schreibrechte pro Seite im Seitenbaum und fügen eine passende CSS-Klasse hinzu.

Zuerst erstellen wir eine passende CSS Datei: <extensionname>/Resources/Public/Css/Backend/tree.css

.page-allow-edit {
    fill: rgba(122, 149, 15, .25)!important;
}

.page-disallow-edit {
    fill: rgba(238, 132, 51, .25)!important;
}

.content-allow-edit {
    fill: rgba(122, 149, 15, .25)!important;
}

.content-disallow-edit {
    fill: rgba(238, 132, 51, .25)!important;
}

So wird das dann registriert <extensionname>/ext_tables.php

<?php

declare(strict_types=1);

if (!defined('TYPO3')) {
    die('Access denied.');
}

$GLOBALS['TBE_STYLES']['skins']['extensionname']['stylesheetDirectories'][] = 'EXT:extensionname/Resources/Public/Css/Backend/';

Nun überschreiben wir den TreeController.php vom TYPO3 Core (mir ist keine bessere Lösung eingefallen) <extensionname>­/Classes­/XClass­/TreeController.php

<?php

namespace Werkraum\Extensionname\XClass;

use TYPO3\CMS\Core\Type\Bitmask\Permission;

class TreeController extends \TYPO3\CMS\Backend\Controller\Page\TreeController
{

    protected function resolvePageCssClassNames(array $page): string
    {
        $result = parent::resolvePageCssClassNames($page);
        $backendUser = $this->getBackendUser();
        $allowPageEdit = $backendUser->doesUserHaveAccess($page, Permission::PAGE_EDIT)
            && $backendUser->check('tables_modify', 'pages')
            && $backendUser->checkLanguageAccess(0);
        if ($allowPageEdit) {
            $result .= ' page-allow-edit';
        } else {
            $result .= ' page-disallow-edit';
        }

        $allowContentEdit = $backendUser->doesUserHaveAccess($page, Permission::CONTENT_EDIT);
        if ($allowContentEdit) {
            $result .= ' content-allow-edit';
        } else {
            $result .= ' content-disallow-edit';
        }

        return $result;
    }
}

Zum Schluss den neuen TreeController "XClassen" <extensionname>/ext_localconf.php

<?php

$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\TYPO3\CMS\Backend\Controller\Page\TreeController::class] = [
    'className' => \Werkraum\Extensionname\XClass\TreeController::class,
];

Geprüft mit TYPO3 11.5.25.

Kategorien

Devblog

Tags

TYPO3

Hat Dir der Artikel gefallen?