Александр

Александр

С нами с 01 февраля 2016; Место в рейтинге пользователей: #567
Александр
11 июля 2016, 10:57
0
Сам спросил, сам ответил. Вдруг кому надо будет.
Пишем плагин
<?php
switch ($modx->event->name) {
case 'OnDocFormPrerender':
    $modx->regClientStartupHTMLBlock('<script type="text/javascript">
        Ext.onReady( function(){
            var tabPanel = Ext.getCmp("modx-resource-tabs");
            var btn = Ext.getCmp("modx-abtn-save");

            if( tabPanel!=null ){
                tabPanel.on(\'tabchange\', function(parent,selectedTab){ 
		    if( !btn ){
	                Ext.getCmp("files-tab").hide();
		    }
            });
            }
        });               
    </script>');
}
Вешаем его на событие OnDocFormPrerender. Когда менеджер переключается на вкладку «Файлы», то если у менеджера нет кнопки «Сохранить» содержимое вкладки «Файлы» скрывается. Т.о. менеджер не может ни добавить, ни удалить файлы к ресурсу, к которому у него нет доступа на изменение.
Александр
02 февраля 2016, 16:00
0
Спасибо за ответ, Василий.
Но прочитав его, расстроился. Причем тут скорость работы БД и ее кеша, если время работы парсера во много раз медленнее (или я цифры в колонках не так трактую?).
Но делать нечего, раз говорят, что нужно каждый вызов самостоятельно, то пошел отдельно запустил (попутно выкинул со страницы вообще все, кроме данного вызова).
Построение меню с помощью Wayfinder:


То же меню с pdoMenu:


Дальше пошел посмотрел, а что так парсер медленно работает.
Нашел в файле /core/components/pdotools/model/pdotools/pdomenu.class.php в строках 190 и 194 вызов
$this->modx->makeUrl(...)
Заменил 194-ю строку
с
$row['link'] = $this->modx->makeUrl($row['id'], '', '', $this->pdoTools->config['scheme']);
на что-то подобное:
$row['link'] = '/' . $row['uri'];
Получил следующую скорость:


В 3,5 раза быстрее!

Отсюда вопрос. Можно ли (и могут ли авторы) переписать вызов $this->modx->makeUrl() и не вызывать стандартный генератор URL.

Посмотрел /core/model/modx/modx.class.php


а потом /core/model/modx/modcontext.class.php


и не все мне там понятно.
Реально это переписать или нет?