OSDN Git Service

fix form
[pettanr/pettanr.git] / lib / peta / element_part.rb
1 module Peta
2   module ElementPart
3     def self.included(base)
4       base.extend(ClassMethods)
5       base.__send__ :include, InstanceMethods
6     end
7     
8     module ClassMethods
9       def colum_structures
10         raise
11       end
12       
13       def list_opt_for_panel
14         {}
15       end
16       
17       def show_opt_for_panel
18         {}
19       end
20       
21       def json_opt_for_panel
22         {}
23       end
24       
25       def path_name with_engine = false
26         self.to_s.tableize
27       end
28       
29     end
30     
31     module InstanceMethods
32       private
33       
34       public
35       
36       def has_picture?
37         false
38       end
39       
40       def has_helper? column_name
41         self.class.colum_structures[column_name] and self.class.colum_structures[column_name][:helper]
42       end
43       
44       def new_parent
45         @new_parent
46       end
47       
48       def new_parent= v
49         @new_parent = v
50       end
51       
52       def get_parent
53         raise
54       end
55       
56       def get_panel_id
57         if self.get_parent == nil or self.get_parent.panel == nil or self.get_parent.panel.new_record?
58           0
59         else
60           self.get_parent.panel.id
61         end
62       end
63       
64       def tag_id c = nil
65         'panel' + self.tag_panel_id + self.tag_element_type + self.tag_element_id + self.tag_element_part_type + self.tag_element_part_id + c.to_s
66       end
67       
68       def field_tag_id f
69         self.tag_id + f.to_s
70       end
71       
72       def tag_panel_id
73         self.get_panel_id.to_s
74       end
75       
76       def tag_element_id
77         r = if self.get_parent == nil or self.get_parent.new_record?
78           0
79         else
80           self.get_parent.id
81         end
82         r.to_s
83       end
84       
85       def tag_element_type
86         self.get_parent.tag_element_type
87       end
88       
89       def tag_element_part_id
90         self.new_record? ? '0' : self.id.to_s
91       end
92       
93       def tag_element_part_type
94         'speech'
95       end
96       
97       def tag_new_index
98         if self.get_parent == nil
99           nil
100         else
101           self.get_parent.tag_new_index
102         end
103       end
104       
105       def form_helper_template(colum_name)
106         self.class.colum_structures[colum_name][:helper]
107       end
108       
109       def tag_attributes column = nil, opt = {}
110         {
111           :id => self.field_tag_id(column), :panel_id => self.tag_panel_id, 
112           :element_id => self.tag_element_id, :element_type => self.tag_element_type,
113           :element_part_id => self.tag_element_part_id, :element_part_type => self.tag_element_part_type
114         }.merge(opt)
115       end
116       
117       def field_tag_attributes column, no_attr, opt = {}
118         self.tag_attributes(column).merge(
119           {:column => column, :new_index => self.tag_new_index, :no_attr => no_attr}
120         ).merge(opt)
121       end
122       
123       #render element by body
124       def any_tag_attributes name = nil, opt = {}
125         r = self.tag_attributes(name)
126         r.merge!(
127           {:new_index => self.tag_new_index}
128         ) if self.new_index
129         r.merge(opt)
130       end
131       
132       def select_tag_attributes(selected, column, no_attr)
133         [
134           :last, :first, 
135           {:html => {:selected => selected}}, 
136           self.field_tag_attributes(column, no_attr)
137         ]
138       end
139       
140       def tag_attr column = nil, opt = {}
141         self.tag_attributes(column, opt).to_attr
142       end
143       
144       def field_tag_attr column, no_attr, opt = {}
145         self.field_tag_attributes(column, no_attr, opt).to_attr
146       end
147       
148       def any_tag_attr name = nil, opt = {}
149         self.any_tag_attributes(name, opt).to_attr
150       end
151       
152     end
153   end
154 end
155