Молчаливая ошибка в адм, if переименовать assets
modx revo 2.3.2, Ace 1.5.0
Заметил такой артефакт. Если переименовать папку assets, а в /core/config/config.inc.php оставить без изменений, то при загрузке админки (например, загрузка страницы для какого-нибудь сниппета) правая часть окна останется пустой. При этом:
а) никаких ошибок в логах php/apache (уровень логирования — максимальный)
б) никаких ошибок в логах modx (уровень логирования «warnings»)
в) ручная очистка кэша modx ничего не меняет
Понятно, что причина здесь в Ace (хотя, кто его знает, может, modx виноват). Но таких ситуаций в корректной программной системе быть не должно. Либо нужно отказываться от компонентов, приводящих к таким ситуациям, либо найти быстрый способ выявления причины без трассировки кода.
P.S. Почему-то заголовок темы сильно ограничен в длине. Всё время приходится ужиматься.
Заметил такой артефакт. Если переименовать папку assets, а в /core/config/config.inc.php оставить без изменений, то при загрузке админки (например, загрузка страницы для какого-нибудь сниппета) правая часть окна останется пустой. При этом:
а) никаких ошибок в логах php/apache (уровень логирования — максимальный)
б) никаких ошибок в логах modx (уровень логирования «warnings»)
в) ручная очистка кэша modx ничего не меняет
Понятно, что причина здесь в Ace (хотя, кто его знает, может, modx виноват). Но таких ситуаций в корректной программной системе быть не должно. Либо нужно отказываться от компонентов, приводящих к таким ситуациям, либо найти быстрый способ выявления причины без трассировки кода.
P.S. Почему-то заголовок темы сильно ограничен в длине. Всё время приходится ужиматься.
Комментарии: 22
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
github.com/modxcms/revolution/issues/new
github.com/danyaPostfactum/modx-ace/issues/new
В остальных исходниках — всё нормально.
(и в плагине, и в настройке «minifyx_cacheFolder» при установке компонента) корректнее брать
Директория assets раскрывается просмотром исходного HTML, в котором видно, откуда подключены скрипты и стили дополнений.
Как известно, папка «assets» является одним из способов идентификации используемой CMS. А когда известна используемая CMS, ломать сайты в разы проще. Иными словами, скрывая папку assets (при соблюдении прочих «маскировочных» мер), мы существенно снижаем риск взлома сайта.
Этот вопрос полностью решается, например, заменой всех подключаемых в html файлов вызовом специального скрипта, которому в качестве параметра передаётся обратимый хэш с ключом от имени подключаемого файла. Делать это плагином в OnWebPagePrerender или OnWebPageComplete с помощью регулярки и только для неразработчиков.
А содержимое подключаемых скриптов и стилей (в том числе в составе html) можно обфусцировать так, чтобы имена переменных, констант и css-классов там тоже были минимизированы.
MODX_ASSETS_PATH и MODX_ASSETS_URL
Которые будут неверными, если ты не отредактировал config.inc.php.
В общем, с тобой как обычно — нашел «очередной фатальный недостаток» в системе и раздул из мухи слона.
Хоть я и зарекался с тобой вообще разговаривать, но опять не сдержался.
Оттуда не подключаются php файлы, ядру MODX вообще не нужна эта директория для работы, поэтому на уровне php никаких ошибок нет и быть не должно.
Они все в консоли браузера:
Отображение правой панели (с кодом элемента/файла и пр.) — это базовый функционал modx, который не должен зависеть от дополнительно установленных компонентов (с корректным кодом) и наличия папки $modx->getOption('assets_path')
Т.е. если папка не существует, то код элемента должен нормально отображаться в правой панели, но без Ace. Мне должная логика работы видится именно такой.
Сейчас же (при установленном Ace с корректным кодом) modx'у для реализации собственного базового функционала (отображение кода элемента) требуется папка assets.
В этой директории живут файлы дополнений, которые (о боже!) могут изменять внешний вид админки. Более того, они могут её даже сломать, если какой-то умник переименовал их директорию и не указал новый путь в конфиге.
И тогда дополнение пытается подключить свои файлы из несуществующей директории, и может сломать при этом админку.
Это не из-за MODX, это из-за тебя.
Риторический вопрос: позволяет ли текущая архитектура modx отобразить в админке содержимое элемента, если установлен Ace и папки assets не существует? Это я к тому, что текущее поведение modx не является единственно возможным и абсолютно верным. Технически возможна, например, более устойчивая реализация (дополнительные проверки существования файлов), когда при отсутствии папки assets modx нормально отобразит содержимое элемента при установленном Ace (или других плагинах), но без подсветки кода.
А текущее поведение modx следует принять как есть, не впадая в крайности типа "только так и должно быть" или "это фатальная проблема".
В этом и есть основной смысл плагинов и дополнений — изменить работу систему.
Если я установлю плагин на событие OnManagerPageInit и напишу там
админка сломается полностью, и починится только через удаление плагина из БД и кэша.
Расскажи, пожалуйста, как ты планируешь делать «более устойчивую реализацию» обработки такого плагина?
— плагин проверяет существование нужных файлов (если их нет, выводит сообщение в логи и ничего фатального не делает)
— modx продолжает выполнение собственного кода (отображает код элемента)
Задавай вопрос автору Ace. Он у меня, кстати ничего не ломает.
Firefox:
Chrome:
Ну да и ладно. Хрен с ним. Главное, причина локализована.