OSDN Git Service

fix foreign_filter list includes
[pettanr/pettanr.git] / lib / peta / element.rb
1 module Peta
2   class Element < ElementNestableContent
3     self.abstract_class = true
4     
5     # Dynamic ClassMethods
6     
7     def self.load_manifest
8       super
9       # Class Methods
10       pm = Manifest.manifest.models[self.my_peta.parent_model_name].classify
11       define_singleton_method("parent_model") do 
12         pm
13       end
14       # Instance Methods
15     end
16     
17     def self.element?
18       true
19     end
20     
21     def self.root_model
22       if self.parent_model
23         self.parent_model.root_model
24       else
25         self
26       end
27     end
28     
29     def self.list_opt_for_panel
30       {}
31     end
32     
33     def self.show_opt_for_panel
34       {}
35     end
36     
37     def self.json_opt_for_panel
38       {}
39     end
40     
41     def self.panelize elements_attributes
42       elements_attributes = [elements_attributes] unless elements_attributes.is_a?(Array)
43       hash = {}
44       index = 0
45       elements_attributes.each do |element_attributes|
46         hash[self.to_s.tableize + '_attributes'] ||= {}
47         n = if element_attributes['id']
48           element_attributes['id'].to_s
49         else
50           index += 1
51           'new' + index.to_s 
52         end
53         hash[self.to_s.tableize + '_attributes'][n] = element_attributes
54       end
55       hash
56     end
57     
58     def has_picture?
59       false
60     end
61     
62     def has_part?
63       false
64     end
65     
66     def parts
67       @parts ||= []
68     end
69     
70     def extend_column
71       nil
72     end
73     
74     def extend_element_name
75       self.extend_column ? self.attributes[extend_column] : self.element_name
76     end
77     
78     def scenario_template with_engine = false
79       self.path_name(with_engine) + '/scenario'
80     end
81     
82     def element_face_template with_engine = false
83       self.path_name(with_engine) + '/element_face'
84     end
85     
86     def tag_attributes column = nil, opt = {}
87       r = super
88       r.merge({'data-parent_dom_id' => self.parent.dom_item_id}) if self.editize?
89       r
90     end
91     
92     def merge_opacity s, opacity
93       s.merge({
94         'opacity' => opacity.to_f/100, 
95         'filter' => "alpha(opacity=#{opacity})"
96       })
97     end
98     
99     def copy_attributes opt = {}
100       r = self.attributes
101       r.delete 'id'
102     r.delete 'panel_id'
103       r.delete 't' unless opt[:all]
104       r.delete 'z' unless opt[:all]
105       r.delete 'created_at'
106       r.delete 'updated_at'
107       r
108     end
109     
110   end
111 end
112