- PVSM.RU - https://www.pvsm.ru -
Давно не писал ничего на Хабре — был по уши занят. За это время многое сделано, но еще больше в планах. А вот вчера выпустил новый компонент Tickets, для создания системы техподдержки. Конечно, для MODX Revolution.
Принцип обычный — пользователь задает вопрос и получает ответы в комментариях.
В процессе работы оказалось, что систему, в общем-то, можно использовать и для сайтов с user-generated content, типа простенького LiveStreet (видео с демонстрацией работы в конце поста).
Итак, какие возможности на данный момент?
Все тикеты хранятся в ресурсах, но они имеют собственные классы, наследующие modResource. Это дает возможность организовать им отдельные правила созданияизменениявывода и даже собственные страницы в менеджере.
Например, тикеты не показываются в дереве ресурсов (и не тормозят его, своим количеством), все управление ими происходит со специальной страницы раздела тикетов. Там же выводятся и комментарии, для управления.
Если вы видели Articles, расширение для ведения блога от авторов MODX — то здесь сделано почти так же.
Тут понятно, основной функционал. Используется замечательный редактор MarkItUp [1]. Набор кнопок и их работы можно задавать в системных настройках.
Комментарии с этом деле — половина работы. Для MODX Revolution есть ровно одна система комментирования — жутко тормозной Quip, с которым я поначалу хотел сдружиться. Написал свои классы, которые расширяли Quip и давали возможность работать через Ajax.
Все шло хорошо, пока не поставил на свой сайт, и не понял — что оно жутко тормозит. Тема с 315 комментариями открывалась 10 -12 секунд, без кэша.
Поэтому, пришлось напрячься и дописать комментарии до самостоятельного состояния, без зависимостей от Quip.
Так появилась вторая система комментирования для MODX Revolution. За образец были взяты комментарии Хабра и LiiveStreet.
Страница с 315 комментариями теперь открывается за 0,6 сек., без кэша. Его я пока даже не прикручивал.
Тут рассказывать особо нечего — используется система прав Revolution, которая делает все за меня. Установочный пакет добавляет свои разрешения и политики, которые потом можно использовать.
Отдельно даются права на работу с тикетами «вообще», и для создания их в определенном разделе. Так же есть разрешение на создание комментария.
Основное нарекание на MODX — это постоянная очистка кэша при любом пуке в менеджере. Понятно, что кэширование в Revolution очень крутое и невозможно иначе очистить все возможные связи обновленного ресурса. Но на сайте с парой тысяч ресурсов это становится настоящей головной болью. Учитывая, что пользователи могут редактировать свои тикеты — сайт просто встанет колом при серьезных цифрах.
Поэтому, при обновлении тикета в админке или фронтенде очищается только кэш именно этого тикета, и страницы его родителя (секции тикетов). Все остальное можно чистить плагином по событию OnDocFormSave, если нужно.
В первую очередь расширение предназначено для контента, созданного пользователями. А они могут напихать нам всяких XSS и прочих пакостей.
С этим вопросом вдумчиво разбирается отличный Jevix [2], правила которого настраиваются отдельными наборами параметров. Причем, отдельно для тикета и комментария.
Если у вас нет этого расширения для фильтрации и типографии — Tickets автоматически скачает и установит его. Без Jevix работать пока нельзя.
Ну и еще по мелочи:
В общей сложности, на эту работу у меня ушло около 40 дней. Чистого времени, приблизительно, 140 часов.
Видео установки и настройки Tickets на чистом сайте.
Это первая публичная бета, версия довольно ранняя — но вполне стабильная.
Не могу не упомянуть добрую студию Simple Dream [3], которые заказали это расширение, оплатили, и разрешили выложить его бесплатно в репозиторий MODX [4].
Исходный код доступен на Github [5].
Посмотреть в реальной работе можно у меня на сайте [6].
Автор: bezumkin
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/modx/20777
Ссылки в тексте:
[1] MarkItUp: http://markitup.jaysalvat.com/home/
[2] Jevix: http://habrahabr.ru/post/150414/
[3] Simple Dream: http://www.simpledream.ru/
[4] репозиторий MODX: http://modx.com/extras/package/tickets
[5] доступен на Github: https://github.com/bezumkin/Tickets
[6] меня на сайте: http://bezumkin.ru/help/
[7] Источник: http://habrahabr.ru/post/159773/
Нажмите здесь для печати.