MODX. Tickets. Комментарии и публикации из фронт энда
Отредактировано: 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
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]]
[[!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 работает на этой библиотеке.
Примеры
Простой вызов.
[[!getTicketsSections?]]
[[!getTicketsSections?]]
TicketComments
TicketComments
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) |
Способы вызова
[[!TicketForm]]
[[!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` ]]
[[!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` ]]
[[!TicketLatest? &limit=`5` &fastMode=`1` &action=`comments` &tpl=`tpl.Tickets.comment.latest` ]]
TicketMeta
TicketComments
Выводит комментарии и форму для комментирования ресурса.
Параметры вызова сниппета
0
1
0
1
1
0
1
1
0
0
mm
24
http://www.gravatar.com/avatar/
10
1
resource-[[*id]]
.tpl.Tickets.comment.one.auth
tpl.Tickets.comment.one.deleted
tpl.Tickets.comment.email.bcc
tpl.Tickets.comment.email.owner
tpl.Tickets.comment.email.reply
tpl.Tickets.comment.email.subscription
tpl.Tickets.comment.form
tpl.Tickets.comment.form.guest
tpl.Tickets.comment.one.guest
tpl.Tickets.comment.wrapper
tpl.Tickets.comment.login
Примеры