Сначала соберём в кучу предыдущие обновления:
- Настройки разделов тикетов, которые позволяют гибко конфигурировать потомков: шаблон, uri, показ в меню, обработка тегов и т.п. Отдельная ссылка.
- Загрузка файлов при создании тикета. Ссылка.
- Избранные тикеты и комментарии. Ссылка.
- Управление публикацией тикетов. Ссылка.
Подписка на секции
В новой версии можно подписываться на секции тикетов (блоги) и получать письма о публикации нового документа. Работает это по тому же принципу, что и уведомления о комментариях, для чего добавлено 2 новых чанка:- tpl.Tickets.ticket.email.subscription — уведомление о новом тикете на почту
- tpl.Tickets.sections.wrapper — этот чанк нужно указать в параметре &tplWrapper сниппета getTickets, чтобы вывести чекбокс подписки.
Это работает и при публикации из админки, но в админке нельзя указать свой чанк для уведомлений (потому что нигде не вызывается сниппет TicketForm), так что всегда будет использован стандартный tpl.Tickets.ticket.email.subscription.
Улучшение уведомлений
Понятное дело, что для реализации нормальной подписки пришлось внести много исправлений в механизм уведомлений.Если которотко, то теперь уведомления о новых тикетах и комментариях приходят правильно — только при первой публикации.
Если у вас включена премодерация комментариев, то админ получит уведомление о неопубликованном комменте, а когда он его проверит и опубликует — то уведомления получат все подписчики этой темы. У нас, наконец-то, появилась нормальная премодерация комментариев.
При создании неопубликованного тикета никто не получает уведомлений, даже админы. На мой взгляд, это дело юзера — публиковать или нет, у него сейчас есть все инструменты для этого. Так что, все подписчики блога (и админы) получат уведомление с первой публикацией.
Заодно починил проблемы с возможными двойными уведомлениями, когда админ получал и скрытую копию, и уведомление о комментарии.
Другие улучшения
Изменена автоматическая генерация introtext при создании нового тикета. Теперь у нас есть системная настройка ticket_max_cut, которая указывает максимальное количество символов в тикете, которое можно публиковать без тега cut.Если символов больше — то будет выдана ошибка, и пользователю придётся проставить этот тег. Если меньше — то весь контент тикета попадёт в introtext.
Добавлена позможность не запоминать оперделенные поля тикета при его создании с фронтенда. Как известно, этим у нас занимается Sisyphus и теперь вы можете указать элементам формы
<input name="field" class="disable-sisyphus" />и о не будет их запоминать.
Для особого удобства добавил параметр autoPublishGuest сниппету TicketComments. То есть, теперь у него есть 2 параметра для публикации комментариев:
- autoPublish — автопубликация комментов от авторизованных пользователей.
- autoPublishGuest — включает автопубликацию комментов от гостей.
Исправлена ошибка в обработке имён превьюшек файлов, при публикации тикета.
Еще исправлены разные ошибки которые были в баг-трекере, типа сломанного параметра innerJoin у getTickets или принудительной обработки intotext сниппетом Jevix, даже если у тикетв указано disable_jevix.
Заключение
Обновляемся, тестируем и пишем отзывы.Версия довольно неплохо отлажена, но всякое может быть. По мере поступления жалоб буду выпускать заплатки.
Новая версия уже установлена на modx.pro, можно тестировать подписку на блоги.
← Следующая заметка
Новости iOS приложения mxManager
Новости iOS приложения mxManager
Предыдущая заметка →
[Tickets] Версия 1.4.0-rc7 Публикация тикетов
[Tickets] Версия 1.4.0-rc7 Публикация тикетов
github.com/bezumkin/Tickets/search?q=ticket_max_cut&type=Code
В общем все круто, но хорошо бы добавить strip_tags.
2. Но все-таки есть ли возможность вернуть приоритет выставления шаблона новому тикету, если оно задается в ссылке или плагине OnDocFormRender? Я сейчас работаю над дополнением, которое позволяло бы задавать шаблоны новым документам на основании шаблонов родителей, проверял возможность интеграции с Тикетс и вот обнаружил такой затык.
Исходный код открыт — ты можешь прислать pull-request.
Почему спрашиваю — у нас верстка по методологии.
и «не показывать в меню», от системной настройки tickets.ticket_hidemenu_force не зависит.
файл
core / components / tickets / processors / mgr / ticket / create.class.php
строка 188:
$results = $this->modx->cacheManager->generateContext($this->object->context_key, array('cache_context_settings' => false));
заменил на
$results = $this->modx->cacheManager->generateContext($this->object->context_key);
хз на что влияет но теперь адекватно сохраняется в админке.
Pagetitle родителя — «Заявки». Меняла секцию на test и тогда (alias и uri оставляла старые), и uri нового тикета был test/...html
генерация uri у Вас где то переписана или используется стандартная?
Исходник.
как перенесу на сервер, можно дам Вам доступ чтобы лично посмотрели?
bezumkin@yandex.ru?
Хотела подключить плагин валидации для формы тикетов, но она не отрабатывает, форма отправляется.
на обычных формах все ок, а тут видимо что то не дает делать проверку. вот и интересно, что?
хотя, у вас обработка получается срабатывает раньше моей
Tickets.ticket.save(this.form, this);
Если закомментировать кусок то все работает, пойду покопаюсь в коде дальше )
PS
забавно, закомментила этот кусок у Вас и прописала у себя Tickets.ticket.save(this.form, this);
ошибку конечно прописал, но при этом тикет создал. и валидация сработала
а как быть с селектом? первый селект у меня «Выберите… » и value=""
и валидатор хавает…
или он настраивается как в FormIt типа email:required:email:monlength=`5` как то так.
Если нужно, можно еще проверять $mode = 'new' — только для новых тикетов.
Почему то не отправляются уведомления о новых комментариях админам. С настройками почты все ок, т.к. с сайта приходят сообщения через FormIt. Почта настроена через SMTP Гугла. Настройки Tickets вот такие
prntscr.com/3lqv4s
Спасибо.
В плэйсхолдер ставиться число 6, вне зависимости от кол-ва комментариев. (при запуске через обычный чанк — все ок)
Версия tickets 1.4.0pl
Версия pdotools 1.9.2pl2
Помнится подобный баг с [[+total]] был в msearch2 при очередном обновлении pdotools
Если на странице уже выставлен total, то выходит:
По хорошему, нужно завести отдельную таблицу, куда писать общие цифры и по ней сортировать — но это никому особо не нужно.
Так можно делать почти со всеми pdoTools-сниппетами =)
Нужно подлечить.
как проще сделать чтобы переадресация шла просто на адрес тикета? (т.е на (адрес/адрес/адрес) БЕЗ — #comment-3)
спасибо
Не приходит письмо на премодерацию комментариев.
&autoPublishGuest=`1` — так письма приходят.
&autoPublishGuest=`0` — а так нет.
Об этом уже писали, что «В js админском необходимо заменить путь getlist на element/template/getlist», но я так и не нашёл где именно заменить этот путь и решит ли это всю проблему.
Подскажите пожалуйста файл в котором надо поправить путь?
Причина: хтмл-разтметке были указаны теги HEAD и BODY заглавными буквами.
Итог: модуль не находил, куда подключать скрипты и не работал…
%)
Для подключения скриптов и стилей используются методы MODX, так что в таких условиях не будут работать все подобные компоненты, а не только Tickets.
Обновился до 1.4.2, работает, но при авторизации пользователя перестают отображаться предыдущие комментарии. А если заходит неавторизованный гость, то все комментарии видны. Куда копать?
Чанки при обновлении не переписывал, мало того, используются чанки не по-умолчанию, а свои, т.е. при обновлении не должны были перезаписаться.
[2014-08-27 12:39:41] (ERROR @ /index.php) [pdoTools] Error 23000: Column 'parent' in field list is ambiguous
что бы это значило?
вызов сниппета:
Права пользователям были добавлены, визивиг отключен. Форма корректно обрабатывает ошибки (пустые поля и тд) и дает отправлять комментарий с аккаунта администратора, но при попытке отправления комментария любой другой группой консоль выдает следующее:
— при том, что текстовая область не пустая и jgrowl ошибку не выдает.
Подскажите, пожалуйста, в чем может быть причина?
1. Сделать hidden input, куда вставить username пользователя, чтобы он отправлялся с комментарием. Не уверен, что сработает.
2. Написать простенький плагин на загрузку страницы, чтобы при пустом fullname у юзера, туда копировался username и сохранялся. Это сработает 100%.
core/components/tickets/model/tickets/tickets.class.php
строка 393 и 428 заменил на:
А подскажи как мне вывести последние комментарии с кусочком текста комментария
так выводит весь текст комментария
а так обрезка не работает
как обрезать?