Sha256: f1d5b00508cea26de27a02ed0d0a5195480bce83bc1c94bb7ae2e596ec52ba1d

Contents?: true

Size: 1.44 KB

Versions: 32

Compression:

Stored size: 1.44 KB

Contents

module Locomotive
  class DocumentPickerInput < ::SimpleForm::Inputs::Base

    include Locomotive::SimpleForm::BootstrapHelpers
    include Locomotive::SimpleForm::Inputs::FasterTranslate

    def input(wrapper_options)
      data = extract_data

      row_wrapping do
        (col_wrapping('field col-xs-9', 11) do
          select_field(data)
        end) + (col_wrapping('button col-xs-3 text-right', 1) do
          link_to_edit
        end)
      end
    end

    def select_field(data)
      @builder.collection_select(
        :"#{attribute_name}_id", [selected_document].compact,
        :_id, data[:label_method],
        { include_blank: true }, { class: 'form-control', data: data }
      )
    end

    def link_to_edit
      label     = options[:edit][:label]
      css_class = 'btn btn-primary btn-sm edit'

      if url = options[:edit][:url]
        template.content_tag(:a, label, href: url, class: css_class)
      else
        ''
      end
    end

    def extract_data
      options[:picker].tap do |data|
        data[:per_page] ||= Locomotive.config.ui[:per_page]
        data[:label]    = document_label(data[:label_method])
      end
    end

    def document_label(label_method)
      selected_document.try(label_method.to_sym)
    end

    def selected_document
      return @selected_document if @selected_document_done

      @selected_document_done = true
      @selected_document      = self.object.send(attribute_name.to_sym)
    end

  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
locomotivecms-4.2.0.alpha2 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.2.0.alpha1 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.1.1 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.1.0 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.1.0.rc1 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.0.3 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.0.2 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.0.1 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.0.0 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.0.0.rc0 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.0.0.alpha3 app/inputs/locomotive/document_picker_input.rb
locomotivecms-3.4.1 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.0.0.alpha2 app/inputs/locomotive/document_picker_input.rb
locomotivecms-4.0.0.alpha1 app/inputs/locomotive/document_picker_input.rb
locomotivecms-3.4.0 app/inputs/locomotive/document_picker_input.rb
locomotivecms-3.3.0 app/inputs/locomotive/document_picker_input.rb
locomotivecms-3.3.0.rc3 app/inputs/locomotive/document_picker_input.rb
locomotivecms-3.3.0.rc2 app/inputs/locomotive/document_picker_input.rb
locomotivecms-3.1.2 app/inputs/locomotive/document_picker_input.rb
locomotivecms-3.2.1 app/inputs/locomotive/document_picker_input.rb