modZone.ru
125 subscribers
15 photos
3 files
57 links
Канал сайта modZone.ru
Download Telegram
Вот абсолютно согласен с Вадимом Макеевым. Мне тоже больше нравится таб. Но PSR-12, отвечающий за кодстайл PHP, даёт чёткую рекомендацию.

Табы или пробелы? ➡️ Почему мы повернули не туда и как табы помогают
Видео про возможности библиотеки pdoTools, дающие слишком много свободы не только контент-менеджерам, но и разным кулхакерам, разыскивающим возможность проникнуть в ядро сайта. Как вы понимаете, это видео не для распространения.

https://modzone.ru/blog/2021/09/07/pdotools-close-the-vulnerability-dispute/
image_2021-09-16_09-29-14.png
123.1 KB
Анонс ZoomX 3.0.0.

В новой версии ZoomX появится свой собственный обработчик исключений и ошибок. Для дебаггинга можно включить подробный режим. Всё это легко кастомизируется.
Анонс ZoomX 3.0.0.

В новой версии шаблонизатор Smarty (пока только он) может работать в полноценном режиме с библиотекой pdoTools. Т.е. в чанках tpl для сниппетов pdoTools можно использовать синтаксис Smarty. Этот режим включается в системной настройке. Таким образом можно полностью убрать шаблонизатор Fenom из процесса парсинга.
image_2021-09-16_10-28-18.png
132.9 KB
Анонс ZoomX 3.0.0.

В новой версии появился вызов файловых сниппетов. Также добавлены и файловые чанки, которые указываются в параметрах сниппета с модификатором @FILE.
controlErrorLog 1.4.5-pl.

В новой версии исправлена ошибка, когда при очистке журнала не обновлялась иконка на панели меню. А также доработан парсер фатальных ошибок.

https://modstore.pro/packages/utilities/controlerrorlog
ZoomX 3.0.0.

Встречайте новую версию ZoomX с полноценной шаблонизацией и ресурсов и чанков и шаблонов.

https://modzone.ru/blog/2021/09/30/zoomx-3.0-full-fledged-parser/
Единственное, что не получилось добавить в новую версию ZoomX - автозагрузку базовых классов MODX. Чтобы не использовать в своих классах и процессорах include и require расширяемых базовых классов MODX. Идея мне понравилась и в простых случаях работает. Но с MODX не может быть всё просто. Проблема в том, что ряд классов кучей запиханы в один файл и ещё ряд других технических проблем. В итоге, при тестировании часто выскакивали ошибки "Отсутствует класс". В итоге пришлось отложить пока эту идею. Может когда-нибудь во сне приснится решение как Менделееву.
modHelpers.

В новой версии этой библиотеки появится функция lottery, которая сработает в вероятностью n/m. Подобный механизм используется в Laravel для очистки старых сессий каждый n-ый запрос из m.

lottery(1,20, function() {
// Выполнить определённые действия каждый двадцатый запрос.
});
ZoomX 3.1.0.

В новой версии небольшие улучшалки:
- обычные сниппеты MODX можно указывать в качестве модификаторов,
- добавлен модификатор для склонения числительных.

Следующий шаг - оформление документации. ZoomX с третьей версии позволяет использовать MODX в качестве полноценного фреймворка. Все новые возможности нужно подробно расписать и желательно с примерами. На чём и сосредоточусь в ближайшее время. Свой сайт частично перевёл на ZoomX. Документация будет сделана полностью на ZoomX.
ZoomX 3.2.0.

С этой версии компонент перешёл из стадии beta в стадию stable. Спасибо всем, кто принял участие в тестировании и отладке компонента. 🤝
Итак, что нового в минорной версии?

- Добавлен модификатор fuzzyDate.
Выводит дату в виде "вчера в 14:20", "сегодня в 09:00", "завтра в 21:30".
- Добавлен модификатор dateAgo.
Выводит дату в виде "5 минут назад", "2 часа назад", "4 дня назад".
- Исправлена ошибка, когда объект $zoomx был не доступен в Smarty шаблонах (#1).
Объект $zoomx - это главный сервис ZoomX.
- Переделан механизм виртуальных страниц (#2).
В некоторых плагинах есть обращение к ресурсу, которого не было в режиме виртуальной страницы. Это вызывало фатальную ошибку.

П.С. Продолжаю наполнять документацию. Как закончу, планирую сделать серию видео с примерами.
Одна из новых возможностей новой версии.
ZoomX 3.3.0. Кэширование роутов.

Новая минорная версия с интересными возможностями, которые требуют подробного пояснения и будут очень полезны.

https://modzone.ru/blog/2021/11/12/zoomx-3.3.0-route-cache/
Рубрика "Так лучше не делать"

В сниппетах pdoTools для проверки - залогинен пользователь или нет в определённом контексте, используется конструкция $modx->user->hasSessionContext(). Такой же метод встречается и в других дополнениях. И даже в примерах на сайте сообщества. Но дело в том, что это внутренний метод и по идее он должен быть закрытым. Но у MODX (как я говорил раньше) проблема с применением принципа инкапсуляции - у него во всех классах и свойства и методы открытые.

Так вот, конкретно в этом случае для разработчиков сделали специальный метод isAuthenticated($context), который как раз и использует вышеописанный внутренний метод. Пусть он является синтаксическим сахаром, но он, очевидно, несёт понятную смысловую нагрузку в отличие от hasSessionContext.

Поэтому мой совет - используйте именно isAuthenticated() - это поможет сделать код легко читаемым и понятным для любых разработчиков.
ZoomX. Планы для новой версии.

Набросал бэклог для новой версии. В неё вошло
- Файловые плагины.
- Возможность указывать сниппетам время кэширования.
- Возможность указывать короткие название контроллеров в роутах.
- Улучшения функции jsonx.
- Новый модификатор markdown для работы с этим форматом.
- Короткий формат редиректа в роутах - $router->redirect($fromUri, $toUri, $statusCode);.
- Новое событие OnBeforeRouteProcess, которое позволяет делать дополнительные манипуляции с роутом перед его выполнением.

Что-то из этого я уже гонял в ветке dev. Тот же markdown. Не был уверен, стоит ли его добавлять. Но вот всё-таки решил. Поэтому нужно просто перенести. Остальное пока в планах. Но к концу месяца думаю, новой версии быть.
Выход новой версии ZoomX немного откладывается. Как многие знают, сейчас ведётся активная работа по выпуску MODX3. На днях вышла Beta 2. Мы, контрибьютеры MODX из RU сообщества, тоже участвуем в этом процессе. И с нашей стороны сейчас важно обеспечить совместимость всех самых важных и востребованных компонентов с MODX3. И сделать это нужно как можно быстрее, чтобы не сбиться с ритма и вписаться в график выхода версий.

Зона моей ответственности - pdoTools. Поэтому я пока отложил работу над ZoomX и сейчас активно погружен в процесс создания версии pdoTools для MODX3. К сожалению работы оказалось больше, чем я планировал. Но она важная! MODX3 очень нужен нам всем. Он быстрее, современнее в части API и главное - он значительно сокращает процесс перехода на самые современные стандарты разработки. Как бы это не звучало фантастически, но уже сейчас ведутся разговоры про MODX4 и отказа от накопившегося легаси. И с выходом MODX3 это будет сделать существенно проще. Ибо, как говорится в народной мудрости, пропасть нельзя перепрыгнуть в два прыжка.

MODX3 доступен на modhost.pro. Его можно бесплатно попробовать на тестовом тарифе.
В новой версии ZoomX появится полноценная!!! поддержка всех файловых элементов, включая плагины. Полноценная - значит, что работать будут не только собственные файловые элементы, но и файловые элементы других компонентов. Таким образом можно создавать компоненты с файловыми сниппетами, чанками и плагинами. После их установки не нужно никуда ничего переносить, перенастраивать, менять настройки. Всё будет работать из коробки.
В ZoomX есть событие OnRequestError, которое срабатывает при вызове исключений с помощью функции abortx() или при возникновении ошибок PHP. С помощью этого события можно контролировать работоспособность сайта - создать плагин, в котором проверять код ошибки. Если код 500, то отправлять сообщение администратору.