Меню

Modx revo tickets настройка



Tickets – настройка обработчика Jevix

Tickets настройка обработчика

Бесплатный компонент Tickets реализует особый вид документа (ресурса) в MODX Revo – тикет.

Краткий перечень возможностей:

  • Встроенная система добавления тикетов и комментариев к ним с фронтенда сайта, включая загрузку файлов.
  • Редактирование на фронтенде, возможность сохранения в черновики (без публикации).
  • Удобное управление тикетами и комментариями из админ панели сайта.
  • Счетчик просмотров, добавление в избранное, система голосования (рейтинга).

Официальная документация по ссылке. Автор – Василий Наумкин.

Документ и комментарии можно создавать с фронтенда, а это предполагает, как минимум, разнобой стилей (разные шрифты, размеры, цвета и т.п.), как максимум, вставку скриптов и ссылок с умыслом причинения вреда сайту. Поэтому текстовый контент при выводе на экран и предпросмотре, проходит обработку Jevix.

Сниппет Jevix – средство для фильтрации HTML. Исправляет ошибки HTML-кода, предотвращает XSS-атаки, применяет типографику. Устанавливается вместе с компонентом Tickets, можно установить и отдельно.

Характерные особенности Jevix:

  • Исходный текст не форматируется, фильтруется только вывод на экран сохраненного тикета или комментария. Чтобы отключить фильтрацию, включаем галку Отключить Jevix на странице редактирования документа в админке.
  • Фильтрует содержимое при предпросмотре тикета и комментария на фронтенде.
  • Настраивается предобработка не в разделе Tickets, а на странице сниппета.
  • По умолчанию параметры довольно жесткие, подходят для простого текста.

Как правило, текст какой либо статьи копипастится из текстового редактора, чаще всего Word, либо с другой страницы, вместе с форматированием. Без обработчика на выходе получается «компот» из стилей, шрифтов, расцветок и выравниваний. Jevix все это приводит в порядок, в соответствии с заданными настройками.

Что может понадобиться:

Параметр cfgSetAutoBrMode – замена переносов строк на тег br . Если текст уже оформлен абзацами, включенный параметр может добавлять лишние переносы строк.

cfgAllowTags – перечень разрешенных HTML тегов (остальные вырезаются). Этот, и несколько других параметров, задается в виде строки JSON, поэтому нужно внимательно проверять синтаксис.

cfgAllowTagParams – перечень разрешенных атрибутов HTML тегов.

cfgSetTagChilds – настройка вложенности тегов.

Пример для настройки вывода таблицы:

По умолчанию, таблицы после Jevix-a изменяются до неузнаваемости. Чтобы таблица выводилась с минимальным числом необходимых стилей, добавляем:

cfgAllowTagParams — «td»:»colspan»,»table»:[«height»,»width»,»border»,»cellpadding», «cellspacing»]

Также Jevix можно использовать как модификатор вывода любого текста. Например:

Источник

Настраиваем вывод Tickets

По-умолчанию, в Tickets разрешены не все HTML теги. Из-за чего тикеты и комментарии могут выводится не так как хотелось бы. Чтобы это исправить, давайте разберёмся, как это работает.

Для фильтрации контента Tickets использует Jevix.

Это замечательная система фильтрации и типографирования, разработанная в Тематических Медиа для собственных проектов (в частности Хабрахабр), которая позволяет решить вопрос с фильтраций контента. Она поможет образумить криворукого менеджера или злого скрипт-кидди, распихивающего везде XSS.

При установке Tikets автоматически загружается и Jevix. Найти его можно в сниппетах в дереве элементов. Именно этот сниппет и используется Tickets для обработки тикетов и комментариев. И вот тут главная тонкость. У сниппета Jevix есть 3 набора параметров — по-умолчанию, Ticket и Comment. Именно тут обычно и возникают вопросы по настройке.

Чтобы изменить отображение тикетов, нужно редактировать набор Ticket. Для комментариев — Comment. В параметре cfgAllowTags указаны все разрешённые теги. Изначально в нём нет тега div . Поэтому, если вы введёте в тикете что-то типа

Чтобы этого избежать, нужно в параметр cfgAllowTags добавить тег div . Теперь текст выведется в блоке, но без нужного оформления. Это потому, что класс у блока не появился. И если вы попробуете добавить другие аттрибуты блоку, например, id или title, то обнаружите, что и они не появляются. Это легко исправить. Для этого нужно разрешить аттрибуты у разрешённых тегов.

Используем параметр cfgAllowTagParams . Это строка в JSON формате. Добавляем в него параметры id и class для тега div

Обновляем страницу с тикетом и видим, что блок с нашей информацией отображается как нужно. Аналогично делаем правки и для комментариев в наборе параметров «Comment» (если нужно конечно).

Кроме того, в параметре cfgAllowTagParams можно не только указать аттрибуты элемента, но и значения этих аттрибутов. Например, для класс блока div мы разрешаем только значения «container»,«article»,«aside»:

А можно вместо названий указать модификаторы:

  • #int — можно указывать только цифры.
  • #text — любые символы.
  • #link — проверка на соответствие url.
  • #image — путь до файла.

В заключение

Jevix не только фильтрует контент и вырезает запрещённые теги, но и выполняет функции типографа. Поэтому его можно использовать отдельно от Tickets для обработки любого контента.

В данном случае Jevix использует параметры по-умолчанию. Но их можно переопределить при вызове сниппета.

Источник

MODX Tickets настройки, документация

Tickets — довольно интересное и бесплатное дополнение для MODX на котором можно сделать раздел с вопросами-ответами, форму комментариев, блог и много другое.

Основные возможности MODX Tickets

  • Создание особых разделов для тикетов в админке, со своим интерфейсом.
  • Создание тикетов в админке, тоже со своими панелями и табами.
  • Создание страниц с фронтенда.
  • Редактирование страниц с фронтенда, с проверкой прав.
  • Ajax-комментарии.
  • Редактирование / удаление комментариев с админки.
  • Права доступа на добавление страниц в раздел и создание комментариев.
  • Собственное кэширование тикетов.
  • Принудительная фильтрация тикетов при выводе на экран Jevix.
  • Автоматическая установка и настройка Jevix при инсталляции пакета. 2 набора параметров, раздельно для тикетов и комментариев.
  • Довольно удобный редактор MarkItUp для тикетов и комментариев.
  • Почтовые уведомления о комментариях автору тикета, и тем, кому ответили на его комментарий.
  • Вывод последних комментариев и тикетов, с разбивкой по разделам и возможностью кэширования.
  • Все нужные чанки оформления, прописанные параметры у сниппетов, 2 языка — русский и английский.
Читайте также:  Dir 300 rnu настройка

Установить Tickets можно из репозитория modstore.

Документация по сниппетам

getTickets

Выводит список созданных тикетов. *Сниппет вызывается не кэшированным.

Параметры

Название По умолчанию Описание
&depth 10 Глубина поиска ресурсов от каждого родителя.
&fastMode Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&includeContent Выбирать поле «content» у ресурсов.
&includeTVs Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]] .
&limit 10 Лимит выборки результатов
&offset Пропуск результатов с начала выборки
&outputSeparator Необязательная строка для разделения результатов работы.
&parents Список категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 — выборка не ограничивается.
&resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
**&showDeleted Показывать удалённые ресурсы.
&showHidden 1 Показывать ресурсы, скрытые в меню.
&showLog Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».
&showUnpublished Показывать неопубликованные ресурсы.
&sortby createdon Сортировка выборки.
&sortdir DESC Направление сортировки
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpl tpl.Tickets.list.row Чанк оформления для каждого результата
&tvPrefix Префикс для ТВ плейсхолдеров, например «tv.». По умолчанию параметр пуст.
&user Выбрать только элементы, созданные этим пользователем.
&where Строка, закодированная в JSON, с дополнительными условиями выборки.

*Список может быть расширен общими параметрами pdoTools так как Tickets работает на этой библиотеке.

Примеры

getTicketsSections

Выводит список секций с тикетами. *Сниппет вызывается не кэшированным.

Параметры

Название По умолчанию Описание
&depth Глубина поиска ресурсов от каждого родителя.
&fastMode Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&includeContent Выбирать поле «content» у ресурсов.
&includeTVs Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
&limit 10 Лимит выборки результатов
&offset Пропуск результатов с начала выборки
&outputSeparator Необязательная строка для разделения результатов работы.
&parents Список категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 — выборка не ограничивается.
&resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
&showDeleted Показывать удалённые ресурсы.
&showHidden Показывать ресурсы, скрытые в меню.
&showLog Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».
&showUnpublished Показывать неопубликованные ресурсы.
&sortby views Сортировка выборки.
&sortdir DESC Направление сортировки
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpl tpl.Tickets.sections.row Чанк оформления для каждого результата
&tvPrefix Префикс для ТВ плейсхолдеров, например «tv.». По умолчанию параметр пуст.
&where Строка, закодированная в JSON, с дополнительными условиями выборки.

*Список может быть расширен общими параметрами pdoTools так как Tickets работает на этой библиотеке.

Примеры

TicketComments

Выводит комментарии и форму для комментирования ресурса.

Может использоваться с любым документом MODX Сниппет вызывается некэшированным

Параметры вызова сниппета

Название По умолчанию Описание
&allowGuest Включить возможность комментирования для неавторизованных пользователей?
&allowGuestEdit 1 Разрешать неавторизованным пользователям редактировать свои комментарии?
&allowGuestEmails Отправлять гостям почтовые уведомления об ответах?
&autoPublish 1 Автоматически публиковать все новые комментарии, без премодерации.
&autoPublishGuest 1 Автоматически публиковать все новые комментарии неавторизованных пользователей, без премодерации.
&depth Целое число, для указания максимальной глубины ветки комментариев.
&enableCaptcha 1 Включить защиту от спама для неавторизованных пользователей?
&fastMode 1 Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&formBefore Расположить форму комментирования перед комментариями. По умолчанию — нет.
&toPlaceholder Не выводить результат работы сниппета, а поместить в плейсхолдер toPlaceholder
&separatePlaceholder При параметре 1 вывести форму и комментарии в плейсхолдеры toPlaceholder_form, toPlaceholder_thread.
&gravatarIcon mm Если аватарка пользователя не найдена, грузить эту картинку на замену.
&gravatarSize 24 Размер загружаемого аватара
&gravatarUrl http://www.gravatar.com/avatar/ Адрес для загрузки аватаров
&maxCaptcha 10 Максимальное число для генерации кода защиты от спама.
&minCaptcha 1 Минимальное число для генерации кода защиты от спама.
&thread Имя ветки комментариев. По умолчанию, «resource-[[*id]]».
&tplCommentAuth tpl.Tickets.comment.one.auth Чанк комментария для показа авторизованному пользователю.
&tplCommentDeleted tpl.Tickets.comment.one.deleted Чанк удалённого комментария.
&tplCommentEmailBcc tpl.Tickets.comment.email.bcc Чанк для уведомления админов сайта о новом комментарии.
&tplCommentEmailOwner tpl.Tickets.comment.email.owner Чанк для уведомления владельца тикета о новом комментарии.
&tplCommentEmailReply tpl.Tickets.comment.email.reply Чанк для уведомления пользователя о том, что на его комментарий появился ответ.
&tplCommentEmailSubscription tpl.Tickets.comment.email.subscription Чанк для уведомления подписанного пользователя, что в теме появился новый комментарий.
&tplCommentForm tpl.Tickets.comment.form Чанк для формы добавления нового комментария.
&tplCommentFormGuest tpl.Tickets.comment.form.guest Чанк для формы добавления нового комментария гостям.
&tplCommentGuest tpl.Tickets.comment.one.guest Чанк комментария для показа гостям.
&tplComments tpl.Tickets.comment.wrapper Чанк обертка для всех комментариев страницы.
&tplLoginToComment tpl.Tickets.comment.login Чанк с требованием авторизоваться.

Примеры

  • Стандартный вызов сниппета
  • Вызов сниппета с комментариями для неавторизированных пользователей

TicketForm

Выводит форму для создания тикета пользователем из фронтэнда. *Сниппет вызывается не кэшированным.

Параметры вызова сниппета

Название По умолчанию Описание
&allowedFields parent,pagetitle,content,published Поля тикета, которые разрешено заполнять пользователю. Можно указывать имена ТВ параметров.
&context Список контекстов для поиска секций, через запятую.
&parents По умолчанию выводятся все доступные разделы тикетов, но вы можете ограничить их, указав конкретных родителей через запятую. Указав через знак минус «-» можно исключить родителя
&resources Можно точечно через запятую указать конкретные разделы, доступные в списке или исключить их через знак минус «-» в комбинации с параметром parents
&permissions section_add_children Проверка прав на публикацию в раздел. По умолачанию проверяется разрешение «section_add_children».
&tid Этот параметр дает возможность вызывать через сниппет редактирование конкретного тикета без использования url-параметра $_REQUEST[‘tid’] .
&redirectUnpublished Вы можете указать, на какой документ отправлять пользователя при создании неопубликованного тикета.
&redirectDeleted Вы можете указать, на какой документ отправлять пользователя при удалении тикета.
&redirectUnDeleted Вы можете указать, на какой документ отправлять пользователя при восстановлении тикета.
&requiredFields parent,pagetitle,content Обязательные поля тикета, которые пользователь должен заполнить для отправки формы.
&sortby pagetitle Поле для сортировки списка разделов.
&sortdir ASC Направление сортировки списка разделов.
&tplFormCreate tpl.Tickets.form.create Чанк для создания нового тикета
&tplFormUpdate tpl.Tickets.form.update Чанк для обновления существующего тикета
&tplPreview tpl.Tickets.form.preview Чанк для предпросмотра тикета перед публикацией
&tplSectionRow @INLINE Чанк для оформления раздела вопросов в форме
&tplTicketEmailBcc tpl.Tickets.ticket.email.bcc Чанк для уведомления админов сайта о новом тикете.
&validate Валидация полей формы по правилам FormIt (используется при наличии установленного компонента FormIt)

Способы вызова

Примеры использования валидатора FormIt

Возможно использование параметра validate по аналогии как он применяется в компоненте FormIt. Компонент FormIt должен быть установлен. Примеры описаны ниже.

Интеграция с FormIt

При наличии установленного компонента FormIt возможно использовать валидацию входных данных по тем же правилам. Компонент FormIt не находится в зависимостях компонента Tickets. При необходимости использования этого функционала Вы должны установить FormIt самостоятельно.

Правила использования

Валидация доступна для сниппетов TicketForm (создание/редактирование тикета), TicketComments (написание комментария). Валидация будет использоваться при указании полей в параметре сниппета validate. Возможно указание собственных валидаторов через параметр customValidators и собственных текстов для ошибки. Все существующие правила валидации FormIt можно найти на официальной странице документации компонента.

Для вывода сообщения об ошибке в одном div-е с проверяемый полем должен находится элемент **** для вывода ошибки

Либо элемент может находиться в произвольной месте HTML-разметки с уникальным id вида имя_поля-error

Примеры использования
  • Использование пользовательского валидатора для цензурирования

Создаётся сниппет с именем mycensore

Сниппет TicketForm вызывается с параметрами. В чанке tpl.myTicket для формы добавлены например собственные поля date, email, username, которые также валидируются стандартными правилами из FormIt.

  • Цензурирование пользовательских комментариев

TicketLatest

Выводит ленту последних созданных и\или прокомментированных тикетов.

*Сниппет вызывается не кэшированным.

Параметры

Название По умолчанию Описание
&action Comments Режим работы сниппета. Доступно Comments или Tickets
&cacheKey Имя кэша сниппета. Если пустое — кэширование результатов будет отключено.
&cacheTime 1800 Время кэширования.
&depth 10 Глубина поиска ресурсов от каждого родителя.
&fastMode Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&includeContent Выбирать поле контент у ресурсов.
&includeTVs Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]] .
&limit 10 Лимит выборки результатов
&offset Пропуск результатов с начала выборки
&outputSeparator Необязательная строка для разделения результатов работы.
&parents Список категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 — выборка не ограничивается.
&resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
&showDeleted Показывать удалённые ресурсы.
&showHidden 1 Показывать ресурсы, скрытые в меню.
&showLog Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».
&showUnpublished Показывать неопубликованные ресурсы.
&sortby createdon Сортировка выборки.
&sortdir DESC Направление сортировки.
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpl tpl.Tickets.comment.latest Чанк оформления для каждого результата
&tvPrefix Префикс для ТВ плейсхолдеров, например «tv.». По умолчанию параметр пуст.
&user Выбрать только элементы, созданные этим пользователем.
&where Строка, закодированная в JSON, с дополнительными условиями выборки.

*Список может быть расширен общими параметрами pdoTools так как Tickets работает на этой библиотеке.

Примеры

  • Вывод последних тикетов
  • Вывод последних комментариев

TicketMeta

Выводит информацию о текущем тикете, так же позволяет голосовать за тикет на его собственной странице. С версии 1.4.0 Сниппет может использоваться с любыми ресурсами MODX

Параметры вызова сниппета

Название По умолчанию Описание
&getSection 1 Сделать дополнительный запрос в БД для получения родительской секции?
&getUser 1 Сделать дополнительный запрос в БД для получения профиля автора?
&tpl tpl.Tickets.meta Чанк оформления информации о тикете.

Примеры вызова

  • Стандартный вызов сниппета
  • Что бы посмотреть все доступные стандартные плейсхолдеры

subscribeAuthor

Выводит форму подписки на автора. Подписка доступна только для авторизованных пользователей.

Параметры

Название По умолчанию Описание
&createdby Обязательный параметр, ID автора (user), на которого будет осуществляться подписка через форму
&tpl tpl.Tickets.author.subscribe Чанк с формой подписки
&TicketsInit Параметр использовать со значением «1» для подключения формы подписки и инциализации frontend-скриптов Tickets на произвольных страницах сайта (например, карточка автора, личный кабинет и т.п.).

Примеры

  • Вызов сниппета для каждого элемента в списке тикетов, например в чанке tpl.Tickets.list.row
  • Вызов сниппета в карточке автора (в которой ID юзера передан в переменную +author.id )

Документация по интерфейсу

Создание раздела с Тикетами

Компонент Tickets поставляется без демо-данных и без шаблонов. Поэтому вам нужно предварительно их создать. Также секция тикетов и сам тикет — это расширенный стандартный «modDocument», поэтому имеет все те же TV-поля, плейсхолдеры и логику работы.

Для начала работы с компонентом Tickets необходимо создать раздел с тикетами. В корне дерева документов или папке с любой вложенностью с помощью контекстного меню необходимо выбрать Создать -> Раздел с тикетами

Заполните необходимую информацию о вашей секции тикетов. Это может быть как секция с новостями сайта, так и блог Петра по веб-оптимизации.

Настройки секции тикетов

В поле содержимое прописываем стандартный вывод тикетов, предварительно отключив html-редактор.

Внимание, у вас должен быть установлен компонент PdoTools.

Шаблон дочерних документов нужно предварительно создать (можно пока пустой — позже откорректируем) и указываем его. В формировании URL я обычно ставлю просто %alias. Также часто отключаю Jevix и включаю выполнение тегов MODX (если создаем все не на fenom).

После создания секции с тикетами у вас появится возможность создавать сами тикеты. Для этого просто нужно нажать на Создать тикет

Создание тикета

Тикет это расширенный modDocument ресурса modx При создании тикета окно экрана имеет визуально 4 категории настроек.

  • Основные настройки информации (Заголовок, Расширенный заголовок, Описание, Аннотация (введение), Содержимое);
  • Настройки Meta информации (Опубликован, Дата публикации, Дата отмены публикации, Шаблон, Автор, Родительский ресурс, Псевдоним);
  • Системные настройки (Доступен для поиска, Кэшируемый, Опубликован Использовать HTML-редактор, Контейнер, Заморозить URI, Отключить Jevix, Выполнять теги MODX, Закрытый тикет, Не показывать в меню, Показывать в дереве);
  • Вкладка с управлением комментариями от текущего тикета;

Настройка прав пользователей для Tickets

Для того чтобы компонент Tickets правильно функционировал и его можно было использовать по полной, необходимо что бы все авторизованные пользователи находились в общей группе со специальными правами.

Создание группы пользователя

Шестеренка -> Контроль доступа -> Новая группа пользователей

  • НазваниеMember
  • Политика бэкэнда(нет политики)

Настройка прав доступа

После сохранения данная группа появиться слева, нажимаем по ней ПКМ и выбираем редактировать.

На вкладке Права доступаДоступ к контекстам, нажмите Добавить контекст

  • КонтекстWeb
  • Минимальная рольMember — 9999
  • Политика доступаTicketUserPolicy

Все, теперь можно к примеру разрешать комментирование только авторизованным пользователям, для этого вы можете воспользоваться любым компонентом авторизации, например HybridAuth.

MODX Tickets запрет заполнения introtext

По умолчанию компонент Tickets дублирует поле content в introtext. Сегодня небольшой лайфак, от том как запретить Tickets заполнять поле introtext. Для этого необходимо написать не большой плагин, пусть он будет называться no-introtext, со следующим содержимым:

И вешаем плагину событие OnDocFormSave

Это решение подходит для тех кто в настройках секции отключает Jevix для дочерних тикетов.

Если вы используете Jevix, тогда код плагина будет таким:

В следующем уроке разберем как создать блог на Tickets.

Источник

Adblock
detector