Sha256: e0409cf0cd888ae5ef82d1bb75c7a92b386ef913e84d10df3763201b0d07b474

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

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

    include Locomotive::SimpleForm::Inputs::FasterTranslate

    def input(wrapper_options)
      input_html_options[:class] << 'form-control'
      toolbar_html + @builder.text_area(attribute_name, input_html_options)
    end

    def toolbar_html
      template.render(
        partial:  'locomotive/shared/rte/toolbar',
        locals:   {
          wysihtml5_prefix: wysihtml5_prefix,
          link_popover:     link_popover,
          image_popover:    image_popover,
        })
    end

    def wysihtml5_prefix
      _object_name = @builder.template.send(:sanitize_to_id, object_name)
      "#{_object_name}_#{attribute_name}"
    end

    def image_popover
      remove_form(template.render(
        partial:  'locomotive/shared/rte/image_popover',
        locals:   { image_form: ImageForm.new }
      )).html_safe
    end

    def link_popover
      remove_form(template.render(
        partial:  'locomotive/shared/rte/link_popover',
        locals:   { link_form: LinkForm.new }
      )).html_safe
    end

    def remove_form(template)
      template.gsub(/<form([^<]*)>/, '')
        .gsub(/<input name="(utf8|authenticity_token)"([^<]*)>/, '')
        .gsub('</form>', '')
    end

    class LinkForm < Struct.new(:url, :target, :title)
      include ActiveModel::Model
    end

    class ImageForm < Struct.new(:src, :title, :alignment)
      include ActiveModel::Model
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
locomotivecms-3.0.0.rc2 app/inputs/locomotive/rte_input.rb
locomotivecms-3.0.0.rc1 app/inputs/locomotive/rte_input.rb
locomotivecms-3.0.0.pre.beta.1 app/inputs/locomotive/rte_input.rb