• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Хак [RC] [0.9] [DLE 10.2] "Список сторонних модулей"

Статус
В этой теме нельзя размещать новые ответы.

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Название: "Список сторонних модулей"
Тип: Хак
Версия: [RC] 0.9 *
Описание: Хак добавляет в навигацию в новой панели управления от версии 10.2 список сторонних модулей
Автор: Горбушка

Совместимость: 10.2

Если Вы уже ставили версию 10.2, то могли заметить досадный косяк. В левой удобной навигации нет списка сторонних модулей.
Данный хак исправляет несправедливость. Хак учитывает права доступа к модулям и показывает только нужные для группы пользователей. Если нет доступных модулей - раздел полностью скрывается, как в 10.1.

Стоит заметить, что если разработчик ДЛЕ будет вводить аналогичный функционал в 10.3+, то, скорее всего, будет изменён алгоритм работы прав доступа к модулям. Либо к сторонним, либо к штатным. Свой вариант считаю более элегантным решением, не требующим глобальных изменений ни от DLE, ни от разработчиков, к тому же, от работы explode и substr нагрузка просто не значительна.

В планах добавить кэширование, чтобы убрать SQL-запрос. Так же вскоре модуль получит автоматический установщик.

1.JPG 2.JPG 3.PNG
В работе DLE и модулей ничего не меняется. Установка стандартная через добавление записи в таблицу MySQL dle_admin_sections
Открываем \engine\inc\include\functions.inc.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;
Открываем \engine\skins\default.skin.php, находим:
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] означает, что данная версия является практически финальной. Тем не менее, в ней могут быть уязвимости и недоработки..
 
Последнее редактирование:
Стоит ли начинать? Может это будет исправлено в будущих версиях?
 
Ну значит стырят очередной мой код... Не велика потеря. Зато будет очередной втык, что вместо диалога тырит идеи...
 
а если сделать более глобальный мод, то бисть админ панель как в 10.2 для 10.х + строка сторонние модули
 
Тогда уж ровно наоборот. Админка 10.х хорошо работала на мобилах, 10.2 - нет. В 10.х были известные баги и ограничения, но они не мешали работать и больше касались девелоперов, в 10.2 - ровно наоборот.

Поэтому смысла от натягивания 10.2 на 10.х нулевой.

P.s. выложил хак
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху