Hallo Leolux,
folgende Lösung hätte ich dafür anzubieten:
Erzeuge im Ordner system/modules/ ein neues Verzeichnis mit Namen news_extended. Darin legst Du dann ein weiteres Verzeichnis dca an. Hier gehört dann diese Datei hin:
tl_news.php
PHP-Code:
<?php
$this->import('BackendUser', 'user');
// Benutzernamen für die Benutzer die von dieser Regelung ausgenommen werden sollen
$superadmins = array('superadmin', 'admin-a', 'admin-b');
// neue Optionen für das Feld Autor
// wenn diese Regelung nur für nicht-Admins gelten soll, so nutze die folgende Zeile
// if (!$this->user->isAdmin)
// ansonsten greift die Regel für alle nicht-Superadmins (s.o.)
if (!in_array($this->user->username, $superadmins))
{
unset($GLOBALS['TL_DCA']['tl_news']['fields']['author']['foreignKey']);
$GLOBALS['TL_DCA']['tl_news']['fields']['author']['options_callback'] = array('tl_news_extended', 'getLimitedAuthors');
}
class tl_news_extended extends tl_news
{
public function getLimitedAuthors()
{
$arrOptions = array();
$this->import('BackendUser', 'user');
$objUser = $this->Database->execute("SELECT id, name, groups FROM tl_user");
while($objUser->next())
{
foreach ($this->user->groups as $intGroup)
{
if ($arrGroups = unserialize($objUser->groups))
{
if (in_array($intGroup, $arrGroups))
$arrOptions[$objUser->id] = $objUser->name;
}
}
}
return $arrOptions;
}
}
Lesezeichen