petities/petitions.eu

View on GitHub
app/views/petitions/_form.html.slim

Summary

Maintainability
Test Coverage
= form_for @petition, html: { multipart: true } do |f|
  div.errors-container style='display: none;'
    div.errors-empty: p= t('errors.messages.empty')
    div.errors-too-long: p= t('errors.messages.too_long')

  - if @exclude_list.size > 0

    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title.has_error_help
          = t('start.form.cannot_edit_live_petition')
      div.start-petition-form-cell.label.has_error_help
        p= t('start.form.cannot_edit_live_petition')

  div.start-petition-form-row
    div.start-petition-form-cell.input
      div.start-petition-form-cell-title
        = t('start.form.name.label')
        div.start-petition-form-cell-charcount.charCount id="charCount_petition_name"
          | 0 / 80
      = f.text_field(:name, class: 'start-petition-form-cell-input validation',
        disabled: @exclude_list.include?(:name),
        'data-chars'=> 80, 'placeholder'=> t('start.form.name.placeholder', default: "clear slogan!"))
      div.errors
    div.start-petition-form-cell.label
      p= t('start.form.name.description')

  div.start-petition-form-row
    div.start-petition-form-cell.input
      div.start-petition-form-cell-title
        = t('start.form.short_description.label')
        div.start-petition-form-cell-charcount.charCount id="charCount_petition_description"
          | 0 / 300
      = f.text_area(:description, class: 'start-petition-form-cell-input validation', style: "height:100px;",
        disabled: @exclude_list.include?(:description),
        'data-chars'=> 300, 'placeholder'=> t('start.form.short_description.placeholder', default: "sell this petition!"))
      div.errors
    div.start-petition-form-cell.label
      p= t('start.form.short_description.description')

  div.start-petition-form-row
    div.start-petition-form-cell.input
      div.start-petition-form-cell-title= t('start.form.addressed.label')
      = f.select :organisation_kind, options_for_select(@publicbodies_sort_order, selected: @petition.organisation_kind), include_blank: t("petition.organisations.blank", default:"Select organisation type")

      - @organisation_type_prepared.each do |type, collection|
        - is_hidden = @petition.organisation_kind != type
        = f.select :organisation_id, options_for_select(collection, selected: @petition.organisation_id), {}, {class: "organisation_select #{type}", style: is_hidden ? 'display:none' : '', disabled: is_hidden}

    div.start-petition-form-cell.label
      p= t('start.form.addressed.description')

  div.start-petition-form-row
    div.start-petition-form-cell.input
      div.start-petition-form-cell-title
        = t('start.form.we.label')
        div.start-petition-form-cell-charcount.charCount id="charCount_petition_initiators"
          | 0 / 100
      = f.text_area(:initiators, class: 'start-petition-form-cell-input validation',
        :disabled => @exclude_list.include?(:initiators),
        style: "height:100px;", 'data' => {'chars'=> 100},
        'placeholder'=> t('start.form.we.placeholder', default: "who are you!?"))
      div.errors
    div.start-petition-form-cell.label
      p= t('start.form.we.description')

  div.start-petition-form-row
    div.start-petition-form-cell.input
      div.start-petition-form-cell-title
        = t('start.form.observe.label')
        div.start-petition-form-cell-charcount.charCount id="charCount_petition_statement"
          | 0 / 450
      = f.text_area(:statement, class: 'start-petition-form-cell-input validation', style: "height:100px;",
        :disabled => @exclude_list.include?(:statement),
        'data-chars' => 450,
        'placeholder'=> t('start.form.observe.placeholder', default: "what are you upset about?"))
      div.errors
    div.start-petition-form-cell.label
      p= t('start.form.observe.description')

  div.start-petition-form-row
    div.start-petition-form-cell.input
      div.start-petition-form-cell-title
        = t('start.form.request.label')
        div.start-petition-form-cell-charcount.charCount id="charCount_petition_request"
          | 0 / 450
      = f.text_area :request, class: 'start-petition-form-cell-input validation', style: "height:100px;",
        :disabled => @exclude_list.include?(:request),
        'data-chars' => 450, 'placeholder'=> t('start.form.request.placeholder', default: "what should be done about it?")
      div.errors
    div.start-petition-form-cell.label
      p= t('start.form.request.description')

  - f.object.images.build if f.object.images.none?
  = f.fields_for :images do |fi|
    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title= t('start.form.image.label')
        = fi.file_field :upload, class: 'start-petition-form-cell-input'
        - unless fi.object.new_record?
          = image_tag fi.object.upload.url(:listing), class: 'start-petition-form-cell-upload-image'
          = fi.check_box :_destroy
          = fi.label :_destroy
      div.start-petition-form-cell.label
        p= t('start.form.image.description')

  - if(user_signed_in? && current_user.has_role?(:admin, @petition.office))

    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title= t('start.form.petition_type.label')
        = f.select :petition_type_id,
          options_from_collection_for_select(@petition_types, "id", "name", selected: @petition.petition_type_id),
          include_blank: t("start.form.type.blank", default:"select type")
      div.start-petition-form-cell.label
        p= t('start.form.petition_type.description')

    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title= t('start.form.status.label')
        = f.select :status, options_for_select(petition_status_options, selected: @petition.status)
      div.start-petition-form-cell.label
        p= t('start.form.status.description')


    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title= t('start.form.subdomain.label')

        span.error
        - if @petition.errors['subdomain']
          = @petition.errors['subdomain'][0]

        - class_names = 'start-petition-form-cell-input validation'
        - if not @petition.errors['subdomain'].empty?
          - class_names = class_names + ' error'

        = f.text_field :subdomain, class: class_names

      div.start-petition-form-cell.label
        p= t('start.form.subdomain.description')

  - if ['new', 'create'].include?(action_name)

    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title= t('start.form.petitioner.email.label')
        = f.text_field :petitioner_email, class: 'start-petition-form-cell-input'
      div.start-petition-form-cell.label.empty
        p= t('start.form.petitioner.email.description')

    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title= t('start.form.petitioner.name.label')
        = f.text_field :petitioner_name, class: 'start-petition-form-cell-input'
      div.start-petition-form-cell.label.empty
        p= t('start.form.petitioner.name.description')

    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title= t('start.form.petitioner.organisation.label')
        = f.text_field(:petitioner_organisation,
          :disabled => @exclude_list.include?(:petitioner_organisation),
          class: 'start-petition-form-cell-input')

      div.start-petition-form-cell.label
        p= t('start.form.petitioner.organisation.description')

  - if ['new', 'create'].include?(action_name)
    div.start-petition-form-row
      div.start-petition-form-cell.input
        = f.submit t('start.form.submit'), class: 'petition-form-button'
      div.start-petition-form-cell.label.empty
        |  

  - elsif action_name == 'edit' || action_name == 'update'
    div.start-petition-form-row
      div.start-petition-form-cell.input
        div.start-petition-form-cell-title
        = f.submit t('start.form.update'), class: 'petition-form-button whitespace'

      div.start-petition-form-cell.label.empty
        p= t('start.form.petitioner.update.update_description')

  div.start-petition-form-row.whitespace
    div.start-petition-form-cell.input
      div.errors-note.whitespace p=t('errors.messages.incorrect')