Как добавить поле формы на страницы менеджера modx 2.2.14

Я пытаюсь добавить поле editiedon на страницы менеджера modx, чтобы мои пользователи могли редактировать значение, используя этот фрагмент документации в качестве отправной точки:

http://rtfm.modx.com/revolution/2.x/case-studies-and-tutorials/adding-custom-fields-to-manager-forms

Что работает, но:

  • как я могу сделать это поле даты/времени?
  • как я могу разместить его на вкладке настроек данного ресурса?

person Sean Kimball    schedule 26.05.2014    source источник


Ответы (2)


Разве input type="date" не является ответом на первый вопрос? Я не уверен, как бы вы сделали вторую часть, если бы вам не удалось получить визуализированный контент и каким-то образом соединить его там (если только не существует какого-то скрытого указанного метода).

В противном случае вы всегда можете решить эту проблему с помощью обычной настройки формы. Вы захотите создать TV типа Date и указать для него пользовательские данные по умолчанию с помощью фрагмента кода, который просто извлекает текущее значение ресурсов editedon. Я думаю, вам нужно только обновить набор форм ресурса/обновления. На вкладке переменных шаблона убедитесь, что ваш телевизор подключен, и измените значение региона на «modx-resource-settings».

person Kristian Sandström    schedule 27.05.2014
comment
вы можете получить поле даты, скопировав источник поля даты с другой вкладки, но вы не получите всплывающий календарь. обнаружил, что в любом случае это бесполезно, поскольку modx обновляет поле editedon после сохранения ресурса. - person Sean Kimball; 27.05.2014

Есть два разных способа, которые имеют свои плюсы и минусы.

Сначала вы можете использовать переменную шаблона с типом 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