Горбушка
Ищу её...
- Регистрация
- 2 Май 2008
- Сообщения
- 3.444
- Реакции
- 2.527
- Автор темы
- #1
Название: "Список сторонних модулей"
Тип: Хак
Версия: [RC] 0.9 *
Описание: Хак добавляет в навигацию в новой панели управления от версии 10.2 список сторонних модулей
Автор: Горбушка
Совместимость: 10.2
Если Вы уже ставили версию 10.2, то могли заметить досадный косяк. В левой удобной навигации нет списка сторонних модулей.
Данный хак исправляет несправедливость. Хак учитывает права доступа к модулям и показывает только нужные для группы пользователей. Если нет доступных модулей - раздел полностью скрывается, как в 10.1.
Стоит заметить, что если разработчик ДЛЕ будет вводить аналогичный функционал в 10.3+, то, скорее всего, будет изменён алгоритм работы прав доступа к модулям. Либо к сторонним, либо к штатным. Свой вариант считаю более элегантным решением, не требующим глобальных изменений ни от DLE, ни от разработчиков, к тому же, от работы explode и substr нагрузка просто не значительна.
В планах добавить кэширование, чтобы убрать SQL-запрос. Так же вскоре модуль получит автоматический установщик.
Прошу высказывать свои предложения по развитию идеи.
* [RC] означает, что данная версия является практически финальной. Тем не менее, в ней могут быть уязвимости и недоработки..
Тип: Хак
Версия: [RC] 0.9 *
Описание: Хак добавляет в навигацию в новой панели управления от версии 10.2 список сторонних модулей
Автор: Горбушка
Совместимость: 10.2
Если Вы уже ставили версию 10.2, то могли заметить досадный косяк. В левой удобной навигации нет списка сторонних модулей.
Данный хак исправляет несправедливость. Хак учитывает права доступа к модулям и показывает только нужные для группы пользователей. Если нет доступных модулей - раздел полностью скрывается, как в 10.1.
Стоит заметить, что если разработчик ДЛЕ будет вводить аналогичный функционал в 10.3+, то, скорее всего, будет изменён алгоритм работы прав доступа к модулям. Либо к сторонним, либо к штатным. Свой вариант считаю более элегантным решением, не требующим глобальных изменений ни от DLE, ни от разработчиков, к тому же, от работы explode и substr нагрузка просто не значительна.
В планах добавить кэширование, чтобы убрать SQL-запрос. Так же вскоре модуль получит автоматический установщик.
В работе DLE и модулей ничего не меняется. Установка стандартная через добавление записи в таблицу MySQL dle_admin_sections
Открываем \engine\inc\include\functions.inc.php, находим:
Заменяем на:
Открываем \engine\skins\default.skin.php, находим:
Добавляем ВЫШЕ:
Находим:
Вставляем НИЖЕ:
Находим:
Вставляем НИЖЕ:
Сохраняем все изменения, чистим кэш в панели администратора кнопкой на главной странице.
Установка закончена.
PHP:
function echoheader($header_title, $header_subtitle) {
global $PHP_SELF, $skin_header, $skin_footer, $member_id, $user_group, $js_array, $config, $lang, $is_loged_in, $mod, $action, $langdate;
PHP:
function echoheader($header_title, $header_subtitle) {
global $db, $PHP_SELF, $skin_header, $skin_footer, $member_id, $user_group, $js_array, $config, $lang, $is_loged_in, $mod, $action, $langdate;
PHP:
foreach ( $options as $sub_options => $value ) {
PHP:
$db->query( "SELECT * FROM " . PREFIX . "_admin_sections" );
while ( $row = $db->get_array() ) {
$options['mods'][] = array (
'name' => $row['title'],
'url' => "$PHP_SELF?mod=" . $row['name'],
'mod' => $row['name'],
'access' => "mod,".$row['allow_groups']
);
}
PHP:
if ($member_id['user_group'] != 1 AND $value[$i]['access'] == "admin") unset( $options[$sub_options][$i] );
PHP:
if ( substr($value[$i]['access'], 0, 3) == "mod") {
$groups = explode(",", $value[$i]['access']);
if ( in_array($member_id['user_group'], $groups) AND $member_id['user_group'] !=1 ) continue;
else unset( $options[$sub_options][$i] );
}
PHP:
if( $subs == 4 ) { $menu_item_header = $lang['opt_s_oth']; $icon= "link";}
PHP:
if( $subs == 5 ) { $menu_item_header = $lang['admin_other_section']; $icon= "sitemap";}
Установка закончена.
Прошу высказывать свои предложения по развитию идеи.
* [RC] означает, что данная версия является практически финальной. Тем не менее, в ней могут быть уязвимости и недоработки..
Последнее редактирование: