| 
									
										
										
										
											2013-01-08 21:18:16 +00:00
										 |  |  | module OrbitFormHelper | 
					
						
							|  |  |  |   def self.included(base) | 
					
						
							|  |  |  |     ActionView::Helpers::FormBuilder.send(:include, Orbit::FormBuilder) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def datetime_picker(object_name, method, options = {}) | 
					
						
							|  |  |  |     options[:icon_time] ||= 'icons-clock' | 
					
						
							|  |  |  |     options[:icon_date] ||= 'icons-calendar' | 
					
						
							| 
									
										
										
										
											2013-01-09 09:08:09 +00:00
										 |  |  |     options[:icon_clear] ||= 'icons-cross-3' | 
					
						
							| 
									
										
										
										
											2013-01-08 21:18:16 +00:00
										 |  |  |     options[:input_class] ||= 'input-large' | 
					
						
							|  |  |  |     options[:value] ||= options[:object][method] if options[:object] && options[:object][method] | 
					
						
							|  |  |  |     case options[:picker_type] | 
					
						
							|  |  |  |     when 'date' | 
					
						
							|  |  |  |       content_tag :div, :id => options[:id], :class => options[:class] do | 
					
						
							|  |  |  |         date_picker(object_name, method, options) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     when 'time' | 
					
						
							|  |  |  |       content_tag :div, :id => options[:id], :class => options[:class] do | 
					
						
							|  |  |  |         time_picker(object_name, method, options) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     when 'separated' | 
					
						
							|  |  |  |       options[:label] ||= I18n.t('datetime_picker.separated.label') | 
					
						
							|  |  |  |       content_tag :div, :id => options[:id], :class => "separated_picker #{options[:class]}" do | 
					
						
							|  |  |  |         concat label_tag options[:label] unless options[:no_label] | 
					
						
							|  |  |  |         concat hidden_field(object_name, method) | 
					
						
							|  |  |  |         concat separated_picker(object_name, method, options) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       content_tag :div, :id => options[:id], :class => options[:class] do | 
					
						
							|  |  |  |         default_picker(object_name, method, options) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def date_picker(object_name, method, options) | 
					
						
							|  |  |  |     custom = {} | 
					
						
							|  |  |  |     custom[:format] = 'yyyy-MM-dd' | 
					
						
							|  |  |  |     custom[:value] = display_date(options[:value]) if options[:value] | 
					
						
							|  |  |  |     custom[:picker_class] = 'date_picker' | 
					
						
							|  |  |  |     custom[:label] = options[:label] || I18n.t('datetime_picker.date.label') | 
					
						
							|  |  |  |     custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.date.placeholder') | 
					
						
							|  |  |  |     picker(object_name, method, options.merge(custom)) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def default_picker(object_name, method, options) | 
					
						
							|  |  |  |     custom = {} | 
					
						
							|  |  |  |     custom[:format] = 'yyyy-MM-dd hh:mm' | 
					
						
							|  |  |  |     custom[:value] = display_date_time(options[:value]) if options[:value] | 
					
						
							|  |  |  |     custom[:picker_class] = 'default_picker' | 
					
						
							|  |  |  |     custom[:label] = options[:label] || I18n.t('datetime_picker.default.label') | 
					
						
							|  |  |  |     custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.default.placeholder') | 
					
						
							|  |  |  |     picker(object_name, method, options.merge(custom)) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def time_picker(object_name, method, options) | 
					
						
							|  |  |  |     custom = {} | 
					
						
							|  |  |  |     custom[:format] = 'hh:mm' | 
					
						
							|  |  |  |     custom[:value] = display_time(options[:value]) if options[:value] | 
					
						
							|  |  |  |     custom[:picker_class] = 'time_picker' | 
					
						
							|  |  |  |     custom[:label] = options[:label] || I18n.t('datetime_picker.time.label') | 
					
						
							|  |  |  |     custom[:placeholder] = options[:placeholder] || I18n.t('datetime_picker.time.placeholder') | 
					
						
							|  |  |  |     picker(object_name, method, options.merge(custom)) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def separated_picker(object_name, method, options) | 
					
						
							|  |  |  |     custom = {} | 
					
						
							|  |  |  |     custom[:no_label] = true | 
					
						
							| 
									
										
										
										
											2013-01-09 10:00:38 +00:00
										 |  |  |     custom[:separated] = true | 
					
						
							| 
									
										
										
										
											2013-01-08 21:18:16 +00:00
										 |  |  |     date_picker(nil, nil, options.merge(custom)) + time_picker(nil, nil, options.merge(custom)) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def single_picker(object_name, method, options) | 
					
						
							|  |  |  |     content_tag :div, :id => options[:id], :class => options[:class] do | 
					
						
							|  |  |  |       picker(object_name, method, options) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def double_picker(object_name, method, options) | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def picker(object_name, method, options) | 
					
						
							| 
									
										
										
										
											2013-01-09 10:00:38 +00:00
										 |  |  |     content_tag :div, :class => "#{options[:picker_class]} input-append", :style => "#{(options[:picker_class].eql?('time_picker') && options[:value].blank? && options[:separated]) ? 'pointer-events:none' : nil}" do | 
					
						
							| 
									
										
										
										
											2013-01-08 21:18:16 +00:00
										 |  |  |       concat label_tag options[:label] unless options[:no_label] | 
					
						
							|  |  |  |       concat text_field object_name, method, :placeholder => options[:placeholder], :class => options[:input_class], 'data-format' => options[:format], :value => options[:value] | 
					
						
							| 
									
										
										
										
											2013-01-09 09:08:09 +00:00
										 |  |  |       concat (content_tag :span, :class => 'add-on clearDate' do | 
					
						
							|  |  |  |                 content_tag :i, nil, :class => options[:icon_clear] | 
					
						
							|  |  |  |               end) | 
					
						
							|  |  |  |       concat (content_tag :span, :class => 'add-on iconbtn' do | 
					
						
							| 
									
										
										
										
											2013-01-08 21:18:16 +00:00
										 |  |  |                 content_tag :i, nil, 'data-time-icon' => options[:icon_time], 'data-date-icon' => options[:icon_date] | 
					
						
							|  |  |  |               end) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Orbit::FormBuilder | 
					
						
							|  |  |  |   # ActionPack's metaprogramming would have done this for us, if FormHelper#labeled_input  | 
					
						
							|  |  |  |   # had been defined  at load.   Instead we define it ourselves here. | 
					
						
							|  |  |  |   def datetime_picker(method, options = {}) | 
					
						
							|  |  |  |     @template.datetime_picker(@object_name, method, objectify_options(options)) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |