• Блог
  • Форматирование и вывод на сайте

Потихоньку обновляю все свои дополнения. Дошла очередь до controlErrorLog. Наверно найдется кто-то, кто скажет, что обновлять в нём нечего. Но это только на первый взгляд. На самом деле, лично мне не хватало более читабельного вида журнала. Так как в MODX нет события на добавление сообщения в журнал, из которого можно было бы перехватывать данные, то пришлось писать парсер. Зато теперь записи можно вывести в таблице со всеми удобствами. Удобства на данный момент реализованы не все. Были мысли сделать сортировку и возможность удаления отдельных записей. Уверен, что такой функционал нужен не многим, поэтому тратить время на него пока не стал. Будет чем заняться в будущем.

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

В движении как-то так

Для того, чтобы на фронте запустить журнал, нужно включить системную настройку «control_frontend», а пользователь должен быть авторизован и иметь права «error_log_view». При этом он не обязательно должен быть залогинен в админке или вообще иметь в неё доступ.

Хочу обратить внимание — на сайте журнал автоматически не обновляется как в админке. Поэтому нужно самостоятельно жмякать кнопку обновления. Ну или обновить страничку.

Вообще, для каждой фичи есть своя системная настройка. Можно управлять ими на уровне всего сайта, контекста или отдельного пользователя.

Подробности

Таблица для журнала сверстана на обычном HTML без использования ExtJs. Причины две. Во-первых, совсем нет желания трогать древний ExtJs. А во-вторых, эта таблица используется и на фронте, где нет этого чуда. Но тут ещё одна тонкость — шаблон таблицы написан для Smarty шаблонизатора. Почему? Он является штатным шаблонизатором в админке. Грузить его отдельно не надо. Сам шаблон можно переопределить в системной настройке «controlerrorlog.tpl».

Кстати!

Совсем недавно я погружался в шаблонизаторы PHP. Решал, чем можно заменить Fenom. По бенчмаркам Smarty самый быстрый. К тому же, он уже есть в MODX из коробки и его синтаксис похож на Fenom (думаю, Fenom делали с оглядкой на него). Поэтому я решил запилить компонент с ним. И в добавок ещё и компонент с Blade из фреймворка Laravel. Он, конечно, не такой быстрый, но так как популярность Laravel достаточно высокая, то, думаю, будет не лишним. Хотя его синтаксис и подход значительно отличается от Smarty и Fenom. И всё это, конечно, в рамках фреймворковской концепции парсинга. Но об этом как-нибудь в следующий раз расскажу.

В данный момент версия в статусе бета. Яваскрипт нужно оптимизировать, вынести повторяющиеся куски в модули и т.п. Всё это сделаю позже. Сейчас пока буду собирать обратную связь. Кстати, после обновления не забудьте сбросить кэш браузера через Ctrl+F5.

Думаю, новый функционал будет очень полезным. Но что огорчает — на Github у него всего 5 звёзд, хотя компонент вроде как популярный и скачиваний у него больше 10К. Меня как автора это демотивирует (.

0   2634

Комментарии ()

  1. Семён 04 сентября 2020 # +1
    Крутое обновление, постоянно использую этот компонент в проектах. Единственное было бы удобно, чтобы уведомлялка на верхней панели в админке могла быть видна для определенных пользователей, а то многих контент-менеджеров смущает, когда уведомление загорается желтым значком с восклицательным знаком и их прямо тянет туда нажать да посмотреть.
    И если найдется время на Ваш ещё один классный компонент Middleware — сейчас если его установить и потом попытаться переустановить или обновить систему через стандартный установщик, на последнем шаге установки вываливаются 2 фатальные ошибки:
    Fatal error: Uncaught Error: Class 'init' not found in /var/www/core/components/middlewares/classes/MiddlewareService.php on line 102
    ( ! ) Error: Class 'init' not found in /var/www/core/components/middlewares/classes/MiddlewareService.php on line 102  
    
    Нужно лезть в базу, в таблицу плагинов, временно отключать его, потом завершать установку и снова включать.
    1. Сергей Шлоков 04 сентября 2020 # 0
      Значок отображается только для пользователей с правами «error_log_view». Значит у этих контент-менеджеров они есть или вообще стоит sudo. В следующей версии добавлю системную настройку для более простого управления. А пока можно в плагине заменить условие в 4 строке на следующее
      if ($modx->getOption('controlerrorlog.enable', null, true) && $modx->hasPermission('error_log_view')) {
      
      А у группы пользователей для контент-менеджеров добавить эту настройку со значением false. Вот тут писал как.

      По Middlewares именно эта доработка стоит в планах. Сам попадался:w
    2. Nurbol Boken 17 сентября 2020 # 0
      Здравствуйте.
      Обновил компонент
      Теперь в админке, в консоли выходит ошибка controlErrorLog is not defined
      cel.default.js:207 Uncaught ReferenceError: cel_config is not defined
      иконка компонента из за этого не выводится
      modx 2.6.5 php 7.2
      1. Сергей Шлоков 17 сентября 2020 # +1
        Добрый день!
        Обновите страницу через Ctrl+F5.
        1. Nurbol Boken 17 сентября 2020 # 0
          Получается в кэше браузера проблема была
          Спасибо!
      2. Александр 22 сентября 2020 # 0
        Написал про гит, а ссылку не оставил))
        github.com/sergant210/controlErrorLog
        1. Сергей Шлоков 22 сентября 2020 # 0
          Это я умею:a

        Вы должны авторизоваться, чтобы оставлять комментарии.

        Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.