Перезагрузить страницу при сохр. ресурса в админке
Добрый день!
Подскажите, как можно перезагрузить страницу при сохранении ее в админке, также как это происходит при первом сохранении ресурса.
Т.е. при первом сохранении ресурса MODx перегружает страницу, а при последующих — только лишь отправляет ajax запрос на ее обновление. Вот тут мне и нужно при определенных условиях заставить MODx перезагрузить страницу, так как я в плагине в этот момент изменяю поля ресурса и эти изменения не видны.
Подскажите, как можно перезагрузить страницу при сохранении ее в админке, также как это происходит при первом сохранении ресурса.
Т.е. при первом сохранении ресурса MODx перегружает страницу, а при последующих — только лишь отправляет ajax запрос на ее обновление. Вот тут мне и нужно при определенных условиях заставить MODx перезагрузить страницу, так как я в плагине в этот момент изменяю поля ресурса и эти изменения не видны.
Комментарии: 14
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Ну а свой скрипт должен вклиниваться в скрипт страницы и перехватывать обработчик сохранения.
Нетривиальная задача, в общем.
В принципе у меня custom tv, и в html код я могу написать любой скрипт.
Перезагрузить страницу я могу так:
И это действие должно висеть на событии, возникающем после сохранения ресурса. Это мне сейчас не под силу =) Не писал на extjs ничего.
Если ничего не путаю — вот это место, которое надо изменить плагином.
То есть, надо по Ext.onReady() делать перезапись MODx.panel.Resource.success() — но я так не пробовал, наверняка будут разные грабли.
Разбираться дальше, извини, некогда.
Может быть уже нашлось решение?
Но у меня не получилось повесить этот код на событие OnDocFormSave. Плагин запускается, но скрипт не выполняется.
Есть подозрения, что скрипт не регистрируется
Лично меня интересует изменение значение твшки на событие OnDocFormSave.
Значение-то изменяется, но вот юзер этого после сохранения не видит.
В принципе, я бы мог на это забить, но измененное значение должно блокировать повторный запуск плагина. А если юзер не перезагрузит страницу после сохранения, то он сможет сколько угодно раз запустить плагин, ведь он будет каждый раз посылать старое значение твшки
1. OnDocFormSave для фактического изменения значения
2. OnManagerPageBeforeRender для встраивания скрипта на страницу в админке.
Сергей, подскажи, пжл, второе событие я правильно указал?
Событие OnManagerPageBeforeRender будет регистрировать скрипт для любого объекта (ресурса, чанка, сниппета), а нужно только для ресурса. Тут подойдет событие OnDocFormPrerender.
В примере моего плагина 2 javacript события — beforeSubmit и success. Если задействовать первое, то второе не нужно. Потому что, во-первых, изменения уже видны в интерфейсе (обновлять страницу не нужно) и, во-вторых, новые значения запишутся в базу (не надо их ловить в OnDocFormSave). Для знатоков яваскрипт не составит труда обработать и ТВшки. Этот вариант более интерактивный.
Ну а если таких знаний не хватает, то подойдет вариант ниже — в OnDocFormSave (можно в OnBeforeDocFormSave) меняются значения ТВ, а в яваскрипте, подключенным в OnDocFormPrerender, обновляется страница. Этот вариант проще.
Так что надо использовать OnDocFormPrerender и уже самом JS скрипте переопределять функции, которые отвечают за обработку ответа сервера.
А все остальное – на OnDocFormSave
И получилось! Страница перезагружается после срабатывания плагина.