Компонент Tickets — пользовательские страницы и комментарии

в 10:42, , рубрики: jevix, modx, tickets, метки: , ,

Давно не писал ничего на Хабре — был по уши занят. За это время многое сделано, но еще больше в планах. А вот вчера выпустил новый компонент Tickets, для создания системы техподдержки. Конечно, для MODX Revolution.

Принцип обычный — пользователь задает вопрос и получает ответы в комментариях.

В процессе работы оказалось, что систему, в общем-то, можно использовать и для сайтов с user-generated content, типа простенького LiveStreet (видео с демонстрацией работы в конце поста).

Итак, какие возможности на данный момент?

Собственные типы ресурсов.

Все тикеты хранятся в ресурсах, но они имеют собственные классы, наследующие modResource. Это дает возможность организовать им отдельные правила созданияизменениявывода и даже собственные страницы в менеджере.

Например, тикеты не показываются в дереве ресурсов (и не тормозят его, своим количеством), все управление ими происходит со специальной страницы раздела тикетов. Там же выводятся и комментарии, для управления.

Если вы видели Articles, расширение для ведения блога от авторов MODX — то здесь сделано почти так же.

Созданиередактирование страниц с фронтенда

Тут понятно, основной функционал. Используется замечательный редактор MarkItUp. Набор кнопок и их работы можно задавать в системных настройках.

Собственные быстрые ajax-комментарии, с управлением в админке.

Комментарии с этом деле — половина работы. Для MODX Revolution есть ровно одна система комментирования — жутко тормозной Quip, с которым я поначалу хотел сдружиться. Написал свои классы, которые расширяли Quip и давали возможность работать через Ajax.
Все шло хорошо, пока не поставил на свой сайт, и не понял — что оно жутко тормозит. Тема с 315 комментариями открывалась 10 -12 секунд, без кэша.

Поэтому, пришлось напрячься и дописать комментарии до самостоятельного состояния, без зависимостей от Quip.
Так появилась вторая система комментирования для MODX Revolution. За образец были взяты комментарии Хабра и LiiveStreet.

Страница с 315 комментариями теперь открывается за 0,6 сек., без кэша. Его я пока даже не прикручивал.

Поддержка политик безопасности

Тут рассказывать особо нечего — используется система прав Revolution, которая делает все за меня. Установочный пакет добавляет свои разрешения и политики, которые потом можно использовать.

Отдельно даются права на работу с тикетами «вообще», и для создания их в определенном разделе. Так же есть разрешение на создание комментария.

Отдельный механизм работы с кэшем

Основное нарекание на MODX — это постоянная очистка кэша при любом пуке в менеджере. Понятно, что кэширование в Revolution очень крутое и невозможно иначе очистить все возможные связи обновленного ресурса. Но на сайте с парой тысяч ресурсов это становится настоящей головной болью. Учитывая, что пользователи могут редактировать свои тикеты — сайт просто встанет колом при серьезных цифрах.

Поэтому, при обновлении тикета в админке или фронтенде очищается только кэш именно этого тикета, и страницы его родителя (секции тикетов). Все остальное можно чистить плагином по событию OnDocFormSave, если нужно.

Jevix для фильтрации при выводе на экран

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

С этим вопросом вдумчиво разбирается отличный Jevix, правила которого настраиваются отдельными наборами параметров. Причем, отдельно для тикета и комментария.

Если у вас нет этого расширения для фильтрации и типографии — Tickets автоматически скачает и установит его. Без Jevix работать пока нельзя.

Ну и еще по мелочи:

  • Почтовые уведомления о комментариях автору тикета, и тем, кому ответили на его комментарий.
  • Вывод последних комментариев и тикетов, с разбивкой по разделам и возможностью кэширования.
  • Комплектные сниппеты для грамотной обрезки и фильтрации текста, а также подсчета кол-ва комментариев тикета.
  • Все нужные чанки оформления, прописанные параметры у сниппетов, 2 языка — русский и английский.

В общей сложности, на эту работу у меня ушло около 40 дней. Чистого времени, приблизительно, 140 часов.
Видео установки и настройки Tickets на чистом сайте.

Это первая публичная бета, версия довольно ранняя — но вполне стабильная.

Не могу не упомянуть добрую студию Simple Dream, которые заказали это расширение, оплатили, и разрешили выложить его бесплатно в репозиторий MODX.

Исходный код доступен на Github.
Посмотреть в реальной работе можно у меня на сайте.

Автор: bezumkin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js