OSDN Git Service

work
[pettanr/pettanr.git] / app / views / panels / _element_form.html.erb
1 <% element_name = elm.element_name %>
2 <% extend_element_name = elm.extend_element_name %>
3 <% form_configurations = Pettanr::Application::manifest.profiler_managers[extend_element_name] %>
4 <% base_attributes = if form_configurations['base'] %>
5   <% @configurations['forms'][form_configurations['base']]['attributes'] %>
6 <% else %>
7   <% {} %>
8 <% end %>
9 <% extend_attributes = form_configurations['attributes'] || {} %>
10 <% form_attributes = base_attributes.merge(extend_attributes) %>
11 <% form_model_name = form_configurations['model'] || form_configurations['base'] || element_name %>
12 <%= form_for(elm, :html => elm.tag_attributes('form', 'data-form-name' => extend_element_name)) do |f| %>
13   <% form_configurations['fields'].each do |field_name| %>
14     <% field_configurations = form_attributes[field_name] || {} %>
15     <% field_model_name = field_configurations['model'] || form_model_name %>
16     <% model_configurations =  @configurations['models'][field_model_name] %>
17     <% column = field_configurations['column'] %>
18     <% model_configurations['attributes'] %>
19     <% primary_key = model_configurations['attributes'][column]['primary_key'] %>
20     
21     <% next if primary_key and elm.new_record? %>
22     
23     <% options = field_configurations['options'] || {} %>
24     <% opt = {} %>
25     <% opt.merge!('data-model' => field_model_name) %>
26     <% field_element = if field_configurations['part'] %>
27       <% elm.__send__ field_configurations['part'] %>
28     <% else %>
29       <% elm %>
30     <% end %>
31     <% name = if field_configurations['part'] %>
32       <% form_model_name + '[' + field_model_name + '_attributes][' + column + ']' %>
33     <% else %>
34       <% form_model_name + '[' + column + ']' %>
35     <% end %>
36     <div class="field">
37       <% label = field_configurations['label'] || {}  %>
38       <% if label['type'] and label['type'] == 'hidden' %>
39       <% else %>
40         <%= t 'activerecord.attributes.' + field_model_name + '.' +  column %>
41       <% end %>
42       <% if label['row_break'] %>
43         <br>
44       <% end %>
45       <% case field_configurations['type'] %>
46       <% when 'text' %>
47         <% opt['size'] = field_configurations['options']['size'] if field_configurations['options']['size'] %>
48         <%= text_field_tag name, field_element.attributes[column], field_element.field_tag_attributes(column, no_attr, opt) %>
49       <% when 'text_area' %>
50         <% opt['size'] = field_configurations['options']['size'] if field_configurations['options']['size'] %>
51         <%= text_area_tag name, field_element.attributes[column], field_element.field_tag_attributes(column, no_attr, opt) %>
52       <% when 'number' %>
53         <% opt['size'] = field_configurations['options']['size'] if field_configurations['options']['size'] %>
54         <%= number_field_tag name, field_element.attributes[column], field_element.field_tag_attributes(column, no_attr, opt) %>
55       <% when 'hidden' %>
56         <%= hidden_field_tag name, field_element.attributes[column], field_element.field_tag_attributes(column, no_attr, opt) %>
57       <% when 'select' %>
58         <% items = case options['source'] %>
59         <% when 'model' %>
60           <% select_model = options['model'] %>
61           <% select_class = @configurations['models'][select_model]['class_name'] %>
62           <% l = select_class.constantize.__send__ options['method'] %>
63           <% l.map {|i| [i.attributes[options['caption']], i.id] } %>
64         <% when 'magic_number' %>
65           <% t_select_items(MagicNumber[options['key']]) %>
66         <% else %>
67         <% end %>
68         <%= select_tag name, options_for_select(items, field_element.attributes[column]), field_element.field_tag_attributes(column, no_attr, opt) %>
69       <% end %>
70       <% if field_configurations['helpers'] %>
71         <span id="<%= elm.tag_id 'helpers' -%>">
72           <% field_configurations['helpers'].each do |n, helper| %>
73             <% if helper['wrapper'] %>
74               <div class="<%= helper['wrapper'] -%>">
75             <% end %>
76             <%= render helper['path'], :elm => field_element, :no_attr => no_attr, :opt => helper['options'] %>
77             <% if helper['wrapper'] %>
78               </div>
79             <% end %>
80           <% end %>
81         </span>
82       <% end %>
83     </div>
84     <% if options['row_break'] %>
85       <div class="row_break">
86       </div>
87     <% end %>
88   <% end %>
89 <% end %>