Как вы уже заметили, в Datalife Engine очень сильно различается функционал у групп Администраторы и Главные редакторы. Иногда хочется позволить доверенным лицам немного больше, но пускать в группу Администраторы тоже как-то неправильно. В этом туториале я расскажу как гибко раздать права для групп.
Итак будем идти по такой системе.
Сначала переназовем группы. Это так, чтобы не путаться и сразу понять задачи.
Стандартная группа -
Администраторы - переименовываем в
Главные администраторыСтандартная группа -
Главные редакторы - Переименовываем в
АдминистраторыСтандартная группа -
Журналисты - Переименовываем в
МодераторыУ этих групп ID должен быть соответственно 1,2,3.
Это важно!Их мы и будем переделывать. Если же вам нужен такой же функционал, как был первоначально у этих групп, вы можете создать новые стандартными средствами и раздать соответствующие права.
Перед модификацией советую сделать бекап файлов движка!
Значит сначала определимся какие именно права получат Администраторы и Модераторы
Открываем файл admin.php
И меняем
admin на
user у тех функций, которые хотим открыть Администраторам и Модераторам.
$system_modules = array('addnews' => 'user',
'editnews' => 'user',
'comments' => 'user',
'main' => 'user',
'options' => 'user',
'files' => 'user',
'editusers' => 'admin', //Редактирование пользователей
'preview' => 'user',
'categories' => 'admin', // Управление категориями
'massactions' => 'user',
'help' => 'admin', //Вывод подсказок
'wordfilter' => 'user',
'xfields' => 'admin', // Дополнительные поля
'dboption' => 'admin', //Настройка базы данных (Включать вместе с Бекапом и восстановлением БД )
'email' => 'admin', //Шаблоны e-mail сообщений
'static' => 'admin', //Управление статическими страницами
'editvote' => 'admin', //Правка голосований (включать вместе с Созданием голосований)
'addvote' => 'admin', //Создание голосований (включать вместе с Правкой голосований)
'templates' => 'admin', //Редактирование шаблонов
'newsletter' => 'admin', //Почтовая рассылка
'blockip' => 'admin', // Бан по IP
'usergroup' => 'admin', //Редактирование групп пользователей
'dumper' => 'admin', //Бекап и восстановление БД (Включать вместе с Настройкой базы данных)
'userfields' => 'admin', //Доп поля в профиле юзера
'banners' => 'admin', //Банеры
'clean' => 'admin', //Очистка бд
'rss' => 'admin', //Rss импорт
'iptools' => 'admin', //Утилитф IP
'search' => 'admin', //поиск и замена в бд
'rssinform' => 'admin', //RSS информер
'cmoderation' => 'user',
'googlemap' => 'admin', //Гуглевая карта сайта
Далее нам надо тупо отобразить в админке иконки на соответствующие разделы.
Открываем engine/inc/options.php и меняем поле в строке
access для каждой функции
значение на 2 если хотим чтобы видели
только Администраторыили на 3, чтобы видели и
Администраторы и Модераторы$options['config'] = array(
array(
'name' => $lang['opt_all'],
'url' => "$PHP_SELF?mod=options&action=syscon",
'descr' => $lang['opt_allc'],
'image' => "allset.png",
'access' => "1", //Это не трогаем
),
array(
'name' => $lang['opt_cat'],
'url' => "$PHP_SELF?mod=categories",
'descr' => $lang['opt_catc'],
'image' => "cats.png",
'access' => "1", // Управление категориями
),
array(
'name' => $lang['opt_db'],
'url' => "$PHP_SELF?mod=dboption",
'descr' => $lang['opt_dbc'],
'image' => "dbset.png",
'access' => "1", //Настройка базы данных (Включать вместе с Бекапом и восстановлением БД )
),
array(
'name' => $lang['opt_xfil'],
'url' => "$PHP_SELF?mod=xfields&xfieldsaction=configure",
'descr' => $lang['opt_xfilc'],
'image' => "xfset.png",
'access' => "1", // Дополнительные поля
),
);
$options['user'] = array(
array(
'name' => $lang['opt_priv'],
'url' => "$PHP_SELF?mod=options&action=personal",
'descr' => $lang['opt_privc'],
'image' => "pset.png",
'access' => "all", //Не трогаем
),
array(
'name' => $lang['opt_user'],
'url' => "$PHP_SELF?mod=editusers&action=list",
'descr' => $lang['opt_userc'],
'image' => "uset.png",
'access' => "1", //Редактирование пользователей
),
array(
'name' => $lang['opt_xprof'],
'url' => "$PHP_SELF?mod=userfields&xfieldsaction=configure",
'descr' => $lang['opt_xprofd'],
'image' => "xprof.png",
'access' => "1",
),
array(
'name' => $lang['opt_group'],
'url' => "$PHP_SELF?mod=usergroup",
'descr' => $lang['opt_groupc'],
'image' => "usersgroup.png",
'access' => "1", //Доп поля в профиле юзера
),
);
$options['templates'] = array(
array(
'name' => $lang['opt_t'],
'url' => "$PHP_SELF?mod=templates",
'descr' => $lang['opt_tc'],
'image' => "tmpl.png",
'access' => "1", //Редактирование шаблонов
),
array(
'name' => $lang['opt_email'],
'url' => "$PHP_SELF?mod=email",
'descr' => $lang['opt_emailc'],
'image' => "mset.png",
'access' => "1", //Шаблоны e-mail сообщений
),
);
$options['filter'] = array(
array(
'name' => $lang['opt_fil'],
'url' => "$PHP_SELF?mod=wordfilter",
'descr' => $lang['opt_filc'],
'image' => "fset.png",
'access' => "2", //Фильтр слов
),
array(
'name' => $lang['opt_ipban'],
'url' => "$PHP_SELF?mod=blockip",
'descr' => $lang['opt_ipbanc'],
'image' => "blockip.png",
'access' => "1", //Бан по IP
),
array(
'name' => $lang['opt_iptools'],
'url' => "$PHP_SELF?mod=iptools",
'descr' => $lang['opt_iptoolsc'],
'image' => "iptools.png",
'access' => "1", // IP Утилиты
),
array(
'name' => $lang['opt_sfind'],
'url' => "$PHP_SELF?mod=search",
'descr' => $lang['opt_sfindc'],
'image' => "find_base.png",
'access' => "1", // Поиск и замена в БД
),
);
$options['others'] = array(
array(
'name' => $lang['opt_static'],
'url' => "$PHP_SELF?mod=static",
'descr' => $lang['opt_staticd'],
'image' => "spset.png",
'access' => "1", //Статические страницы
),
array(
'name' => $lang['opt_banner'],
'url' => "$PHP_SELF?mod=banners&action=list",
'descr' => $lang['opt_bannerc'],
'image' => "ads.png",
'access' => "1", // Баннеры
),
array(
'name' => $lang['opt_vote'],
'url' => "$PHP_SELF?mod=editvote",
'descr' => $lang['opt_votec'],
'image' => "votes.png",
'access' => "1", //Голосования
),
array(
'name' => $lang['main_newsl'],
'url' => "$PHP_SELF?mod=newsletter",
'descr' => $lang['main_newslc'],
'image' => "email.png",
'access' => "1", //почтовая рассылка
),
array(
'name' => $lang['opt_img'],
'url' => "$PHP_SELF?mod=files",
'descr' => $lang['opt_imgc'],
'image' => "iset.png",
'access' => "1", //Управление загруженныим файлами и картинками
),
array(
'name' => $lang['opt_clean'],
'url' => "$PHP_SELF?mod=clean",
'descr' => $lang['opt_cleanc'],
'image' => "clean.png",
'access' => "1", //Очитка БД
),
array(
'name' => $lang['opt_rss'],
'url' => "$PHP_SELF?mod=rss",
'descr' => $lang['opt_rssc'],
'image' => "rss.gif",
'access' => "1", // RSS Импорт
),
array(
'name' => $lang['opt_rssinform'],
'url' => "$PHP_SELF?mod=rssinform",
'descr' => $lang['opt_rssinformc'],
'image' => "rss.gif",
'access' => "1", // RSS Информер ),
array(
'name' => $lang['opt_google'],
'url' => "$PHP_SELF?mod=googlemap",
'descr' => $lang['opt_googlec'],
'image' => "googlemap.png",
'access' => "1", // Гуглевая карта сайта
),
);
Расставили по вашему желанию? =))))
Далее иконки появились, но при попытке зайти в опцию пишет что в доступе отказано.
Тут начинается самое веселое.
Заходим в папку
engine/INC и видим кучу фалов))
Большая часть из них - наши модули админки.
В каждом модуле вначале идет код типа
if($member_db[1] != 1){ msg("error", $lang['addnews_denied'], $lang['db_denied']); }
Это строка проверяет, если юзер не из группы ID=1 то посылает его нафиг.
Нам же надо позволить в те или иные функции пустить юзера с ID 2 или 3.
Для этого меняем в зависимости от того, хотим мы дать доступ только
Администраторам или
и Администраторам и Модератором соответственно.
$member_db[1] != 1
на
$member_db[1] > 2
или
$member_db[1] > 3
Далее я перечислю названия файлов и соответствующий пункт в меню где надо произвести подобную замену
editusers.php //Редактирование пользователей
categories.php // Управление категориями
files.pgp //Управление загруженными картинками
massaction.php //массовые действия
xfields.php // Дополнительные поля
dboption.php //Настройка базы данных (Включать вместе с Бекапом и восстановлением БД )
dumper.php //Бекап и восстановление БД (Включать вместе с Настройкой базы данных)
email.php //Шаблоны e-mail сообщений
Изменений не требуется//Управление статическими страницами
editvote.php //Правка голосований (включать вместе с Созданием голосований)
addvote.php //Создание голосований (включать вместе с Правкой голосований)
templates.php //Редактирование шаблонов
newsletter.php //Почтовая рассылка
Блокировка посетителей по IP // Бан по IP
usergroup.php //Редактирование групп пользователей
Изменений не требуется //Доп поля в профиле юзера
banners.php //Банеры
clean.php //Очистка бд
rss.php //Rss импорт
iptools.php //Утилиты IP
search.php //поиск и замена в бд
rssinform.php //RSS информер
googlemap.php //Гуглевая карта сайта
Вот и все. Для проверки создайте тестовых пользователей и полазайте по настройкам.
Если есть какие-то вопросы обращайтесь, может что-то упустил)