Jump to content

[F.A.Q.] Создание дополнительных панелей управления для групп (АНОНС)


Shaman Daniels
 Share

Recommended Posts

Как всем известно в 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, где находятся такие файлы:
8164658bcd.png

Работаем с 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 by Shaman Daniels
Исправлены ошибки
  • Upvote 4
Link to comment
Share on other sites

Почему не 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';
}
  • Upvote 1
Link to comment
Share on other sites

 

Почему не 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';

}

 

Да, ты прав. Я так увлёкся темой, что не заметил этого...

Link to comment
Share on other sites

можна и все лучше сделать вывести в шаблон кантроль панель штобы по безапасней была да и небыла с вне лишний раз вадить agent.php и можна зделать ище взять из админки функцию назначение в тех падержку и сделать назначение мадератора и тд намнога будет лучше чем вбазу каждый раз лазить штоб назначить челавека 

  • Upvote 2
Link to comment
Share on other sites

можна и все лучше сделать вывести в шаблон кантроль панель штобы по безапасней была да и небыла с вне лишний раз вадить agent.php и можна зделать ище взять из админки функцию назначение в тех падержку и сделать назначение мадератора и тд намнога будет лучше чем вбазу каждый раз лазить штоб назначить челавека 

Ну если я тебя правильно понял...Суть не в том, что можно, а что нельзя. Данная статья - это пример для обучения пользователям. Ну, а делать что-то под каждого пользователя - я не собираюсь. Если у тебя есть желание - можешь взять и сделать и поделиться со всеми...

Link to comment
Share on other sites

  • 5 months later...
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 которой нету

Link to comment
Share on other sites

Мне кажеться не много глупо делать разные панели в разных файлах php. Проще создать полноценный функционал для администратора, и делать например так, как сделано в шаблонизаторе vii, который например запрещает определенным группам видеть какой либо html с помощью [user-group=INT]. Что касаеться js то его там почти нет, а если даже тот что есть то сделать так, в обработчиках тоесть туда, куда с помощью js отсылают запрос сделать проверку на user_group вот и все, а так только копи-пастом, только засорять память файлами;)

Link to comment
Share on other sites

Мне кажеться не много глупо делать разные панели в разных файлах php. Проще создать полноценный функционал для администратора, и делать например так, как сделано в шаблонизаторе vii, который например запрещает определенным группам видеть какой либо html с помощью [user-group=INT]. Что касаеться js то его там почти нет, а если даже тот что есть то сделать так, в обработчиках тоесть туда, куда с помощью js отсылают запрос сделать проверку на user_group вот и все, а так только копи-пастом, только засорять память файлами ;)

Пример можно взять с DataLife Engine...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...