Публикация из фронта на другие контексты Tickets
Приветствую!
Сразу к делу!
Есть ли функция у компонента Тикетс из фронта постить записи записи из одного контекста в другой!
Ясное дело если оставить значение выбора «Раздела с тикетами» то он будет выводить во фронте только те, которые созданы в этом контексте, попробовав такую конструкцию:
Так понимаю, что придется ковыряться в самом сниппете или возможно подскажите более безопасный способ!
П.С.
Формитом не предлагать, этот месяц знаю, но вроде в плане безопасности он не очень безопасный! Все же хочется решить это при помощи компонента Тикетс!
Заранее спасибо за помощь!
Сразу к делу!
Есть ли функция у компонента Тикетс из фронта постить записи записи из одного контекста в другой!
Ясное дело если оставить значение выбора «Раздела с тикетами» то он будет выводить во фронте только те, которые созданы в этом контексте, попробовав такую конструкцию:
<input type="hidden" name="parent" value="Айди другого контекста" />
То сразу дало понять, что штатные средства не помогают!Так понимаю, что придется ковыряться в самом сниппете или возможно подскажите более безопасный способ!
П.С.
Формитом не предлагать, этот месяц знаю, но вроде в плане безопасности он не очень безопасный! Все же хочется решить это при помощи компонента Тикетс!
Заранее спасибо за помощь!
Комментарии: 10
Нашел строчку:
core/components/tickets/processors/web/section/getlist.class.php
На правильном ли я пути?
$context = array_map('trim', explode(',', $this->getProperty('context', $this->modx->context->key)));
Может надо её как то изменить? Или поковыряться в этом файле:core/components/tickets/processors/web/section/getlist.class.php
На правильном ли я пути?
Неужели не кто не знает? :(
<input type="hidden" name="context_key" value="Айди другого контекста" />
А сниппету в параметре allowedFields нужно добавить context_key.
Действительно забыл добавить «сontext_key» в разрешенные поля, но один фиг не помогает, при сохранении, форма выдает ошибку о том, что «Неверно казан раздел тикетов», вместо родного вызова списка вызываю:
Но здесь ситуация совсем другая! При отправке он по какой то причине не видит другие разделы Тикетов на других контекстах, ясное дело через фронт это скорее всего штатная настройка созданная для безопасности, потому как в бэкенде можно перенести Тикет из одного контейнера в другой, при помощи штатной настройки! Вопрос состоит в том, как обойти эту фигню!
<input type="hidden" name="parent" value="25" />
<input type="hidden" name="context_key" value="web2" />
Помню, что до этого использовал чужой самописный сниппет, там тоже была проблема с публикацией из одного ресурса в другой, но не из-за того, что документ создавался с другим «сontext_key» или «class_key», он по крайней мере записывался в базу и стоило в ручную изменить «сontext_key» или «class_key», как он тут же появлялся в древе и публиковался, затем конечно я решил эту проблему тем, что добавил оба параметра в вызов!Но здесь ситуация совсем другая! При отправке он по какой то причине не видит другие разделы Тикетов на других контекстах, ясное дело через фронт это скорее всего штатная настройка созданная для безопасности, потому как в бэкенде можно перенести Тикет из одного контейнера в другой, при помощи штатной настройки! Вопрос состоит в том, как обойти эту фигню!
Как я и думал, вот эта стока отвечала за указатель конкретного Контекста в месте вызова сниппета:
$context = array_map('trim', explode(',', $this->getProperty('context', $this->modx->context->key)));
Убрал её и статья публикуется туда, куда мне нннадо! :D
Эта строка где? В процессоре? Либо сниппету надо передать параметр &context, либо в форму закинуть скрытое поле с таким именем и добавить в разрешенные.
Значит рассказываю как понял, перековыряв все файлы сниппета!
Эта строка:
Находится по следующему адресу в Бекэнде:
core/components/tickets/processors/web/section/getlist.class.php
Но! Этого все еще не достаточно, чтобы форма позволила отправить Ресурс туда куда нам надо, а задача стоит такая, что необходимо отправить её в другой контекст из текущего!
Для этого нам необходимо назначить «Ключ контекста» для того, чтобы наш опубликованный ресурс записался в древо и там же отображался, в противном случае, мы получим опубликованный ресурс в базе данных, но который не видно в древе ресурсов в Бэкегде, но на который разумеется можно выйти!
Итак, это решается следующим способом:
Разумеется можно реализовать скрытые параметры в виде выпадающего списка!
Эта строка:
$context = array_map('trim', explode(',', $this->getProperty('context', $this->modx->context->key)));
отвечает за принудительный поиск «Секции тикетов» в том контексте в котором находится форма отправки через Фронт сайта!Находится по следующему адресу в Бекэнде:
core/components/tickets/processors/web/section/getlist.class.php
Но! Этого все еще не достаточно, чтобы форма позволила отправить Ресурс туда куда нам надо, а задача стоит такая, что необходимо отправить её в другой контекст из текущего!
Для этого нам необходимо назначить «Ключ контекста» для того, чтобы наш опубликованный ресурс записался в древо и там же отображался, в противном случае, мы получим опубликованный ресурс в базе данных, но который не видно в древе ресурсов в Бэкегде, но на который разумеется можно выйти!
Итак, это решается следующим способом:
<input type="hidden" name="parent" value="Родитель элемента Тикетс в другом контексте" />
<input type="hidden" name="context_key" value="ключ того контекста, в котором находится целевой параметр родителя" />
Внимательнее учтите параметры родителя и Ключа контекста! Все тикеты публикуются строго в ресурсы родители с классом TicketSection с собственным классом Tickets!Разумеется можно реализовать скрытые параметры в виде выпадающего списка!
Если сниппету TicketForm передать параметр &context с нужным контекстом, то список секций отобразится только из этого контекста, а не из текущего. Никакие правки исходников не требуются.
Что касается скрытых полей, ты написал правильно.
Что касается скрытых полей, ты написал правильно.
ну вот пробовал первым же делом, он написал ошибку: «Неверная секция тикетов!»
Убрал строку, все чики-пики!
Убрал строку, все чики-пики!
мде… помогло! Я не так прочитал ваше сообщение! Чет не подумал про этот параметр, спасибо огромное!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.