Есть два разных способа, которые имеют свои плюсы и минусы.
Сначала вы можете использовать переменную шаблона с типом Date. Это дает вам правильный компонент ExtJS для дат, и вы увидите календарь на вкладке телевизора. Если вы выберете этот метод, вам нужно создать подключаемый модуль, который вызывается при событии OnBeforeDocFormSave. Там вы можете переопределить свойство modResource editedon с вашего телевизора, и оно будет правильно сохранено. Также вы можете вызвать другое событие (OnLoadWebDocument). Там вы можете установить свойство modResource editedon с вашего телевизора, если вы хотите видеть правильные данные.
Плюсы:
- быстрая интеграция календаря на одну из вкладок modResource
- вы можете использовать настройку формы из соображений безопасности. Это довольно легко и из коробки.
Минусы:
- Дополнительный TV, который немного усложняет процесс обновления modResource
Другой способ более сложный (нужны навыки работы с ExtJS). Создайте подключаемый модуль, который вызывает событие OnDocFormPrerender. Вы можете добавить JS на страницу modResource. Ваши сценарии должны отображать новую пользовательскую вкладку в документе, где вы можете добавить свое специальное поле с календарем. Поэтому для этих целей в MODX есть специальный компонент ExtJS. И, конечно же, вам нужны события из первого метода для загрузки и обновления значения editedon. Также вы можете просто отображать специальное поле на существующей вкладке вместо того, чтобы создавать новую вкладку и отображать на ней свое пользовательское поле.
Плюсы:
- тебе больше не нужен телевизор
- это гибко
Минусы:
- это сложнее и требует времени
P.S. Вы можете просмотреть репозиторий Xlexicon github. Там вы можете найти пример рендеринга новой вкладки и манипулирования свойствами modResource. Также вы можете проверить modAvatar extra для MODX. Есть пример манипуляции с существующей вкладкой.
person
rogaldh
schedule
29.05.2014