[Tickets] Версия 1.4.0-beta - Настройки секции

Новая большая бета Tickets с серьёзными изменениями. Сначала планировалось только исправить старые ошибки, но в итоге вышла глубинная переделка логики создания и обновления тикетов.

Главная новость: у секций тикетов появились собственные настройки, которые влияют на дочерние документы:

Теперь вы можете указать шаблон, схему формирования uri и некоторые значения по умолчанию.

Соответственно, изменились и системные настройки: - Настройки умолчаний переехали из системных в секцию:

  • tickets.disable_jevix_default - отключить Jevix
  • tickets.process_tags_default - включить обработку тегов MODX
  • tickets.ticket_show_in_tree_default - показывать тикет в дереве ресурсов
  • Удалена настройка tickets.ticket_hidemenu_force, теперь вы можете указать значение по умолчанию в настройках секции, но оно не будет переопределять значение потомка. То есть, у созданного тикета будет заранее проставлена (или нет) галочка, но вы можете её изменить.
  • Удалена tickets.ticket_isfolder_force - теперь в ней нет надобности, так как вы сами указываете формирование URI, а значит, можете указать и косую в окончании адреса.
  • Удалены tickets.ticket_id_as_alias и tickets.section_id_as_alias. Первая настройка была нужна для формирования URI, которым вы теперь управляете вручную, а вторая существовала просто за компанию. Вряд ли у кто-то будет обзывать секции по id, а если сильно хочется - это можно сделать плагином.

Когда я пишу, что настройки удалены - это значит, что они не будут созданы по умолчанию на новых установках. На старых сайтах ничего не должно сломаться при обновлении, компонент даже использует старые настройки для умолчанию в секциях.

Формирование URI тикета

Эта новая мега настройка позволяет вам задать правила для uri дочерних тикетов. Работает она просто: в поле uri прописывается полный адрес, и ставится флажок uri_override, чтобы его использовать.

Вам доступны следующие переменные в схеме: - %id - идентификатор тикета

  • %alias - псевдоним, который был указан или сгенерирован из pagetitle
  • %ext - расширение типа документа, указанное в настройках MODX. По умолчанию - .html.
  • %y - год даты публикации тикета
  • %m - месяц
  • %d - день

Для формирования uri дата сначала берется из pub_date, если там пусто - то из publishedon, а потом уже из createdon - если документ не публикуется. В принципе, вы можете теперь указывать адреса как у Articles - %y/%m/%d/%alias/, но я не советую этого делать. Почему?

Очень просто: тикеты могут переносится из одной секции в другую и менять URI. Если вы хотите, чтобы при этой смене ваши посетители не получали 404, а редиректились на новый адрес автоматически, нужно использовать такие схемы: - %id/ - tickets/15/ - формат uri на моём сайте.

  • %id-%alias%ext - tickets/15-myticket.html - по умолчанию для новых установок.
  • %y-%m-%d-%alias-%id - tickets/14-03-17-myticket-15 - для извращенцев =)

В общем, не должно быть типа вложенных директорий (то есть косых /) и должен быть указан %id. При этом у всех секций должна быть одинаковая схема URI, тогда при переносе документа, плагин Tickets возьмет схему от старой секции, вычленит из неё id тикета, сгененериует новый адрес и отправит пользователя на него.

Кстати говоря, вот случаи, когда URI тикета будет автоматичеки перегениерирован: - Изменение поля parent, то есть - перенос тикета в другую секцию

  • Изменение alias тикета. Если в схеме нет %alias, то изменения адреса не будет. Изменение названия тикета на фронтенде не меняет существующий uri.
  • Снятие с публикации тикета отключает uri и uri_override. А публикация генерирует uri заново.
  • При пустом uri и активированном uri_override, uri будет также сгенерирован заново.

Эти случаи прописаны прямо в метод Ticket::save(), поэтому будет работать даже при сортировке тикетов в админке. Перетянули документ в другого родителя - адрес изменился. Указана правильная схема с %id - юзер будет отправлен на новый адрес.

Другие изменения

Переписаны процессоры создания и обновления Тикетов, чтобы слушаться новых настроек.

У объектов Ticket и TicketsSection можно использовать метод getProperties, для получения настроек чекции и тикета. Если это новый объект и у него еще нет сохранённых настроек - вернутся "по умолчанию", которые и будут сохранены.

[#74] Исправлена работа панели тикета в новых версиях MODX и Firefox. Убраны кнопки "Опубликовать" и "Снять с публикации" - вместо них стандартный чекбокс. Это сделано для того, чтобы при изменении статуса документа автоматически менялся и uri. Если тикет снимается с публикации, то uri сразу прячется и наоборот.

[#72] Исправлена ошибка с затиранием ТВшек. Теперь при обновлении тикета с фронтенда получаются все его ТВ и добавляются в запрос.

[#64] Отключение у тикета обработки полей сниппетом Jevix влияет и на introtext.

Небольшие исправления в сниппетах: где есть вывод количества комментариев, они считаются с учетом закрытых веток, а в TicketMeta выводятся все плейсхолдеры тикета.

Заключение

Изменений очень много и они весьма серьёзные. Поэтому версия beta и работоспособность не гарантируется совсем. Переписан весь процесс создани тикета, генерации адреса и назначения его свойств, так что обновление может привнести каки-то уязвимости или проблемы.

В общем, нужно протестировать, и желательно не на рабочих сайтах - у нас есть http://tefile.modx.pro. В репозитории сейчас лежит последняя стабильная 1.3.0 и новая 1.4.0. Сначала ставится 1.3, а потом вы можете обновиться - по желанию.

Жду ваших отзывов и замечаний.

← Предыдущая заметка
[msDiscount] 1.0.2-pl Сниппет «Успей купить»
Следующая заметка →
[Tickets] Версия 1.4.0-beta4 - Загрузка файлов
Комментарии (44)
Чикин Артур
17.03.2014 06:54

%y-%m-%d-%alias-%id — tickets/14-03-17-myticket-15 — для извращенцев =)

Я бы так не сказал, читал документацию по сниппетам Yandex так там сказано что дату создания документа он определяет из url страницы.

bezumkinВасилий Наумкин
17.03.2014 06:58

Это не делает такой адрес красивым.

На вкус и цвет - возможность теперь есть.

Чикин Артур
17.03.2014 07:07

Я к тому что не все извращенцы по своей воле:)

winZrar
17.03.2014 16:43

Установил на тестовый сайт и вот такая фигня: В uri тикета прописывается pagetitle категории а не alias. В чём может быть проблема?

Чикин Артур
17.03.2014 16:46

В этом пути ты можешь прописать все что душе угодно. Не могу понять в чем проблема?!

winZrar
17.03.2014 17:03

Я прекрасно понимаю что могу прописать что угодно. Просто установил tickets 1.4.0-beta, врубил чпу, создал раздел тикетов, в нем тикет. Получил картину описанную выше. Получается что uri генерируется не верный вместо

категория/article.html

должно быть

category/article.html

Вот доступ к сайту:

Панель управления	http://s5364.tefile.modx.pro/manager/
Логин: s5364
Пароль: SZWw739qRUlk

Попробуй создай в категории новый тикет, у него в uri вместо alias-a категории будет pagetitle. Я интересуюсь как по умолчанию генерировать верный адрес

category/article.html
Чикин Артур
17.03.2014 17:17

А у меня все нормально отработало.

Хотя нет. При публикации тикета тут же встала проблема.

bezumkinВасилий Наумкин
17.03.2014 17:31

Заморозил uri категории - стало хорошо.

Если разморозить, то опять "категория". Буду разбираться, спасибо!

dradleСаша Друмс
17.03.2014 20:01

Заметил на версии Tickets 1.3.0. (после обновления на 1.4.0 проблема не исчезла), что в самом тикете не работает «Дата публикации» ([[*pub_date]]). Т.е. если поставить дату публикации, то по наступлении нужного времени галочка на Опубликовано не ставится и, следовательно, тикет остается не опубликованным. Пробовал как с изначально поставленной галочкой Опубликовано, так и без нее.

В обычных ресурсах все работает. В разделах тикетов тоже все ок.

bezumkinВасилий Наумкин
18.03.2014 04:39

Никогда не проверял и не разбирался, как это работает.

Если нужно - https://github.com/bezumkin/Tickets/issues/new

dradleСаша Друмс
18.03.2014 06:47

Добавил. Просто наличие такой функции сбивает с толку: вроде как можно поставить дату публикации, но она не работает.

Посмотрел как работает в обычном ресурсе: если поставлен чекбокс, что ресурс опубликован и назначена дата публикации, то после сохранения чекбокс опубликовано убирается, и в нужное время (в момент публикации) автоматически добавляется. В тикете чекбокс опубликовано не убирается после добавления даты публикации, а если чекбокс изначально не стоял, то он и не появится в нужное время.

В общем не знаю, смог ли донести суть, тут нужно просто попробовать воспроизвести проблему.

dradleСаша Друмс
21.03.2014 19:34

Заметил, что ты сделал фикс этой проблемы, вот только не учел один момент: в момент наступления времени публикации должен чиститься кеш сайта, иначе ресурс будет не опубликован до того момента, пока не будет очищен кеш каким-либо образом.

bezumkinВасилий Наумкин
22.03.2014 03:05

Как я могу это учесть?

Тут вопросы к MODX, а не ко мне.

dradleСаша Друмс
22.03.2014 07:54

Я это к тому, что в обычных ресурсах на сайте кеш очищается во время публикации по расписанию. Смысл ставить публикацию на тикет в 10:00 если он может опубликоваться только через неделю, если никто не очистит кеш.

Ты уж извини, я в этом не разбираюсь, просто пишу баг репорты. Этой функцией, как я понимаю, вообще мало кто пользуется, так что можно оставить и так, как есть сейчас.

Виталий Князь
17.03.2014 20:22

Василий, ты бог в MODX! :D

bezumkinВасилий Наумкин
18.03.2014 04:39

Да перестань.

Давид Мовсесян
18.03.2014 07:49

отловил баг, создаю секцию тикетов, сохраняю и больше не могу зайти в нее, белый лист

[2014-03-18 10:13:48] (ERROR @ /manager/index.php) Error 23000 executing statement: INSERT INTO modx\_register\_messages (topic, id, created, valid, accesses, expires, payload, kill) VALUES (1, 'a8baa56554f96369ab93e4f3bb068c22', '2014-03-18 10:13:48', '2014-03-18 10:13:48', 0, 1395123588, 'if (time() > 1395123588) return null;\nreturn 1;\n', 0) Array ( [0] => 23000 [1] => 1062 [2] => Duplicate entry '1-a8baa56554f96369ab93e4f3bb068c22' for key 'PRIMARY' )

[2014-03-18 10:13:48] (ERROR @ /manager/index.php) Could not send message to queue 1, topic /resource/. Message payload is Array ( [a8baa56554f96369ab93e4f3bb068c22] => 1 )

Дмитрий Куликов
18.03.2014 11:19

Как я понял для данного обновления необходима версия php 5.5.1. У меня на php 5.4.4 компонент не работает, так как вызывается функция boolval(), которая тогда ещё не поддерживалась.

bezumkinВасилий Наумкин
18.03.2014 11:48

Исправлено, обновись на beta1.

Давид Мовсесян
18.03.2014 15:57

Нечеловеческое спасибо Вам!

Дмитрий Куликов
20.03.2014 06:15

Большое спасибо! Пока полёт нормальный

sidarvikДарья Брандина
19.03.2014 14:22

Василий, извините за настойчивость, я уже написала, но не там, где нужно... В Tickets 1.4.0 beta1 внутри разделов у меня не отображаются тикеты на сайте. При создании нового раздела в нем автоматически подставляется вызов сниппета getTickets

[[!pdoPage? &element=`getTickets`]] [[!+page.nav]]

Если сделать этот же вызов из шаблона раздела, то тикеты отображаются, а если со страницы-раздела (как по умолчанию должно быть) - то нет. Это только у меня глюк или нет? Искать у себя проблему или ждать обновления? :)

bezumkinВасилий Наумкин
19.03.2014 15:01

У меня такой проблемы нет и больше никто не писал.

Так что, скорее-всего, дело не в обновлении. Попробуй вызвать другой сниппет в контенте секции - он будет работать?

Чикин Артур
19.03.2014 15:48

Может в шаблоне нету [[*content]] или ошибка в этом слове?

sidarvikДарья Брандина
19.03.2014 16:48

Как это ни глупо, да. Спасибо, я на этот не скоро бы внимание обратила)

sidarvikДарья Брандина
22.03.2014 09:01

Василий, добрый день! У меня вопрос на счет html-разметки в чанках Tickets. Привязана ли работа скриптов к css-классам? Т.е. если я заменю классы на свои, чтобы подключить свои стили (к примеру, class="form-actions" внутри формы изменю на свой class="group-control"), может ли это повлиять на работу сниппетов? Если да, то во многих ли местах это встречается (если во многих, то я тогда вообще не стану изменять классы, а просто допишу стили к вашим), - или может быть есть строго определенные два-три места, где структуру html и классы изменять нельзя, а в остальных местах можно менять это свободно?

sidarvikДарья Брандина
22.03.2014 09:26

Это важно понять, чтобы потом вас не дергать по поводу того, что у меня что-то "сломалось".

bezumkinВасилий Наумкин
22.03.2014 09:49

Сниппеты никак не завязаны на html, с ним работает только родной javascript.

Можно отключить родной default.css, добавить свои классы и написать любой внешний вид для комментариев.

sidarvikДарья Брандина
22.03.2014 10:03

Поняла. И если можно, еще такой вопрос. При обновлении версии Tickets предлагается выбрать, какие чанки перезаписать. Вот меня всегда после такой процедуры мучает вопрос, что именно и в каких именно чанках поменялось... Я обычно копирую чанки, переименовываю их, и уже в переименованных делаю какие-то свои изменения/дополнения. Так вот когда я обновляюсь, возникает желание сравнить свои переименованные чанки с оригиналами на предмет наличия каких-то существенных изменений (допустим, какой-то плейсхолдер теперь по другому назвывается и старый работать больше не будет).

Иными словами, как понять, есть ли существенные изменения и где именно? Обязательно ли перезаписывать каждый раз при обновлении чанки?

Чикин Артур
22.03.2014 13:32

Тут только читать анонс обновления нужно. И вдумчиво обновлять. Можно так же попросить Василия что бы он в ченджлоге крупными буквами писал что обновились чанки.

sidarvikДарья Брандина
22.03.2014 13:44

Да, это было бы неплохо.

bezumkinВасилий Наумкин
22.03.2014 15:35

В репозитории github все прекрасно видно. https://github.com/bezumkin/Tickets/commits/master

denys.alekseenko@gmail.comDen
24.03.2014 17:09

А как отключить Формирование URI тикета

bezumkinВасилий Наумкин
24.03.2014 17:20

Просто очисти поле.

denys.alekseenko@gmail.comDen
24.03.2014 17:38

очистка или убирание чек бокса не помогает. После сохранения Заморозить URI снова выбрано.

bezumkinВасилий Наумкин
24.03.2014 17:49
Антон СоловьёвАнтон Соловьёв
22.04.2014 04:28

Я выбираю "Да" в "Показывать в дереве" в Настройках раздела с тиккетами и жму "сохранить", но тиккеты не показываются в дереве. Что я делаю не так?

bezumkinВасилий Наумкин
22.04.2014 05:30

Эти настройки работают для новых тикетов, а не для уже созданных.

Там вроде так и написано.

Антон СоловьёвАнтон Соловьёв
22.04.2014 06:44

Все-таки стоило бы дополнить как-то так:

По умолчанию тикеты не показываются в дереве документов, чтобы снизить нагрузку на админку, но вы можете включить это для новых документов. Вновь созданные документы будут оторажаться в дереве, а те, что уже созданы так и останутся невидимыми в дереве

Тогда точно непоняток не будет.

Значит нельзя быстро переключать видимость документа во древе? Жаль, оно очень удобно например в Collections. Когда документов один-два, дерево намного удобней. А обычный документ же можно присоединить к тиккету? Собственно, нам сейчас нужнее не дерево, а именно возможность добавлять пару статеек к документу. Я так перетащил в дереве документ, вроде нормально присоединяется. Попробовал добавить через migx - вроде нормально подключаются на первый взгляд. Тиккеты, это ж тоже ресурсы, проблем же не должно быть?

Антон СоловьёвАнтон Соловьёв
22.04.2014 07:04

Собственно, нам сейчас нужнее не дерево, а именно возможность добавлять пару статеек к документу.

Я имел ввиду возможность добавить пару документов к тиккету. Без комментариев и всего такого, просто пару-тройку стандартных документов Модх. Они будут у некоторых тиккетов.

bezumkinВасилий Наумкин
22.04.2014 08:11

Тогда точно непоняток не будет

Ну конечно, а так то вообще непонятно, одни сплошные вопросы.

Мне кажется, я даже если книгу напишу, всё равно вопросы будут, ибо в наше время никому читать не охота, проще вопрос задать - путь мне разжуют.

Жаль, оно очень удобно например в Collections.

Ну так и используй Collections, какие проблемы?

Изначально тикеты рассчитаны не иметь потомков. Что будет, если к ним прицепить документы, и где это аукнется - не знаю.

Антон СоловьёвАнтон Соловьёв
22.04.2014 08:33

Не, ну доки на родном то языке народ еще читает. И я в том числе. Ладно, спасибо за консультацию.

Vasiliy Vronsky
22.04.2014 12:16

Добрый день! Возникла следующая задача? Необходимо реализовать функционал анонимных вопросов, на которые отвечают специалисты (авторизованные пользователи). Возможно ли реализовать этот функционал при помощи этого плагина? Если да, то в каком направлении копать? Заранее благодарю!

ВолодянВолодя
03.05.2014 14:02

Василий привет. Подскажи как сформировать URI тикета по своему правилу, при создании тикета через процессоры? Пробовал по всякому - все равно id тикета вперед подставляет... Спасибо!

bezumkin
Василий Наумкин
30.06.2022 03:58
Есть ли возможность формировать "friendly URL aliases", используя аналог translit MODx? ...
bezumkin
Василий Наумкин
27.06.2022 03:32
Спасибо за исправления, очень выручаешь =) Но учитывая количество не описаных в заметке дополнительн...
bezumkin
Василий Наумкин
27.06.2022 03:10
что будет использоваться для вывода многоуровневого меню Посмотри как работают комментарии на этом ...
bezumkin
Василий Наумкин
25.06.2022 11:56
Поправил, спасибо!
bezumkin
Василий Наумкин
22.06.2022 10:08
Я обычно не пользуюсь RTE редакторами, потому что они пишут всякое непонятное что в HTML. Но можно в...
bezumkin
Василий Наумкин
21.06.2022 01:58
onLoad(data) { this.total = data.total }, и onLoad({total}) { this.total = total }, В нашем случ...
bezumkin
Василий Наумкин
20.06.2022 14:01
Прекрасно тебя понимаю, я когда сам в этом разбирался - голова дымилась. Но зато теперь прямо-таки п...
bezumkin
Василий Наумкин
20.06.2022 09:30
Не надо, оно по умолчанию так - я просто чуть более подробно написал.
bezumkin
Василий Наумкин
19.06.2022 13:42
А можно же из 1 файла сделать 2 экспорта. По-умолчанию, и отдельно для футера: export const Footer =...
bezumkin
Василий Наумкин
19.06.2022 09:44
Тебе спасибо, что поддерживаешь рублём мои начинания!