Перейти к содержанию
CMSTOOLS.org - форум поддержки и развития CMS

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


Рекомендуемые сообщения

Как всем известно в 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

Изменено пользователем Shaman Daniels
Исправлены ошибки
  • Upvote 4
Ссылка на комментарий
Поделиться на другие сайты

Почему не 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
Ссылка на комментарий
Поделиться на другие сайты

 

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

}

 

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

Ссылка на комментарий
Поделиться на другие сайты

 

 

Я люблю CMSTls 

 

Только из-за подписи поставил + ))

 

спасиб :)

 

Мне тоже нравиться идея. Уже открываю фотошоп ;)

  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

 

Очень полезная статья...

по больше таких статей  :) 

Поверь, всё еще впереди)

 

Молодец тогда жду от тебя полезных статей 

Изменено пользователем CimisliaMD
Ссылка на комментарий
Поделиться на другие сайты

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

  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...
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 которой нету

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...