X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=lib%2Fpeta%2Felement.rb;h=91092a2b3757b5830e9386d7a9622eb92fb6076b;hp=8346bffa5acefa8358f1124fa04aeb817a029906;hb=ac6610b290db53f3914b593963fef972eb4cfa82;hpb=00a0dcbd6a9a34da9382edb3563aba36fcf7920b diff --git a/lib/peta/element.rb b/lib/peta/element.rb index 8346bffa..91092a2b 100644 --- a/lib/peta/element.rb +++ b/lib/peta/element.rb @@ -1,193 +1,71 @@ module Peta - module Element - def self.included(base) - base.extend(ClassMethods) - base.__send__ :include, InstanceMethods + class Element < Content + self.abstract_class = true + + # Dynamic ClassMethods + + + def self.list_opt_for_panel + {} + end + + def self.show_opt_for_panel + {} + end + + def self.json_opt_for_panel + {} + end + + def has_picture? + false + end + + def has_part? + false + end + + def parts + @parts ||= [] end - module ClassMethods - def colum_structures - raise - end - - def list_opt_for_panel - {} - end - - def show_opt_for_panel - {} - end - - def json_opt_for_panel - {} - end - - def path_name with_engine = false - self.to_s.tableize - end - + def extend_column + nil end - module InstanceMethods - private - - public - - def has_picture? - false - end - - def has_part? - false - end - - def parts - @parts ||= [] - end - - def has_helper? column_name - self.class.colum_structures[column_name] and self.class.colum_structures[column_name][:helper] - end - - def element_name - self.class.to_s.underscore - end - - def extend_column - nil - end - - def extend_element_name - self.extend_column ? self.attributes[extend_column] : self.element_name - end - - def find_configurations hash, key - if hash[key].is_a? String - self.find_configurations hash, hash[key] - else - return hash[key] - end - end - - def element_index - @element_index ||= self.t - end - - def parent - @parent ||= self.panel - end - - def parent= content - @parent = content - end - - def new_index - @new_index - end - - def new_index= v - @new_index = v - end - - def new_panel - @new_panel - end - - def new_panel= v - @new_panel = v - end - - def get_panel - self.panel || @new_panel - end - - def tag_id c = nil - 'panel' + self.tag_panel_id + self.tag_element_type + self.tag_element_id + c.to_s - end - - def field_tag_id f - self.tag_id + f.to_s - end - - def tag_panel_id - self.get_panel.new_record? ? '0' : self.get_panel.id.to_s - end - - def tag_element_id - self.new_record? ? '0' : self.id.to_s - end - - def tag_element_type - raise - end - - def tag_new_index - self.new_index.to_s - end - - def path_name with_engine = false - self.class.path_name(with_engine) - end - - def form_template with_engine = false - self.path_name(with_engine) + '/form' - end - - def scenario_template with_engine = false - self.path_name(with_engine) + '/scenario' - end - - def element_face_template with_engine = false - self.path_name(with_engine) + '/element_face' - end - - def form_helper_template(colum_name) - self.class.colum_structures[colum_name][:helper] - end - - def tag_attributes column = nil, opt = {} - { - :id => self.field_tag_id(column), :panel_id => self.tag_panel_id, - :element_id => self.tag_element_id, :element_type => self.tag_element_type - }.merge(opt) - end - - def field_tag_attributes column, no_attr, opt = {} - self.tag_attributes(column).merge( - {:column => column, :new_index => self.tag_new_index, :no_attr => no_attr} - ).merge(opt) - end - - #render element by body - def any_tag_attributes name = nil, opt = {} - r = self.tag_attributes(name) - r.merge!( - {:new_index => self.tag_new_index} - ) if self.new_index - r.merge(opt) - end - - def select_tag_attributes(selected, column, no_attr) - [ - :last, :first, - {:html => {:selected => selected}}, - self.field_tag_attributes(column, no_attr) - ] - end - - def tag_attr column = nil, opt = {} - self.tag_attributes(column, opt).to_attr - end - - def field_tag_attr column, no_attr, opt = {} - self.field_tag_attributes(column, no_attr, opt).to_attr - end - - def any_tag_attr name = nil, opt = {} - self.any_tag_attributes(name, opt).to_attr - end - + def extend_element_name + self.extend_column ? self.attributes[extend_column] : self.element_name end + + def parent + @parent + end + + def parent= content + @parent = content + end + + def scenario_template with_engine = false + self.path_name(with_engine) + '/scenario' + end + + def element_face_template with_engine = false + self.path_name(with_engine) + '/element_face' + end + + def tag_attributes column = nil, opt = {} + r = super + r.merge({'data-parent_dom_id' => self.parent.dom_item_id}) if self.editor + r + end + + def merge_opacity s, opacity + s.merge({ + 'opacity' => opacity.to_f/100, + 'filter' => "alpha(opacity=#{opacity})" + }) + end + end end