Module: ActiveScaffold::Bridges::DatePickerBridge
- Defined in:
- lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb
Defined Under Namespace
Modules: DatepickerColumnHelpers, FormColumnHelpers, SearchColumnHelpers
Constant Summary collapse
- DATE_FORMAT_CONVERSION =
{ '%a' => 'D', '%A' => 'DD', '%b' => 'M', '$B' => 'MM', '%d' => 'dd', '%e' => 'd', '%j' => 'oo', '%m' => 'mm', '%y' => 'y', '%Y' => 'yy', '%H' => 'hh', # options ampm => false '%I' => 'hh', # options ampm => true '%M' => 'mm', '%p' => 'tt', '%S' => 'ss' }
Class Method Summary collapse
- .date_options ⇒ Object
- .datetime_options ⇒ Object
- .localization(js_file) ⇒ Object
- .prepend_js_file(js_file, prepend) ⇒ Object
- .split_datetime_format(datetime_format) ⇒ Object
- .to_datepicker_format(rails_format) ⇒ Object
Class Method Details
.date_options ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb', line 65 def self. = I18n.translate! 'date' = { :closeText => as_(:close), :prevText => as_(:previous), :nextText => as_(:next), :currentText => as_(:today), :monthNames => [:month_names][1, ([:month_names].length - 1)], :monthNamesShort => [:abbr_month_names][1, ([:abbr_month_names].length - 1)], :dayNames => [:day_names], :dayNamesShort => [:abbr_day_names], :dayNamesMin => [:abbr_day_names], :changeYear => true, :changeMonth => true, } begin = I18n.translate! 'active_scaffold.date_picker_options' .merge!() if .is_a? Hash rescue Rails.logger.warn "ActiveScaffold: Missing date picker localization for your locale: #{I18n.locale}" end js_format = self.to_datepicker_format([:formats][:default]) [:dateFormat] = js_format unless js_format.nil? end |
.datetime_options ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb', line 92 def self. rails_time_format = I18n.translate! 'time.formats.default' = I18n.translate! 'datetime.prompts' = {:ampm => false, :hourText => [:hour], :minuteText => [:minute], :secondText => [:second], } begin = I18n.translate! 'active_scaffold.datetime_picker_options' .merge!() if .is_a? Hash rescue Rails.logger.warn "ActiveScaffold: Missing datetime picker localization for your locale: #{I18n.locale}" end date_format, time_format = self.split_datetime_format(self.to_datepicker_format(rails_time_format)) [:dateFormat] = date_format unless date_format.nil? unless time_format.nil? [:timeFormat] = time_format [:ampm] = true if rails_time_format.include?('%I') end end |
.localization(js_file) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb', line 51 def self.localization(js_file) localization = "jQuery(function($){ if (typeof($.datepicker) === 'object') { $.datepicker.regional['#{I18n.locale}'] = #{.to_json}; $.datepicker.setDefaults($.datepicker.regional['#{I18n.locale}']); } if (typeof($.timepicker) === 'object') { $.timepicker.regional['#{I18n.locale}'] = #{.to_json}; $.timepicker.setDefaults($.timepicker.regional['#{I18n.locale}']); } });\n" prepend_js_file(js_file, localization) end |
.prepend_js_file(js_file, prepend) ⇒ Object
117 118 119 120 121 |
# File 'lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb', line 117 def self.prepend_js_file(js_file, prepend) content = File.binread(js_file) content.gsub!(/\A/, prepend) File.open(js_file, 'wb') { |file| file.write(content) } end |
.split_datetime_format(datetime_format) ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb', line 137 def self.split_datetime_format(datetime_format) date_format = datetime_format time_format = nil time_start_indicators = %w{hh mm tt ss} unless datetime_format.nil? start_indicator = time_start_indicators.detect {|indicator| datetime_format.include?(indicator)} unless start_indicator.nil? pos_time_format = datetime_format.index(start_indicator) date_format = datetime_format.to(pos_time_format - 1) time_format = datetime_format.from(pos_time_format) end end return date_format, time_format end |
.to_datepicker_format(rails_format) ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb', line 123 def self.to_datepicker_format(rails_format) return nil if rails_format.nil? if rails_format =~ /%[cUWwxXZz]/ Rails.logger.warn("AS DatePickerBridge: Can t convert rails date format: #{rails_format} to jquery datepicker format. Options %c, %U, %W, %w, %x %X, %z, %Z are not supported by datepicker]") nil else js_format = rails_format.dup DATE_FORMAT_CONVERSION.each do |key, value| js_format.gsub!(Regexp.new("#{key}"), value) end js_format end end |