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.