Новая большая бета Tickets с серьёзными изменениями. Сначала планировалось только исправить старые ошибки, но в итоге вышла глубинная переделка логики создания и обновления тикетов.
Главная новость: у секций тикетов появились собственные настройки, которые влияют на дочерние документы:
Теперь вы можете указать шаблон, схему формирования uri и некоторые значения по умолчанию.
Соответственно, изменились и системные настройки: - Настройки умолчаний переехали из системных в секцию:
Когда я пишу, что настройки удалены - это значит, что они не будут созданы по умолчанию на новых установках. На старых сайтах ничего не должно сломаться при обновлении, компонент даже использует старые настройки для умолчанию в секциях.
Эта новая мега настройка позволяет вам задать правила для uri дочерних тикетов. Работает она просто: в поле uri прописывается полный адрес, и ставится флажок uri_override, чтобы его использовать.
Вам доступны следующие переменные в схеме: - %id - идентификатор тикета
Для формирования uri дата сначала берется из pub_date, если там пусто - то из publishedon, а потом уже из createdon - если документ не публикуется. В принципе, вы можете теперь указывать адреса как у Articles - %y/%m/%d/%alias/, но я не советую этого делать. Почему?
Очень просто: тикеты могут переносится из одной секции в другую и менять URI. Если вы хотите, чтобы при этой смене ваши посетители не получали 404, а редиректились на новый адрес автоматически, нужно использовать такие схемы: - %id/ - tickets/15/ - формат uri на моём сайте.
В общем, не должно быть типа вложенных директорий (то есть косых /) и должен быть указан %id. При этом у всех секций должна быть одинаковая схема URI, тогда при переносе документа, плагин Tickets возьмет схему от старой секции, вычленит из неё id тикета, сгененериует новый адрес и отправит пользователя на него.
Кстати говоря, вот случаи, когда URI тикета будет автоматичеки перегениерирован: - Изменение поля parent, то есть - перенос тикета в другую секцию
Эти случаи прописаны прямо в метод 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, а потом вы можете обновиться - по желанию.
Жду ваших отзывов и замечаний.
Я бы так не сказал, читал документацию по сниппетам Yandex так там сказано что дату создания документа он определяет из url страницы.
Это не делает такой адрес красивым.
На вкус и цвет - возможность теперь есть.
Я к тому что не все извращенцы по своей воле:)
Установил на тестовый сайт и вот такая фигня:
В uri тикета прописывается pagetitle категории а не alias. В чём может быть проблема?
В этом пути ты можешь прописать все что душе угодно. Не могу понять в чем проблема?!
Я прекрасно понимаю что могу прописать что угодно. Просто установил tickets 1.4.0-beta, врубил чпу, создал раздел тикетов, в нем тикет. Получил картину описанную выше. Получается что uri генерируется не верный вместо
должно быть
Вот доступ к сайту:
Попробуй создай в категории новый тикет, у него в uri вместо alias-a категории будет pagetitle. Я интересуюсь как по умолчанию генерировать верный адрес
А у меня все нормально отработало.
Хотя нет. При публикации тикета тут же встала проблема.
Заморозил uri категории - стало хорошо.
Если разморозить, то опять "категория". Буду разбираться, спасибо!
Заметил на версии Tickets 1.3.0. (после обновления на 1.4.0 проблема не исчезла), что в самом тикете не работает «Дата публикации» ([[*pub_date]]). Т.е. если поставить дату публикации, то по наступлении нужного времени галочка на Опубликовано не ставится и, следовательно, тикет остается не опубликованным. Пробовал как с изначально поставленной галочкой Опубликовано, так и без нее.
В обычных ресурсах все работает. В разделах тикетов тоже все ок.
Никогда не проверял и не разбирался, как это работает.
Если нужно - https://github.com/bezumkin/Tickets/issues/new
Добавил. Просто наличие такой функции сбивает с толку: вроде как можно поставить дату публикации, но она не работает.
Посмотрел как работает в обычном ресурсе: если поставлен чекбокс, что ресурс опубликован и назначена дата публикации, то после сохранения чекбокс опубликовано убирается, и в нужное время (в момент публикации) автоматически добавляется. В тикете чекбокс опубликовано не убирается после добавления даты публикации, а если чекбокс изначально не стоял, то он и не появится в нужное время.
В общем не знаю, смог ли донести суть, тут нужно просто попробовать воспроизвести проблему.
Заметил, что ты сделал фикс этой проблемы, вот только не учел один момент: в момент наступления времени публикации должен чиститься кеш сайта, иначе ресурс будет не опубликован до того момента, пока не будет очищен кеш каким-либо образом.
Как я могу это учесть?
Тут вопросы к MODX, а не ко мне.
Я это к тому, что в обычных ресурсах на сайте кеш очищается во время публикации по расписанию. Смысл ставить публикацию на тикет в 10:00 если он может опубликоваться только через неделю, если никто не очистит кеш.
Ты уж извини, я в этом не разбираюсь, просто пишу баг репорты. Этой функцией, как я понимаю, вообще мало кто пользуется, так что можно оставить и так, как есть сейчас.
Василий, ты бог в MODX! :D
Да перестань.
отловил баг, создаю секцию тикетов, сохраняю и больше не могу зайти в нее, белый лист
[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 )
Как я понял для данного обновления необходима версия php 5.5.1. У меня на php 5.4.4 компонент не работает, так как вызывается функция boolval(), которая тогда ещё не поддерживалась.
Исправлено, обновись на beta1.
Нечеловеческое спасибо Вам!
Большое спасибо! Пока полёт нормальный
Василий, извините за настойчивость, я уже написала, но не там, где нужно... В Tickets 1.4.0 beta1 внутри разделов у меня не отображаются тикеты на сайте. При создании нового раздела в нем автоматически подставляется вызов сниппета getTickets
Если сделать этот же вызов из шаблона раздела, то тикеты отображаются, а если со страницы-раздела (как по умолчанию должно быть) - то нет. Это только у меня глюк или нет? Искать у себя проблему или ждать обновления? :)
У меня такой проблемы нет и больше никто не писал.
Так что, скорее-всего, дело не в обновлении. Попробуй вызвать другой сниппет в контенте секции - он будет работать?
Может в шаблоне нету [[*content]] или ошибка в этом слове?
Как это ни глупо, да. Спасибо, я на этот не скоро бы внимание обратила)
Василий, добрый день! У меня вопрос на счет html-разметки в чанках Tickets. Привязана ли работа скриптов к css-классам? Т.е. если я заменю классы на свои, чтобы подключить свои стили (к примеру, class="form-actions" внутри формы изменю на свой class="group-control"), может ли это повлиять на работу сниппетов? Если да, то во многих ли местах это встречается (если во многих, то я тогда вообще не стану изменять классы, а просто допишу стили к вашим), - или может быть есть строго определенные два-три места, где структуру html и классы изменять нельзя, а в остальных местах можно менять это свободно?
Это важно понять, чтобы потом вас не дергать по поводу того, что у меня что-то "сломалось".
Сниппеты никак не завязаны на html, с ним работает только родной javascript.
Можно отключить родной default.css, добавить свои классы и написать любой внешний вид для комментариев.
Поняла. И если можно, еще такой вопрос. При обновлении версии Tickets предлагается выбрать, какие чанки перезаписать. Вот меня всегда после такой процедуры мучает вопрос, что именно и в каких именно чанках поменялось... Я обычно копирую чанки, переименовываю их, и уже в переименованных делаю какие-то свои изменения/дополнения. Так вот когда я обновляюсь, возникает желание сравнить свои переименованные чанки с оригиналами на предмет наличия каких-то существенных изменений (допустим, какой-то плейсхолдер теперь по другому назвывается и старый работать больше не будет).
Иными словами, как понять, есть ли существенные изменения и где именно? Обязательно ли перезаписывать каждый раз при обновлении чанки?
Тут только читать анонс обновления нужно. И вдумчиво обновлять. Можно так же попросить Василия что бы он в ченджлоге крупными буквами писал что обновились чанки.
Да, это было бы неплохо.
В репозитории github все прекрасно видно. https://github.com/bezumkin/Tickets/commits/master
А как отключить Формирование URI тикета
Просто очисти поле.
очистка или убирание чек бокса не помогает. После сохранения Заморозить URI снова выбрано.
https://github.com/bezumkin/Tickets/issues/new
Я выбираю "Да" в "Показывать в дереве" в Настройках раздела с тиккетами и жму "сохранить", но тиккеты не показываются в дереве. Что я делаю не так?
Эти настройки работают для новых тикетов, а не для уже созданных.
Там вроде так и написано.
Все-таки стоило бы дополнить как-то так:
Тогда точно непоняток не будет.
Значит нельзя быстро переключать видимость документа во древе? Жаль, оно очень удобно например в Collections. Когда документов один-два, дерево намного удобней. А обычный документ же можно присоединить к тиккету? Собственно, нам сейчас нужнее не дерево, а именно возможность добавлять пару статеек к документу. Я так перетащил в дереве документ, вроде нормально присоединяется. Попробовал добавить через migx - вроде нормально подключаются на первый взгляд. Тиккеты, это ж тоже ресурсы, проблем же не должно быть?
Я имел ввиду возможность добавить пару документов к тиккету. Без комментариев и всего такого, просто пару-тройку стандартных документов Модх. Они будут у некоторых тиккетов.
Ну конечно, а так то вообще непонятно, одни сплошные вопросы.
Мне кажется, я даже если книгу напишу, всё равно вопросы будут, ибо в наше время никому читать не охота, проще вопрос задать - путь мне разжуют.
Ну так и используй Collections, какие проблемы?
Изначально тикеты рассчитаны не иметь потомков. Что будет, если к ним прицепить документы, и где это аукнется - не знаю.
Не, ну доки на родном то языке народ еще читает. И я в том числе. Ладно, спасибо за консультацию.
Добрый день! Возникла следующая задача? Необходимо реализовать функционал анонимных вопросов, на которые отвечают специалисты (авторизованные пользователи). Возможно ли реализовать этот функционал при помощи этого плагина? Если да, то в каком направлении копать? Заранее благодарю!
Василий привет. Подскажи как сформировать URI тикета по своему правилу, при создании тикета через процессоры? Пробовал по всякому - все равно id тикета вперед подставляет... Спасибо!