Skip to content
  1. Компоненты
  2. Tickets
  3. Фронтенд и AJAX

Фронтенд и AJAX ​

Сниппеты подключают CSS/JS из [[++tickets.frontend_css]] и [[++tickets.frontend_js]] при отрисовке через Tickets::initialize(): TicketForm, TicketComments, TicketMeta, getTickets, getComments, getTicketsSections, TicketLatest и subscribeAuthor с &TicketsInit=`1`.

getStars компонент не инициализирует напрямую, но вызывает getTickets, который это делает.

Endpoint ​

Запросы уходят в assets/components/tickets/action.php (в JS: TicketsConfig.actionUrl). Вызовы процессоров админки идут в отдельный assets/components/tickets/connector.php.

Основные action:

actionНазначение
ticket/saveсохранение тикета с фронтенда
ticket/draftсохранение тикета черновиком (режим сохранения формы)
ticket/publishсохранение и публикация тикета (режим сохранения формы)
ticket/updateобновление тикета (режим сохранения формы)
ticket/previewпредпросмотр
ticket/delete / ticket/undeleteудаление и восстановление
ticket/voteголос за тикет
ticket/starизбранное тикета
comment/saveновый комментарий
comment/previewпредпросмотр комментария
comment/getодин комментарий по id
comment/getlistподгрузка списка
comment/subscribeподписка на ветку комментариев
comment/voteголос за комментарий
comment/starизбранное комментария
section/subscribeподписка на секцию
author/subscribeподписка на автора

Файлы тикета и комментария:

actionНазначение
ticket/file/uploadзагрузка файла к тикету
ticket/file/deleteудаление файла
ticket/file/sortпорядок файлов
ticket/file/descописание изображения (задаётся на странице тикета)
comment/file/uploadзагрузка файла к комментарию

Параметры сниппета ветки комментариев передаются через TicketThread.properties и сессию TicketForm.

TicketsConfig ​

Сниппеты заполняют его при инициализации:

ПолеИсточник
actionUrlпуть к action.php
enable_editortickets.enable_editor
editor.ticket / editor.commenttickets.editor_config.*
formBeforeTicketComments &formBefore
thread_depthTicketComments &depth
thread_treeTicketComments &tree
sourceзагрузка файлов в комментарии (&allowFiles)

События jQuery (1.14+) ​

Обработчик меняет данные формы до предпросмотра или отправки:

СобытиеКогда
tickets_before_ticket_previewпредпросмотр тикета
tickets_before_ticket_saveсохранение тикета
tickets_before_comment_previewпредпросмотр комментария
tickets_before_comment_saveотправка комментария
javascript
$(document).on('tickets_before_comment_save', function (e, form, button) {
  // return false — отменить отправку
});

Якоря и непрочитанные ​

С 1.14.0 счётчик в tpl.Tickets.list.row может вести на #first_unread. При загрузке страницы JS прокручивает к этому якорю или к #comments, если hash в URL совпадает.

Плагин Tickets ​

СобытиеПоведение
OnSiteRefreshсброс кэша default/tickets
OnDocFormSaveсброс кэша ленты tickets/latest.tickets
OnPageNotFoundредирект по URI секции на тикет (FURL + шаблон URI раздела)
OnLoadWebDocumentcookie гостя и visitedon профиля (учёт просмотров тут не идёт)
OnWebPageCompleteучёт просмотров тикета, включая гостей при tickets.count_guests
OnUserSaveобновление профиля автора тикетов
OnResourceDuplicateперегенерация URI копии тикета
OnWebPagePrerenderзамена экранированных [ { в HTML

OnEmptyTrash зарегистрирован в пакете, но обработчика в плагине нет.

События компонента ​

Подключайте обработчики к системным событиям service Tickets (Системные настройки → системные события). Полный список: _build/data/transport.events.php:

  • комментарии: OnBeforeCommentSave / OnCommentSave, On*CommentPublish, On*CommentUnpublish, On*CommentDelete, On*CommentUndelete, On*CommentRemove;
  • ветки: On*TicketThreadClose, On*TicketThreadOpen, On*TicketThreadDelete, On*TicketThreadUndelete, On*TicketThreadRemove;
  • голоса: OnBeforeTicketVote / OnTicketVote, OnBeforeCommentVote / OnCommentVote;
  • звёзды: On*TicketStar, On*TicketUnStar, On*CommentStar, On*CommentUnStar (* — OnBefore и без него).

subscribeAuthor на произвольной странице ​

Передайте &TicketsInit=`1`, чтобы подключить JS Tickets без TicketComments на странице. См. subscribeAuthor.