MODX. Tickets. Комментарии и публикации из фронт энда

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

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

  • TicketSectionPolicy — разрешение для создания новых тикетов в разделе;
  • TicketUserPolicy — разрешение на управление возможностями Tickets, добавление, удаление, чтение и т.п.;
  • TicketVipPolicy — тоже самое что TicketUserPolicy, но с воможностью просматривать приватные Тикеты.

Сам компонент состоит из нескольких сниппетов, каждый из которых отвечает за определенные действия.

Публикация из фронт-энда

[[!TicketForm?
&allowedFields=`parent,pagetitle,content,published,image`
&requiredFields=`parent,pagetitle,content`
&tplFormCreate=`shareForm`
&redirectUnpublished=`31`
]]

Ресурсы Tickets находятся в той же таблице SQL что и остальные ресурсы — prefix_site_content. Несмотря на то, что в админке нет возможности сделать из тикета обычный ресурс, это можно сделать с помощью SQL запросов.

Показ пользователю опубликованных им же ресурсов 

[[!getTickets?
	&user=`[[!+modx.user.id]]`
	&showUnpublished=`1`
	&parents=`21`
	&includeTVs=`tags,image,slider,year,view,like`
	&tpl=`getArticle`
]]

Вставка файлов в Tickets — плейсхолдер [[+files]]

Можно добавлять файлы при помощи 

Файлы загружаются сразу при добавлении и сохраняются в таблицу TicketFile.

Параметры сниппета TicketForm для испоьзования файлов:

  • allowFiles — Разрешить загрузку файлов? Если да — то подключится загрузчик и нужные скрипты.
  • source — Источник медиа-файлов, в который будут сохранены изображения. По умолчанию берется системны настройка tickets.source_default, в которую прописывается источник Tickets Files.
  • tplFiles — Чанк-обертка всего блока работы с файлами. Загружчик, список файлов и прогрессбар.
  • tplFile — Чанк оформление файла, который не является изображением.
  • tplImage — Чанк офомрления картинок.

Выводом файлов занимается снипет TicketMeta, но также можно использовать pdoResources, добавив к вызову параметры &class=`TicketFile` &sortby=`createdon`
&sortdir=`ASC`
. Если не указать сортировку, сниппет попытается сортировать по колонке publishedon, которая у TicketFile отсутствует.

Голосование и прочее meta

[[!TicketMeta]]

TicketMeta позволяет голосовать, сохранять ресурсы в избранное,

Избранное сохраняется в таблицу TicketStar, где пишется имя класса (Ticket или TicketComment), id объекта, id его автора и дата.

Добавление\удаление избранного работает через процессоры, которые требуют прав: ticket_star и comment_star.

Параметры сниппета TicketMeta для вывода файлов:

  • getFiles — Выводить список загруженных файлов?
  • tplFile — Чанк оформления сслыки на файл.
  • unusedFiles — Выводить только файлы, неиспользованные в контенте документа.

Обертка для вывода файлов прописана в чанке tpl.Tickets.meta, в быстром плейсхолдере has_files.

Комментарии

Построение дерева комментариев

[[!TicketComments]]

Для вывода списка комментариев

[[getComments]]

Параметры сниппета getComments

  • parents — выбор родительского раздела комментариев;
  • resources — выбор родительского ресурса комментариев;
  • threads — выбор ветки;
  • comments — id комментариев.

Избранное

Для вывода избранных тикетов можно использовать:

[[!pdoPage? 
&element=`getTickets` 
&sortby=`{"star_createdon":"DESC"}` 
&groupby=`star_id HAVING star_id IS NOT NULL AND star_user = [[!+modx.user.id]]`
]]

Для вывода избранных тикетов и комментариев можно использовать:

[[getStars]]
  • class — указывается Ticket или TicketComment.

Выберет id избранного и передаст в getTickets или getComments. Если не указан параметр &user, то будет показано избранное текущего пользователя.

Документации

getTickets

getTickets ​

getTickets

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

Параметры

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

Подсказка

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

Примеры

Стандартный вызов.

modx
[[!pdoPage?
  &element=`getTickets`
]]

[[!+page.nav]]

getTicketsSections

getTicketsSections ​

getTicketsSections

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

Параметры

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

Подсказка

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

Примеры

Простой вызов.

modx
[[!getTicketsSections?]]

TicketComments

TicketComments ​

TicketComments

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

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

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

Название По умолчанию Описание
&allowGuest 0 Включить возможность комментирования для неавторизованных пользователей?
&allowGuestEdit 1 Разрешать неавторизованным пользователям редактировать свои комментарии?
&allowGuestEmails 0 Отправлять гостям почтовые уведомления об ответах?
&autoPublish 1 Автоматически публиковать все новые комментарии, без премодерации.
&autoPublishGuest 1 Автоматически публиковать все новые комментарии неавторизованных пользователей, без премодерации.
&depth 0 Целое число, для указания максимальной глубины ветки комментариев.
&enableCaptcha 1 Включить защиту от спама для неавторизованных пользователей?
&fastMode 1 Если включено - в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие - будут вырезаны.
&formBefore 0 Расположить форму комментирования перед комментариями. По умолчанию - нет.
&toPlaceholder Не выводить результат работы сниппета, а поместить в плейсхолдер toPlaceholder
&separatePlaceholder 0 При параметре 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 Чанк с требованием авторизоваться.

Примеры

  • Стандартный вызов сниппета
modx
[[!TicketComments?]]
  • Вызов сниппета с комментариями для неавторизированных пользователей
modx
[[!TicketComments? &allowGuest=`1`]]

TicketForm

TicketForm ​

TicketForm

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

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

Название По умолчанию Описание
&allowedFields parent,pagetitle,content,published Поля тикета, которые разрешено заполнять пользователю. Можно указывать имена ТВ параметров.
&context Список контекстов для поиска секций, через запятую.
&parents По умолчанию выводятся все доступные разделы тикетов, но вы можете ограничить их, указав конкретных родителей через запятую. Указав через знак минус "-" можно исключить родителя
&resources Можно точечно через запятую указать конкретные разделы, доступные в списке или исключить их через знак минус "-" в комбинации с параметром parents
&permissions section_add_children Проверка прав на публикацию в раздел. По умолчанию проверяется разрешение "section_add_children".
&tid Этот параметр дает возможность вызывать через сниппет редактирование конкретного тикета без использования url-параметра $_REQUEST['tid'] .
&redirectUnpublished 0 Вы можете указать, на какой документ отправлять пользователя при создании неопубликованного тикета.
&redirectDeleted 0 Вы можете указать, на какой документ отправлять пользователя при удалении тикета.
&redirectUnDeleted 0 Вы можете указать, на какой документ отправлять пользователя при восстановлении тикета.
&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 <option value="[[+id]]" [[+selected]]>[[+pagetitle]]</option> Чанк для оформления раздела вопросов в форме
&tplTicketEmailBcc tpl.Tickets.ticket.email.bcc Чанк для уведомления админов сайта о новом тикете.
&validate Валидация полей формы по правилам FormIt (используется при наличии установленного компонента FormIt)

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

modx
[[!TicketForm]]

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

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

TicketLatest

TicketLatest ​

TicketLatest

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

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

Параметры

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

Подсказка

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

Примеры

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

    modx
    [[!TicketLatest?
      &limit=`5`
      &fastMode=`1`
      &action=`tickets`
      &tpl=`tpl.Tickets.ticket.latest`
    ]]
  • Вывод последних комментариев

    modx
    [[!TicketLatest?
      &limit=`5`
      &fastMode=`1`
      &action=`comments`
      &tpl=`tpl.Tickets.comment.latest`
    ]]

TicketMeta

TicketMeta ​

TicketMeta

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

Подсказка

С версии 1.4.0 Сниппет может использоваться с любыми ресурсами MODX

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

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

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

  • Стандартный вызов сниппета
modx
[[!TicketMeta]]
  • Что бы посмотреть все доступные стандартные плейсхолдеры
modx
[[!TicketMeta? &tpl=``]]