OSDN Git Service

ccdbbf86dbec94d71cc77d3589918df7e0fbe57f
[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     
8     def self.list_opt_for_panel
9       {}
10     end
11     
12     def self.show_opt_for_panel
13       {}
14     end
15     
16     def self.json_opt_for_panel
17       {}
18     end
19     
20     def self.panelize elements_attributes
21       elements_attributes = [elements_attributes] unless elements_attributes.is_a?(Array)
22       hash = {}
23       index = 0
24       elements_attributes.each do |element_attributes|
25         hash[self.to_s.tableize + '_attributes'] ||= {}
26         n = if element_attributes['id']
27           element_attributes['id'].to_s
28         else
29           index += 1
30           'new' + index.to_s 
31         end
32         hash[self.to_s.tableize + '_attributes'][n] = element_attributes
33       end
34       hash
35     end
36     
37     def has_picture?
38       false
39     end
40     
41     def has_part?
42       false
43     end
44     
45     def parts
46       @parts ||= []
47     end
48     
49     def extend_column
50       nil
51     end
52     
53     def extend_element_name
54       self.extend_column ? self.attributes[extend_column] : self.element_name
55     end
56     
57     def scenario_template with_engine = false
58       self.path_name(with_engine) + '/scenario'
59     end
60     
61     def element_face_template with_engine = false
62       self.path_name(with_engine) + '/element_face'
63     end
64     
65     def tag_attributes column = nil, opt = {}
66       r = super
67       r.merge({'data-parent_dom_id' => self.parent.dom_item_id}) if self.editize?
68       r
69     end
70     
71     def merge_opacity s, opacity
72       s.merge({
73         'opacity' => opacity.to_f/100, 
74         'filter' => "alpha(opacity=#{opacity})"
75       })
76     end
77     
78     def copy_attributes opt = {}
79       r = self.attributes
80       r.delete 'id'
81     r.delete 'panel_id'
82       r.delete 't' unless opt[:all]
83       r.delete 'z' unless opt[:all]
84       r.delete 'created_at'
85       r.delete 'updated_at'
86       r
87     end
88     
89   end
90 end
91