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.
Hat dir der Artikel gefallen?
Werkraum News:
Besuche auf meiner Homepage simulieren
Du hast eine Website oder ein Projekt mit einem tollen Backend erstellt? Aber du bist dir nicht sicher, ob es auch vielen Besuchern standhalten wird?
Toggle Menü in TYPO3 mit 2 Sprachen
Nur 2 Sprachen in TYPO3 und ein Button, der je nach Sprache die andere Option anzeigt?
Tools die jeder Webentwickler kennen sollte
Das Web entwickelt sich rasant. Um mithalten zu können, brauchen wir als Entwickler die richtigen Werkzeuge. Zum Glück gibt es immer mehr davon kostenlos im Internet. Einige…