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 у TicketComments и TicketForm

События 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) {
  form.elements.content.value = form.elements.content.value.trim();
});

После ответа сервера, когда запрос уже ушёл:

СобытиеКогда
tickets_ticket_previewответ предпросмотра тикета
tickets_ticket_saveответ сохранения тикета
tickets_ticket_deleteответ удаления тикета
tickets_ticket_undeleteответ восстановления тикета
tickets_comment_previewответ предпросмотра комментария
tickets_comment_saveответ сохранения комментария

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

С 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 раздела). Неопубликованный тикет подменяется страницей tickets.unpublished_ticket_page с кодом 403, если id не 0
OnLoadWebDocumentcookie гостя и visitedon профиля (учёт просмотров тут не идёт)
OnWebPageCompleteучёт просмотров тикета, включая гостей при tickets.count_guests
OnUserSaveдля нового пользователя создаёт пустой профиль автора, если его ещё нет
OnEmptyTrashудаляет ветки комментариев очищенных ресурсов
OnResourceDuplicateперегенерация URI копии тикета
OnWebPagePrerenderзамена экранированных [ { в HTML

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

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

  • комментарии: 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.