Sha256: 583759355f405b323c8ca38ba8881500d96394e9cca2a08a1980b1609979e5ef

Contents?: true

Size: 1.07 KB

Versions: 4

Compression:

Stored size: 1.07 KB

Contents

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

    # embedded_in :cc_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
      ContentsCore.editing ? " 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 ||= ContentsCore.config[:items].keys.map &:to_s
    end

  protected

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
contents_core-0.1.4 app/models/contents_core/item.rb
contents_core-0.1.2 app/models/contents_core/item.rb
contents_core-0.1.1 app/models/contents_core/item.rb
contents_core-0.1.0 app/models/contents_core/item.rb