Ob dein gewünschtes Verhalten nicht irgendwo zu Problemen führt, kann ich nicht sagen. Prinzipiell dürfte es sich aber leicht implementieren lassen über den loadDataContainer Hook (ungetestet):
PHP-Code:
final class DoNotCopyExcludedFieldsListener
{
public function onLoadDataContainer(string $dataContainer) : void
{
if (!isset($GLOBALS['TL_DCA'][$dataContainer]['fields'])
|| !is_array($GLOBALS['TL_DCA'][$dataContainer]['fields'])
) {
return;
}
$user = \Contao\BackendUser::getInstance();
if ($user->isAdmin) {
return;
}
foreach ($GLOBALS['TL_DCA'][$dataContainer]['fields'] as $name => $config) {
if (($config['exclude'] ?? false) && !$user->hasAccess($name, 'alexf')) {
$GLOBALS['TL_DCA'][$dataContainer]['fields'][$name]['eval']['doNotCopy'] = true;
}
}
}
}
Persönlich wünsche ich mir das Verhalten so, wie es derzeit ist. Wenn ich z.B. ein Inhaltselement mit einem Custom Template angelegt habe, dann soll ein Redakteur dieses kopieren können, aber nicht zwangsweise selbst Templates auswählen.
Lesezeichen