Отредактировано: 20 Марта 2023
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
03 мая 2019, 07:00
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 работает на этой библиотеке.
Примеры
Стандартный вызов.
[[!pdoPage?
&element=`getTickets`
]]
[[!+page.nav]]
getTicketsSections
getTicketsSections
03 мая 2019, 07:00
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 работает на этой библиотеке.
Примеры
Простой вызов.
[[!getTicketsSections?]]
TicketComments
TicketComments
06 июля 2020, 07:00
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 |
Чанк с требованием авторизоваться. |
Примеры
- Стандартный вызов сниппета
[[!TicketComments?]]
- Вызов сниппета с комментариями для неавторизированных пользователей
[[!TicketComments? &allowGuest=`1`]]
TicketForm
TicketForm
11 марта 2020, 07:00
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) |
Способы вызова
[[!TicketForm?]]
Примеры использования валидатора FormIt
Возможно использование параметра validate по аналогии как он применяется в компоненте FormIt. Компонент FormIt должен быть установлен.
Примеры описаны в отдельном разделе
TicketLatest
TicketLatest
03 мая 2019, 07:00
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 работает на этой библиотеке.
Примеры
[[!TicketLatest? &limit=`5` &fastMode=`1` &action=`tickets` &tpl=`tpl.Tickets.ticket.latest`]]
- Вывод последних комментариев
[[!TicketLatest? &limit=`5` &fastMode=`1` &action=`comments` &tpl=`tpl.Tickets.comment.latest`]]
TicketMeta
TicketMeta
03 мая 2019, 07:00
TicketMeta
Выводит информацию о текущем тикете, так же позволяет голосовать за тикет на его собственной странице.
С версии 1.4.0 Сниппет может использоваться с любыми ресурсами MODX
Параметры вызова сниппета
Название |
По умолчанию |
Описание |
&getSection |
1 |
Сделать дополнительный запрос в БД для получения родительской секции? |
&getUser |
1 |
Сделать дополнительный запрос в БД для получения профиля автора? |
&tpl |
tpl.Tickets.meta |
Чанк оформления информации о тикете. |
Примеры вызова
- Стандартный вызов сниппета
[[!TicketMeta?]]
- Что бы посмотреть все доступные стандартные плейсхолдеры
[[!TicketMeta? &tpl=``]]