Редирект на определённый id после опубликования тикета
Добра и Здравия!
Необходимо сделать так, чтобы после опубликования тикета перекидывало не на страницу тикета, а на определёную страницу. Возможно ли сделать такое через плагины MODx?
В TicketForm есть параметр "redirectUnpublished", к сожалению мне он не подходит, потому что нужно, чтобы по публикации тикета приходило уведомление о том, что на сайте опубликован тикет, а если они добавляются неопубликованными, то уведомления не приходит.
Как оказалось, достаточно плагином ставить у ресурса 2 поля:
Необходимо сделать так, чтобы после опубликования тикета перекидывало не на страницу тикета, а на определёную страницу. Возможно ли сделать такое через плагины MODx?
В TicketForm есть параметр "redirectUnpublished", к сожалению мне он не подходит, потому что нужно, чтобы по публикации тикета приходило уведомление о том, что на сайте опубликован тикет, а если они добавляются неопубликованными, то уведомления не приходит.
Как оказалось, достаточно плагином ставить у ресурса 2 поля:
<?php
/* Плагин для Tickets, который назначает свойство тикета "published" для определённого родителя всегда TRUE. Он помогает решить задачу, когда нужно при добавлении тикета отослать уведомление админу + в то же время перенаправить пользователя на страницу в параметре &redirectUnpublished */
$parent = '8'; // родитель, в который всегда добавлять опубликованные тикеты (даже если мы нажимаем на кнопку "В черновик") и слать о них уведомления
switch($modx->event->name) {
case 'OnDocFormSave':
if($modx->context->key != 'mgr' && $mode == 'new' && $resource->class_key == "Ticket" && $resource->get('parent') == 8) {
$resource->set('published', true);
$resource->set('publishedon', $resource->get('createdon') );
$resource->save();
}
break;
} Комментарии: 18
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
ПашокДелаем свой js скрипт для работы с Tickets. Чтобы не изобретать велосипед и сделать максимально быстро — копируем стандартный assets/components/tickets/js/web/default.js
В настройках системы Tickets ->tickets.frontend_js прописываем свой скрипт
В скрипте дописываем функционал редиректа в Tickets.ticket.save после получения ответа от сервера об успешном результате.
Надеюсь подход к решению задачи понятен. С комментами все точно так же и там же.
ПашокПашокПашокПашокНужно сделать проверку контекста, наверно, да?
Я имел ввиду, что в плагине нет редиректа, только публикация тикета. Поэтому и вопрос — зачем нужно это делать в плагине, если можно поменять форму?
ПашокТ.е. задача изменилась с
на
А народ-то и не знал.
ПашокДобавил описание к плагину, чтобы попытаться распутать запутанный народ. :)
Плагин для Tickets, который назначает свойство тикета «published» для определённого родителя всегда TRUE. Он помогает решить задачу, когда нужно при добавлении тикета отослать уведомление админу + в то же время перенаправить пользователя на страницу в параметре &redirectUnpublished
По моему, правильнее штатно публиковать тикеты и сделать плагин на создание документа.
1. Проверить класс Ticket и $mode == 'new'
2. Установить $_SESSION['redirectTo'] = 'любой адрес'.
3. При открытии юзером любой страницы проверять этот флаг. Если есть — редиректить на адрес и убирать его из сессии, чтобы срабатывал только один раз.
Таким образом, юзер сразу после публикации пытается перейти на свой тикет, а попадает на указанную в плагине страницу.
Это лучше отражает логику поставленной задачи, чем скрытая публикация черновиков.
У меня мысль потекла в сторону расширения класса Tickets и изменения метода SaveTicket() с учетом нового параметра redirectTo сниппета TicketForm.
ПашокПашокКак оказалось, достаточно плагином ставить у ресурса 2 поля: