Как установить формат даты для поля Contentful в Ruby? - PullRequest
1 голос
/ 15 января 2020

Ниже приведена миграция Contentful, которую я написал для создания модели содержимого под названием «Trip» в Contentful. То, что я хотел бы сделать, это указать формат полей «Дата начала» и «Дата окончания». Contentful предоставляет три варианта форматирования, которые можно установить в пользовательском интерфейсе:

  1. Только дата
  2. Дата и время без часового пояса
  3. Дата и время с часовым поясом

Без указания формата в моем файле миграции, я получаю формат # 3 по умолчанию, и мне нужен формат # 1. Кто-нибудь знает, как это сделать?

Спасибо!

class CreateTrip < RevertableMigration

  self.content_type_id = 'trip'

  def up
    with_space do |space|

      # Create content model
      content_type = space.content_types.create(
        name: 'Trip',
        id: content_type_id,
        description: 'Content model for trip cards'
      )

      # Set validation
      validation_for_country = Contentful::Management::Validation.new
      validation_for_country.in = ['Bolivia','Haiti','India','Nicaragua', 'Puerto Rico', 'South Africa']

      content_type.fields.create(id: 'image', name: 'Image', type: 'Link', link_type: 'Asset', required: true)
      content_type.fields.create(id: 'country', name: 'Country', type: 'Symbol', required: true,  validations: [validation_for_country])
      content_type.fields.create(id: 'trip_details', name: 'Trip Details', type: 'Symbol')
      content_type.fields.create(id: 'start_date', name: 'Start Date', type: 'Date', required: true)
      content_type.fields.create(id: 'end_date', name: 'End Date', type: 'Date', required: true)
      content_type.fields.create(id: 'trip_description', name: 'Trip Description', type: 'Text')
      content_type.fields.create(id: 'link_url', name: 'Link URL', type: 'Symbol', required: true)

      # Publish
      content_type.save
      content_type.publish

      # Editor interface config
      editor_interface = content_type.editor_interface.default
      controls = editor_interface.controls
      field = controls.detect { |e| e['fieldId'] == 'trip_details' }
      field['settings'] = { 'helpText' => 'City, month, participant type, etc.' }
      editor_interface.update(controls: controls)
      editor_interface.reload

      content_type.save
      content_type.publish
    end
  end
end

1 Ответ

1 голос
/ 16 января 2020

Когда я экспортирую свои типы контента с помощью команды contentful export через Contentful CLI, я вижу нечто похожее на это в моем JSON:

        {
          "fieldId": "endDate",
          "settings": {
            "ampm": "24",
            "format": "timeZ",
            "helpText": "(Optional) The date and time when the event ends..."
          },
          "widgetId": "datePicker"
        },
        {
          "fieldId": "internalTitle",
          "widgetId": "singleLine"
        },
        {
          "fieldId": "startDate",
          "settings": {
            "ampm": "24",
            "format": "timeZ",
            "helpText": "The date/time when this schedule starts..."
          },
          "widgetId": "datePicker"
        }

Теперь я не использую Ruby инструменты миграции, но это заставляет меня поверить, что вы можете установить field['widgetId'] = 'datePicker' и

field['settings'] = {
  'format' => 'dateonly',
  'helpText' => ...
}

Дайте мне знать, если это поможет!

...