class Block < ActiveRecord::Base
# to be able to generate HTML
include ActionView::Helpers::UrlHelper
include ActionView::Helpers::TagHelper
# Block-specific stuff
include BlockHelper
acts_as_list :scope => :box
belongs_to :box
acts_as_having_settings
# returns the description of the block, used when the user sees a list of
# blocks to choose one to include in the design.
#
# Must be redefined in subclasses to match the description of each block
# type.
def self.description
'(dummy)'
end
# Returns the content to be used for this block.
#
# This method can return several types of objects:
#
# * String: if the string starts with http:// or https://, then it is assumed to be address of an IFRAME. Otherwise it's is used as regular HTML.
# * Hash: the hash is used to build an URL that is used as the address for a IFRAME.
# * Proc: the Proc is evaluated in the scope of BoxesHelper. The
# block can then use render, link_to, etc.
#
# The method can also return nil, which means "no content".
#
# See BoxesHelper#extract_block_content for implementation details.
def content
"This is block number %d" % self.id
end
# A footer to be appended to the end of the block. Returns nil.
#
# Override in your subclasses. You can return the same types supported by
# #content.
def footer
nil
end
# must return a Hash with URL options poiting to the action that edits
# properties of the block
def editor
nil
end
# must always return false, except on MainBlock clas.
def main?
false
end
def owner
box ? box.owner : nil
end
def css_class_name
self.class.name.underscore.gsub('_', '-')
end
end