lib/active_scaffold/bridges/date_picker/ext.rb
class File #:nodoc:
unless File.respond_to?(:binread)
def self.binread(file)
File.open(file, 'rb', &:read)
end
end
end
class ActiveScaffold::Bridges::DatePicker
module DatePickerBridge
def initialize(model_id)
super
return unless ActiveScaffold::Bridges::DatePicker.default_ui
date_picker_fields = _columns.collect { |c| {:name => c.name.to_sym, :type => c.type} if %i[date datetime].include?(c.type) }.compact
# check to see if file column was used on the model
return if date_picker_fields.empty?
# automatically set the forum_ui to a date_picker or datetime_picker
date_picker_fields.each do |field|
col_config = columns[field[:name]]
col_config.form_ui = (field[:type] == :date ? :date_picker : :datetime_picker)
end
end
end
module Finder
def datetime_conversion_for_condition(column)
if column.search_ui == :date_picker
:to_date
else
super
end
end
def datetime_column_date?(column)
if %i[date_picker datetime_picker].include? column.search_ui
column.search_ui == :date_picker
else
super
end
end
def format_for_date(column, value, format_name = column.options[:format])
super column, value, format_name || (:default if column.search_ui == :date_picker)
end
end
module AttributeParams
def datetime_conversion_for_value(column)
if column.form_ui == :date_picker
:to_date
else
super
end
end
end
end
ActiveScaffold::Config::Core.send :prepend, ActiveScaffold::Bridges::DatePicker::DatePickerBridge
ActionView::Base.class_eval do
alias_method :active_scaffold_search_date_picker, :active_scaffold_search_datetime
alias_method :active_scaffold_search_datetime_picker, :active_scaffold_search_datetime
alias_method :active_scaffold_human_condition_date_picker, :active_scaffold_human_condition_datetime
alias_method :active_scaffold_human_condition_datetime_picker, :active_scaffold_human_condition_datetime
include ActiveScaffold::Bridges::DatePicker::Helper::SearchColumnHelpers
alias_method :active_scaffold_search_datetime_picker_field, :active_scaffold_search_date_picker_field
include ActiveScaffold::Bridges::DatePicker::Helper::FormColumnHelpers
alias_method :active_scaffold_input_datetime_picker, :active_scaffold_input_date_picker
include ActiveScaffold::Bridges::DatePicker::Helper::DatepickerColumnHelpers
end
ActiveScaffold::Finder::ClassMethods.module_eval do
prepend ActiveScaffold::Bridges::DatePicker::Finder
alias_method :condition_for_date_picker_type, :condition_for_datetime
alias_method :condition_for_datetime_picker_type, :condition_for_datetime
end
ActiveScaffold::AttributeParams.module_eval do
prepend ActiveScaffold::Bridges::DatePicker::AttributeParams
alias_method :column_value_for_date_picker_type, :column_value_for_datetime_type
alias_method :column_value_for_datetime_picker_type, :column_value_for_datetime_type
end