Shaman Daniels Posted July 29, 2015 Report Share Posted July 29, 2015 (edited) Как всем известно в vii (как и в DLE) есть еще 3 группы по мимо "Администратора", но предусмотреть под них права доступа никто не удосужился, не в счёт группа "Техподдержки", где можно отвечать и помогать пользователям, но, при этом "Администраторы" этого делать не могут, но, не в этом суть. В итоге с правами доступа всё запутано...В данной теме я попытаюсь максимально просто объяснить как-же всё-таки создать еще несколько панелей-доступа. PS: Тема находиться на стадии АНОНСА - это говорит о том, что, тема будет обновляться и в последствии будут решаться проблемы по мере их нахождения...И так буду показывать на примере всё той-же Vii 2.0 (Nulled Tesla). Для начала нам потребуется:1. Файл controlpanel.php (Находиться в корне сайта)2. Папка inc (Находиться в /system/)Вот и вся по сути панель управления для группы "Администратор" (номер - 1). Мы же будем делать новую панель для "Модератора" (номер - 3).Для начала поработаем с файлом controlpanel.php:1. Переименуем его в - moderpanel.php (Тут можно что-то и своё сообразить)2. Ищем: define('ADMIN_DIR', ROOT_DIR.'/system/inc'); Заменяем на: define('MODER_DIR', ROOT_DIR.'/system/inc-moder'); 3. Ищем: $admin_link = $config['home_url'].'controlpanel.php'; Заменяем на: $admin_link = $config['home_url'].'moderpanel.php'; 4. Ищем: include ADMIN_DIR.'/functions.php'; include ADMIN_DIR.'/login.php'; Заменяем на: include MODER_DIR.'/functions.php'; include MODER_DIR.'/login.php'; PS: Что-бы было понятно "объясню на пальцах": Мы просто изменили путь с ADMIN_DIR на MODER_DIR и указали другие ссылки к файлу и нашей папке, дабы всё это лезло в нашу новую панель управления, а не старую панель администратора. На этом робота с файлом controlpanel.php, а после наших изменений уже moderpanel.php - завершены. Можно загружать в корень сайта.Теперь работаем с папкой inc:1. Переименовываем её в - inc-moder PS: Как вы помните в moderpanel.php мы указали именно такое название для папки, если вы измените на другое - не забываем поменять и в файле.Основные файлы для роботы это: functions.php, login.php, main.php, massaction.php, mod.php. Всё остальные - это индивидуальные модули, каждый из которых отвечает за что-то своё, будь это бан-фильтр, создание страниц или-же заметки... За каждый модуль объяснять не стану, покажу на одном примере - управление пользователями (users.php). И так, у нас с вами есть папка inc-moder, где находятся такие файлы:Работаем с login.php:2. Ищем: if($user_info['user_group'] == 1) include ADMIN_DIR.'/mod.php'; Заменяем на: if($user_info['user_group'] == 3) include MODER_DIR.'/mod.php'; 2.1.Ищем: WHERE user_id = '".$cookie_user_id."' AND user_group = '1'"); Заменяем на: WHERE user_id = '".$cookie_user_id."' AND user_group = '3'"); 2.2.Ищем: AND user_password = '".$md5_pass."' AND user_group = 1"); Заменяем на: AND user_password = '".$md5_pass."' AND user_group = 3"); PS: Думаю объяснять почему мы так сделали - не нужно, ибо про номер группы и путь описано выше. Нет?! - Читайте внимательно!Работаем с functions.php:3. Тут смотрите на своё усмотрение. Из основных работ нам требуется заменить пути картинок и стилей, для этого в notepad++ задаём наш старый "поиск -> заменить" и ищем: /inc/ Заменяем на: /inc-moder/ У меня их заменило ~12, а дальше - сами меняйте названия title, форму входа, кнопки и т.д., всё зависит от вашего дизайна.PS: Этот пункт можно и пропустить т.к. пути картинок ссылаются на папку inc, в которой и есть эти картинки. В таком случае из папки inc-moder можно смело удалять папки images и js т.к. они не будут использоваться и только по сути занимают место.Работаем с mod.php:4. Находим там весь блок: switch($mod){ //Настройки системы case "system": include ADMIN_DIR.'/system.php'; break; //Управление БД case "db": include ADMIN_DIR.'/db.php'; break; //dumper case "dumper": include ADMIN_DIR.'/dumper.php'; break; //Личные настройки case "mysettings": include ADMIN_DIR.'/mysettings.php'; break; //Пользователи case "users": include ADMIN_DIR.'/users.php'; break; //Массовые действия case "massaction": include ADMIN_DIR.'/massaction.php'; break; //Заметки case "notes": include ADMIN_DIR.'/notes.php'; break; //Подарки case "gifts": include ADMIN_DIR.'/gifts.php'; break; //Сообщества case "groups": include ADMIN_DIR.'/groups.php'; break; //Шаблоны сайта case "tpl": include ADMIN_DIR.'/tpl.php'; break; //Шаблоны сообщений case "mail_tpl": include ADMIN_DIR.'/mail_tpl.php'; break; //Рассылка сообщений case "mail": include ADMIN_DIR.'/mail.php'; break; //Фильтр по: IP, E-Mail case "ban": include ADMIN_DIR.'/ban.php'; break; //Поиск и Замена case "search": include ADMIN_DIR.'/search.php'; break; //Статические страницы case "static": include ADMIN_DIR.'/static.php'; break; //Антивирус case "antivirus": include ADMIN_DIR.'/antivirus.php'; break; //Логи посещений case "logs": include ADMIN_DIR.'/logs.php'; break; //Статистика case "stats": include ADMIN_DIR.'/stats.php'; break; //Видео case "videos": include ADMIN_DIR.'/videos.php'; break; //Музыка case "musics": include ADMIN_DIR.'/musics.php'; break; //Альбомы case "albums": include ADMIN_DIR.'/albums.php'; break; //Страны case "country": include ADMIN_DIR.'/country.php'; break; //Города case "city": include ADMIN_DIR.'/city.php'; break; //Список жалоб case "report": include ADMIN_DIR.'/report.php'; break; //Доп. поля профилей case "xfields": include ADMIN_DIR.'/xfields.php'; break; //Фильтр слов case "wordfilter": include ADMIN_DIR.'/wordfilter.php'; break; //Игры case "apps": include ADMIN_DIR.'/apps.php'; break; //Отзывы case "reviews": include ADMIN_DIR.'/reviews.php'; break; //Отчеты по SMS case "sms": include ADMIN_DIR.'/sms.php'; break; default: include ADMIN_DIR.'/main.php'; } Заменяем на: switch($mod){ //Пользователи case "users": include MODER_DIR.'/users.php'; break; //Массовые действия case "massaction": include MODER_DIR.'/massaction.php'; break; default: include MODER_DIR.'/main.php'; } Почему? Всё потому что, мы с вами дали возможность модераторам управлять пользователями и всё, а массовые действия должны быть обязательно.PS: Если вы хотите дать больше возможностей, то оставляйте больше подключённых модулей. Действуйте по аналогии с тем что удалили выше. ВАЖНО! Если вы оставили больше возможностей и указали это в mod.php, не забывайте что и файл должен быть в папке (См. пункт 1).Работаем с massaction.php:5. Заходим и удаляем следующие блоки: //################### Масовые действия с заметками ###################// //################### Масовые действия с сообещствами ###################// //################### Масовые действия с видеозаписям ###################// //################### Масовые действия с аудиозаписями ###################// //################### Масовые действия с альбомами ###################// Оставляем только: //################### Масовые действия с юзерами ###################// Почему так - описано выше.PS: Если вы добавили больше функций, соответственно нужно оставить определенный блок. Включаем логику товарищи!Работаем с main.php:6. Находим: echoheader(); echoblock('Настройка системы', 'Настройка общих параметров скрипта, а также настройка системы безопасности скрипта', 'system', 'settings'); echoblock('Управление БД', 'Резервное копирование и восстановление базы данных', 'db', 'db'); echoblock('Личные настройки', 'Управление и настройка вашего личного профиля пользователя.', 'mysettings', 'mysettings'); echoblock('Пользователи', 'Управление зарегистрированными на сайте пользователями, редактирование их профилей и блокировка аккаунта', 'users', 'users'); echoblock('Доп. поля профилей', 'В данном разделе проводится настройка дополнительных полей профиля пользователей', 'xfields', 'xfields'); echoblock('Видео', 'Управление видеозаписями, редактирование и удаление', 'videos', 'video'); echoblock('Музыка', 'Управление аудиозаписями, редактирование и удаление', 'musics', 'music'); echoblock('Альбомы', 'Управление альбомами, редактирование и удаление', 'albums', 'photos'); echoblock('Заметки', 'Управления заметками, которые опубликовали пользователи сайта', 'notes', 'notes'); echoblock('Подарки', 'Управление подарками на сайте, добавление, редактирование и удаление', 'gifts', 'gifts'); echoblock('Сообщества', 'Управление сообществами, редактирование и удаление', 'groups', 'groups'); echoblock('Жалобы '.$new_report, 'Список жалоб, поступивших от посетителей сайта на фотографии, записи, видеозаписи или заметки', 'report', 'report'); echoblock('Шаблоны сайта', 'Редактирование шаблонов, которые используются на вашем сайте', 'tpl', 'tpl'); echoblock('Шаблоны сообщений', 'Настройка шаблонов E-Mail сообщений, которые отсылает скрипт с сайта при уведомлении.', 'mail_tpl', 'mail_tpl'); echoblock('Рассылка сообщений', 'Создание и массовая отправка E-Mail сообщений, для зарегистрированных пользователей', 'mail', 'mail'); echoblock('Фильтр по: IP', 'Блокировка доступа на сайт для определенных IP', 'ban', 'ban'); echoblock('Поиск и Замена', 'Быстрый поиск и замена определенного текста по всей базе данных', 'search', 'search'); echoblock('Статические страницы', 'Создание и редактирование страниц, которые как правило редко изменяются и имеют постоянный адрес', 'static', 'static'); echoblock('Антивирус', 'Проверка папок и файлов скрипта на наличие подозрительных файлов', 'antivirus', 'antivirus'); echoblock('Логи посещений', 'Вывод IP и браузера пользователей при последнем входе на сайт', 'logs', 'logs'); echoblock('Страны', 'Добавление, удаление и редактирование стран', 'country', 'country'); echoblock('Города', 'Добавление, удаление и редактирование городов', 'city', 'city'); echoblock('Игры', 'Добавление, удаление и редактирование игр на сайте', 'apps', 'apps'); echoblock('Отзывы '.$new_reviews, 'Модерация и удаление отзывов.', 'reviews', 'reviews'); echoblock('Отчеты по SMS', 'Просмотр отчетов отправки SMS от пользователей', 'sms', 'sms'); echo <<<HTML <script type="text/javascript" src="/system/inc/js/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $.post('/controlpanel.php', {act: 'send'}); }); </script> HTML; echoblock('Фильтр слов', 'Настройка фильтра слов, который будет удалять или заменять указанные слова при добавлении какой-то информации на сайт.', 'wordfilter', 'wordfilter'); echohtmlend(); Заменяем на: echoheader(); echoblock('Пользователи', 'Управление зарегистрированными на сайте пользователями, редактирование их профилей и блокировка аккаунта', 'users', 'users'); echo <<<HTML <script type="text/javascript" src="/system/inc-moder/js/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $.post('/moderpanel.php', {act: 'send'}); }); </script> HTML; echohtmlend(); Мы убрали лишние "кнопки" и изменили пути на файл moderpanel.php и js.PS: Помните! Если вы удалили папку js - то путь изменять на /system/inc-moder/js/ - не нужно, должно остаться /system/inс/js/. (Почему? См. пункт 3).Вот по сути и всё, у группы "Модератора" появилась своя панель управления. Осталось выстаить права пользователю и перейти по ссылке - http://site.ru/moderpanel.php. PS: О том как "выпилять" определённые функции из модулей - чуть позже. Автор темы: Shaman Edited August 5, 2015 by Shaman Daniels Исправлены ошибки 4 Quote Link to comment Share on other sites More sharing options...
MixNet Posted July 29, 2015 Report Share Posted July 29, 2015 Спасибо Хорошая вещь. Quote Link to comment Share on other sites More sharing options...
timbios Posted July 29, 2015 Report Share Posted July 29, 2015 Очень полезная статья, заслуживает огромного "+" Quote Link to comment Share on other sites More sharing options...
wenjiro Posted July 29, 2015 Report Share Posted July 29, 2015 А мне кажется, что это почти ответ на мой заказ для слупи. Quote Link to comment Share on other sites More sharing options...
wenjiro Posted July 29, 2015 Report Share Posted July 29, 2015 Ах да. Я понял. 1 Quote Link to comment Share on other sites More sharing options...
wenjiro Posted July 29, 2015 Report Share Posted July 29, 2015 Почему не MODER DIR? Заменяем на: switch($mod){ //Пользователи case "users": include ADMIN_DIR.'/users.php'; break; //Массовые действия case "massaction": include ADMIN_DIR.'/massaction.php'; break; default: include ADMIN_DIR.'/main.php';} 1 Quote Link to comment Share on other sites More sharing options...
Shaman Daniels Posted July 29, 2015 Author Report Share Posted July 29, 2015 Почему не MODER DIR? Заменяем на: switch($mod){ //Пользователи case "users": include ADMIN_DIR.'/users.php'; break; //Массовые действия case "massaction": include ADMIN_DIR.'/massaction.php'; break; default: include ADMIN_DIR.'/main.php'; } Да, ты прав. Я так увлёкся темой, что не заметил этого... Quote Link to comment Share on other sites More sharing options...
CimisliaMD Posted July 29, 2015 Report Share Posted July 29, 2015 Очень полезная статья...по больше таких статей Quote Link to comment Share on other sites More sharing options...
timbios Posted July 29, 2015 Report Share Posted July 29, 2015 Я люблю CMST∞ls Только из-за подписи поставил + )) Quote Link to comment Share on other sites More sharing options...
wenjiro Posted July 29, 2015 Report Share Posted July 29, 2015 Я люблю CMST∞ls Только из-за подписи поставил + )) спасиб Quote Link to comment Share on other sites More sharing options...
Shaman Daniels Posted July 29, 2015 Author Report Share Posted July 29, 2015 Я люблю CMST∞ls Только из-за подписи поставил + )) спасиб Мне тоже нравиться идея. Уже открываю фотошоп 2 Quote Link to comment Share on other sites More sharing options...
Shaman Daniels Posted July 29, 2015 Author Report Share Posted July 29, 2015 Очень полезная статья... по больше таких статей Поверь, всё еще впереди) Quote Link to comment Share on other sites More sharing options...
CimisliaMD Posted July 29, 2015 Report Share Posted July 29, 2015 (edited) Очень полезная статья... по больше таких статей Поверь, всё еще впереди) Молодец тогда жду от тебя полезных статей Edited July 29, 2015 by CimisliaMD Quote Link to comment Share on other sites More sharing options...
api Posted July 30, 2015 Report Share Posted July 30, 2015 можна и все лучше сделать вывести в шаблон кантроль панель штобы по безапасней была да и небыла с вне лишний раз вадить agent.php и можна зделать ище взять из админки функцию назначение в тех падержку и сделать назначение мадератора и тд намнога будет лучше чем вбазу каждый раз лазить штоб назначить челавека 2 Quote Link to comment Share on other sites More sharing options...
Shaman Daniels Posted July 30, 2015 Author Report Share Posted July 30, 2015 можна и все лучше сделать вывести в шаблон кантроль панель штобы по безапасней была да и небыла с вне лишний раз вадить agent.php и можна зделать ище взять из админки функцию назначение в тех падержку и сделать назначение мадератора и тд намнога будет лучше чем вбазу каждый раз лазить штоб назначить челавека Ну если я тебя правильно понял...Суть не в том, что можно, а что нельзя. Данная статья - это пример для обучения пользователям. Ну, а делать что-то под каждого пользователя - я не собираюсь. Если у тебя есть желание - можешь взять и сделать и поделиться со всеми... Quote Link to comment Share on other sites More sharing options...
viiprogrammer Posted January 21, 2016 Report Share Posted January 21, 2016 echoheader(); echoblock('Пользователи', 'Управление зарегистрированными на сайте пользователями, редактирование их профилей и блокировка аккаунта', 'users', 'users'); echo <<<HTML <script type="text/javascript" src="/system/inc-moder/js/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $.post('/moderpanel.php', {act: 'send'}); }); </script> HTML; echohtmlend(); <script type="text/javascript"> $(document).ready(function(){ $.post('/moderpanel.php', {act: 'send'}); }); </script> тут не нужен так как это участок кода который "активировал" стучалку в vii которой нету Quote Link to comment Share on other sites More sharing options...
JacksScripts Posted January 21, 2016 Report Share Posted January 21, 2016 Мне кажеться не много глупо делать разные панели в разных файлах php. Проще создать полноценный функционал для администратора, и делать например так, как сделано в шаблонизаторе vii, который например запрещает определенным группам видеть какой либо html с помощью [user-group=INT]. Что касаеться js то его там почти нет, а если даже тот что есть то сделать так, в обработчиках тоесть туда, куда с помощью js отсылают запрос сделать проверку на user_group вот и все, а так только копи-пастом, только засорять память файлами Quote Link to comment Share on other sites More sharing options...
CimisliaMD Posted January 21, 2016 Report Share Posted January 21, 2016 Мне кажеться не много глупо делать разные панели в разных файлах php. Проще создать полноценный функционал для администратора, и делать например так, как сделано в шаблонизаторе vii, который например запрещает определенным группам видеть какой либо html с помощью [user-group=INT]. Что касаеться js то его там почти нет, а если даже тот что есть то сделать так, в обработчиках тоесть туда, куда с помощью js отсылают запрос сделать проверку на user_group вот и все, а так только копи-пастом, только засорять память файлами Пример можно взять с DataLife Engine... Quote Link to comment Share on other sites More sharing options...
java002 Posted January 21, 2016 Report Share Posted January 21, 2016 Лучше изменить значение в БД Quote Link to comment Share on other sites More sharing options...
JacksScripts Posted January 21, 2016 Report Share Posted January 21, 2016 Пример можно взять с DataLife Engine... Не смотрел как там в DLE Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.