OSDN Git Service

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