Sha256: 95c0e225a6906d3d5370d278ece566c6f9a2ce38b51cc03d3aac8f88caec1ec0

Contents?: true

Size: 1.4 KB

Versions: 14

Compression:

Stored size: 1.4 KB

Contents

class Caboose::PageBlock < ActiveRecord::Base
  self.table_name = "page_blocks"
  
  belongs_to :page
  belongs_to :page_block_type  
  has_many :page_block_field_values
  attr_accessible :id, :page_id, :page_block_type_id, :sort_order
    
  def fields
    return page_block_type.fields
  end
  
  def field_value(name)    
    page_block_field_values.each do |fv|
      if fv.page_block_field.name == name
        if    fv.page_block_field.field_type == 'image' then return fv.image
        elsif fv.page_block_field.field_type == 'file'  then return fv.file
        else return fv.value
        end
      end
    end
    return nil
  end
  
  def field_value_object(name)    
    page_block_field_values.each do |fv|
      #Caboose.log("fv = #{fv}")
      return fv if fv.page_block_field.name == name      
    end
    return nil
  end
  
  def self.create_field_values(block_id)
    block = self.find(block_id)
    block.page_block_type.fields.each do |f| 
      if block.field_value_object(f.name).nil?
        Caboose::PageBlockFieldValue.create(:page_block_id => block.id, :page_block_field_id => f.id, :value => f.default)
      end
    end
  end
  
  def render_from_function(empty_text = nil, editing = false)    
    locals = OpenStruct.new(:block => self, :empty_text => empty_text, :editing => editing)
    erb = ERB.new(page_block_type.render_function)
    return erb.result(locals.instance_eval { binding })
  end

end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
caboose-cms-0.3.129 app/models/caboose/page_block.rb
caboose-cms-0.3.128 app/models/caboose/page_block.rb
caboose-cms-0.3.127 app/models/caboose/page_block.rb
caboose-cms-0.3.110 app/models/caboose/page_block.rb
caboose-cms-0.3.101 app/models/caboose/page_block.rb
caboose-cms-0.3.100 app/models/caboose/page_block.rb
caboose-cms-0.3.99 app/models/caboose/page_block.rb
caboose-cms-0.3.98 app/models/caboose/page_block.rb
caboose-cms-0.3.97 app/models/caboose/page_block.rb
caboose-cms-0.3.96 app/models/caboose/page_block.rb
caboose-cms-0.3.95 app/models/caboose/page_block.rb
caboose-cms-0.3.94 app/models/caboose/page_block.rb
caboose-cms-0.3.93 app/models/caboose/page_block.rb
caboose-cms-0.3.92 app/models/caboose/page_block.rb