Sha256: 614a56a27fc54bfbb27c8eeb0647d181edfdd30e1153c41aebb8b768a051f903

Contents?: true

Size: 1.09 KB

Versions: 5

Compression:

Stored size: 1.09 KB

Contents

module EditableComponents
  class Item < ApplicationRecord
    # field :data, type: String

    # embedded_in :ec_blocks

    belongs_to :block

    def attr_id
      "#{self.class_name}-#{self.id}"
    end

    def class_name
      self.class.to_s.split('::').last
    end

    def editable
      Engine.edit_mode ? " data-ec-item=\"#{self.id}\" data-ec-input=\"#{self.opt_input}\" data-ec-type=\"#{self.class_name}\"".html_safe : ''
    end

    def opt_input
      if self.block.options[self.name] && self.block.options[self.name]['input']
        self.block.options[self.name]['input'].to_s
      elsif config[:input]
        config[:input].to_s
      else
        ''
      end
    end

    def to_s
      self.data
    end

    def update_data( value )
      self.data = value
      self.save
    end

    def self.item_types
      @@item_types ||= EditableComponents.config[:items].keys.map &:to_s
    end

  protected

    def config
      @config ||= EditableComponents.config[:items][self.class::type_name.to_sym] ? EditableComponents.config[:items][self.class::type_name.to_sym] : {}
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
editable_components-0.1.6 app/models/editable_components/item.rb
editable_components-0.1.4 app/models/editable_components/item.rb
editable_components-0.1.3 app/models/editable_components/item.rb
editable_components-0.1.2 app/models/editable_components/item.rb
editable_components-0.1.0 app/models/editable_components/item.rb