Выложил в репозиторий финальную версию Tickets 1.4.0. По сравнению с 1.3.0 изменений очень много -постараюсь собрать их здесь в одной заметке.
Сначала соберём в кучу предыдущие обновления:
А теперь последнее пока улучшение - подписка на новые тикеты.
В новой версии можно подписываться на секции тикетов (блоги) и получать письма о публикации нового документа. Работает это по тому же принципу, что и уведомления о комментариях, для чего добавлено 2 новых чанка: - tpl.Tickets.ticket.email.subscription - уведомление о новом тикете на почту
Когда пользователь отмечает чекбокс, в поле properties раздела секий сохраняется массив с подписчиками. При первой публикации нового тикета в этой секции все подписчики получат письмо-уведомление.
Это работает и при публикации из админки, но в админке нельзя указать свой чанк для уведомлений (потому что нигде не вызывается сниппет TicketForm), так что всегда будет использован стандартный tpl.Tickets.ticket.email.subscription.
Понятное дело, что для реализации нормальной подписки пришлось внести много исправлений в механизм уведомлений.
Если которотко, то теперь уведомления о новых тикетах и комментариях приходят правильно - только при первой публикации.
Если у вас включена премодерация комментариев, то админ получит уведомление о неопубликованном комменте, а когда он его проверит и опубликует - то уведомления получат все подписчики этой темы. У нас, наконец-то, появилась нормальная премодерация комментариев.
При создании неопубликованного тикета никто не получает уведомлений, даже админы. На мой взгляд, это дело юзера - публиковать или нет, у него сейчас есть все инструменты для этого. Так что, все подписчики блога (и админы) получат уведомление с первой публикацией.
Заодно починил проблемы с возможными двойными уведомлениями, когда админ получал и скрытую копию, и уведомление о комментарии.
Изменена автоматическая генерация introtext при создании нового тикета. Теперь у нас есть системная настройка ticket_max_cut, которая указывает максимальное количество символов в тикете, которое можно публиковать без тега cut.
Если символов больше - то будет выдана ошибка, и пользователю придётся проставить этот тег. Если меньше - то весь контент тикета попадёт в introtext.
Добавлена позможность не запоминать оперделенные поля тикета при его создании с фронтенда. Как известно, этим у нас занимается Sisyphus и теперь вы можете указать элементам формы
<input name="field" class="disable-sisyphus" />
и о не будет их запоминать.
Для особого удобства добавил параметр autoPublishGuest сниппету TicketComments. То есть, теперь у него есть 2 параметра для публикации комментариев: - autoPublish - автопубликация комментов от авторизованных пользователей.
Теперь вам будет очень просто объяснить, зачем пользователю нужно зарегистрироваться на сайте.
Исправлена ошибка в обработке имён превьюшек файлов, при публикации тикета.
Еще исправлены разные ошибки которые были в баг-трекере, типа сломанного параметра innerJoin у getTickets или принудительной обработки intotext сниппетом Jevix, даже если у тикетв указано disable_jevix.
Обновляемся, тестируем и пишем отзывы.
Версия довольно неплохо отлажена, но всякое может быть. По мере поступления жалоб буду выпускать заплатки.
Новая версия уже установлена на http://modx.pro, можно тестировать подписку на блоги.
Василий, обрати внимание , у тебя где то системная настройка написана как tickets.ticket_max_cut , а где то ticket.ticket_max_cut, из-за этого она не работает.
https://github.com/bezumkin/Tickets/search?q=ticket\_max\_cut&type=Code
Спасибо, поправил.
Василий, огромное спасибо вам за это дополнение! В Tickets теперь есть все, о чем раньше простые вебмастера могли только мечтать. Единственная задачка, которую я никак не могу решить : голосование, а теперь и добавление в избранное. У меня не отображаются кнопки (стрелки вверх/вниз и звездочка). Вообще, такое ощущение, что у элементов нет стилей, хотя default.css и editor.css подключены. Буду благодарна, если подскажете, как решить эту проблему.
Думаю, нужно просто обновить чанки - там же поменялась верстка и стрелочки добавились.
Я только поставила это дополнение. Действительно, почему-то нет стилей .glyphicon-arrow-down и .glyphicon-arrow-up. Прописала в основном css, голосование заработало. Думаю, с избранным тоже все получится.
Так нужно подключить шрифты glyphicon и Bootstrap 3
Ухх, пропустил фичу новой версии - генерацию introtext и все грешил на свой плагин. В общем все круто, но хорошо бы добавить strip_tags.
При создании обычного документа в админке можно явно передавать шаблон в ссылке (&template=11) и он установится в форме по умолчанию. При создании тикета эта фича не работает.
И через плагин OnDocFormRender не получается выдать шаблон новому тикету как обычным документам:
Зато работает фича с выставлением шаблона в настройках секции.
1. Да, я видел выставление настроек в секции. Я там не нашел, кстати, как скинуть обратно в "нет шаблона", если выставил однажды шаблон. Можно только поставить пустой шаблон, но тогда новые тикеты будут наследовать пустой шаблон, а не дефолтный для всех, как если бы было выставлено "нет шаблона". 2. Но все-таки есть ли возможность вернуть приоритет выставления шаблона новому тикету, если оно задается в ссылке или плагине OnDocFormRender? Я сейчас работаю над дополнением, которое позволяло бы задавать шаблоны новым документам на основании шаблонов родителей, проверял возможность интеграции с Тикетс и вот обнаружил такой затык.
Так что вы решили, это баг или фича?) В смысле, планируется к доработке или так было и задумано?
Я решил, что мне некогда.
Исходный код открыт - ты можешь прислать pull-request.
Василий, а изменения дефолтной верстки и переименование всех классов не приведет к неработоспособности Tickets? Или есть такие классы, которые нельзя переименовывать/удалять? Почему спрашиваю — у нас верстка по методологии.
Тогда нужно будет по методологии переписать и javascript.
только у меня если в админке как только-только создашь тикет, на него не генерируется ссылка? (если нажимать например просмотреть)
и получается что "заморозить uri" генирируется само по себе при создании и "не показывать в меню", от системной настройки tickets.ticket_hidemenu_force не зависит.
а не uri убирается если удалить в настройках секции
Может, попробуешь почитать про изменения в новой версии? Например вот здесь есть про hidemenu и формирование uri.
решил проблему так: файл 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);
хз на что влияет но теперь адекватно сохраняется в админке.
Влияет на формирование uri при создании документа с фронтенда.
а у меня почему то адрес uri дочерних тикетов создается не с alias родителя, а с translit родителя. То есть например не contacts , a kontakti
Проверяй uri родителя.
У меня без изысков берётся uri родителя, и к нему добавляется uri тикета.
Исходник.
хм, сейчас заметила что и на другом сайте, после обновления тикетов генерируется не так uri как перенесу на сервер, можно дам Вам доступ чтобы лично посмотрели?
Я лично смотрю на своих сайтах - всё работает хорошо.
напомните Ваш email bezumkin@yandex.ru ?
Василий, добрый вечер. Хотела подключить плагин валидации для формы тикетов, но она не отрабатывает, форма отправляется. на обычных формах все ок, а тут видимо что то не дает делать проверку. вот и интересно, что?
Плагин валидации учитывает, что форма с тикетом отправляется через ajax?
Вообще этот плагин по идее не дает отправить форму, если там есть ошибки. + если у инпутов есть required , то браузер (современный) не должен дать отправить форму.. хотя , у вас обработка получается срабатывает раньше моей Tickets.ticket.save(this.form, this);
Если закомментировать кусок
то все работает, пойду покопаюсь в коде дальше )
PS забавно, закомментила этот кусок у Вас и прописала у себя Tickets.ticket.save(this.form, this); ошибку конечно прописал, но при этом тикет создал. и валидация сработала
А ты в курсе, что сниппету TicketForm можно указать &requiredFields - и он вернёт ошибку, если они не заполнены?
Конечно, но например мне надо чтобы поле состояло только из цифр, или имело определенную длину (знаю можно это сделать атрибутами инпута) а как быть с селектом? первый селект у меня "Выберите ... " и value="" и валидатор хавает... или он настраивается как в FormIt типа email:required:email:monlength=
5
как то так.В MODX этого легко решается плагином на создание ресурса:
Если нужно, можно еще проверять $mode = 'new' - только для новых тикетов.
Спасибо, вот этого секретика не знала!
Здравствуйте.
Почему то не отправляются уведомления о новых комментариях админам. С настройками почты все ок, т.к. с сайта приходят сообщения через FormIt. Почта настроена через SMTP Гугла. Настройки Tickets вот такие http://prntscr.com/3lqv4s
Спасибо.
При следующем вызове
В плэйсхолдер
ставиться число 6, вне зависимости от кол-ва комментариев. (при запуске через обычный чанк - все ок) Версия tickets 1.4.0pl Версия pdotools 1.9.2pl2 Помнится подобный баг с [[+total]] был в msearch2 при очередном обновлении pdotools
Это INLINE чанк, значит плейсхолдеры внутри него обрабатываются до попадания в сниппет.
Если на странице уже выставлен total, то выходит:
Подскажите пожалуйста как сделать сортировку по кол-ву комментариев, а также просмотров. Чувствую, что через join надо, а как, понять не могу.
Не советую этого делать - при нескольких тысячах комментов такие джоины начинаю сильно тормозить. Раньше такой функционал был в getTickets, потом пришлось убрать. Если есть желание - посмотри в истории github.
По хорошему, нужно завести отдельную таблицу, куда писать общие цифры и по ней сортировать - но это никому особо не нужно.
Спасибо! Гитхаб глянул все понятно стало, попробую пока также сделать, посмотрю по скорости.
В общем получилось вот так, это для сортировки по кол-ву просмотров:
Молоток!
Так можно делать почти со всеми pdoTools-сниппетами =)
Нашел проблемку, при вызове из сниппета pdoPage с запросом where с типом string, происходят разные запросы. Дело в том что метод addWhere в pdoFetch отличается от того способа что используется в тикетах:
Нужно подлечить.
Василий, когда добавляется новый коментарий, идет переадресация на адрес вида (адрес/адрес/адрес)#comment-3
как проще сделать чтобы переадресация шла просто на адрес тикета? (т.е на (адрес/адрес/адрес) БЕЗ - #comment-3)
спасибо
Нужно изменить вот эту строчку.
спасибо
Василий, подскажите в чем проблема. Не приходит письмо на премодерацию комментариев.
&autoPublishGuest=
1
- так письма приходят. &autoPublishGuest=0
- а так нет.Не знаю, видимо глюк, пиши https://github.com/bezumkin/Tickets/issues/new
Здравствуйте! Василий, подскажите пожалуйста по моей проблеме. После обновления на MODx 2.3.1, тикетс ругается что чего то не найдено.
Об этом уже писали, что "В js админском необходимо заменить путь getlist на element/template/getlist", но я так и не нашёл где именно заменить этот путь и решит ли это всю проблему.
Подскажите пожалуйста файл в котором надо поправить путь?
.
Я знаю, что баг совершенно детский, но я сломал голову, пока пытался понять, почему у меня упорно не работает этот компонент.
Причина: хтмл-разтметке были указаны теги HEAD и BODY заглавными буквами. Итог: модуль не находил, куда подключать скрипты и не работал..
%)
Круто.
Для подключения скриптов и стилей используются методы MODX, так что в таких условиях не будут работать все подобные компоненты, а не только Tickets.
Была установлена версия 1.2.3, всё работало прекрасно. Обновился до 1.4.2, работает, но при авторизации пользователя перестают отображаться предыдущие комментарии. А если заходит неавторизованный гость, то все комментарии видны. Куда копать? Чанки при обновлении не переписывал, мало того, используются чанки не по-умолчанию, а свои, т.е. при обновлении не должны были перезаписаться.
P.S. Только что посмотрел в логах, при входе на страницу зарегистрированного пользователя выскакивает вот такая ошибка:
[2014-08-27 12:39:41] (ERROR @ /index.php) [pdoTools] Error 23000: Column 'parent' in field list is ambiguous
что бы это значило?
P.P.S. Меняю чанк TicketComments на старую версию, всё начинает работать. Смею предположить, что что-то не так именно в этом чанке.
Здравствуйте. Подскажите, пожалуйста, с чем может быть связана проблема:
вызов сниппета:
Права пользователям были добавлены, визивиг отключен. Форма корректно обрабатывает ошибки (пустые поля и тд) и дает отправлять комментарий с аккаунта администратора, но при попытке отправления комментария любой другой группой консоль выдает следующее:
— при том, что текстовая область не пустая и jgrowl ошибку не выдает.
Подскажите, пожалуйста, в чем может быть причина?
Говорит, имени нет у пользователя.
Подскажите, пожалуйста - можно ли при помощи базовых опций сниппета выставить имя пользователя как username?
Я точно не помню, так что тут 2 варианта: 1. Сделать hidden input, куда вставить username пользователя, чтобы он отправлялся с комментарием. Не уверен, что сработает.
2. Написать простенький плагин на загрузку страницы, чтобы при пустом fullname у юзера, туда копировался username и сохранялся. Это сработает 100%.
Спасибо большое за помощь. В итоге решил сделать так:
core/components/tickets/model/tickets/tickets.class.php строка 393 и 428 заменил на:
Василий, подскажи, пожалуйста, в настройках Tickets я выставил уровень уведомления администратора 0. Но мне все равно приходят письма. Why?
Не знаю, наверное где-то в коде ошибка.
привет Василий! А подскажи как мне вывести последние комментарии с кусочком текста комментария
так выводит весь текст комментария
а так обрезка не работает как обрезать?