Module: AjaxScaffold::Controller

Includes:
Common
Defined in:
lib/base/ajax_scaffold.rb,
lib/ajax_scaffold_plugin.rb

Instance Method Summary collapse

Methods included from Common

#current_page, #current_sort, #current_sort_direction

Instance Method Details

#clear_flashesObject



40
41
42
43
44
45
46
# File 'lib/base/ajax_scaffold.rb', line 40

def clear_flashes
  if request.xhr?
    flash.keys.each do |flash_key|
      flash[flash_key] = nil
    end
  end
end

#default_per_pageObject



48
49
50
# File 'lib/base/ajax_scaffold.rb', line 48

def default_per_page
  25
end

#eval_method_string(object, method_str) ⇒ Object



88
89
90
91
92
93
94
95
96
97
# File 'lib/ajax_scaffold_plugin.rb', line 88

def eval_method_string(object, method_str)
  # need to eval each section of the method string as this could return nil
  # at any point.
  methods = method_str.split('.')
  methods.each do |m|
    object = eval("object.#{m}") rescue nil
    return object if object.nil?
  end
  object
end

#sort_collection_by_method(collection, column, order) ⇒ Object



68
69
70
71
# File 'lib/ajax_scaffold_plugin.rb', line 68

def sort_collection_by_method(collection, column, order)
  # sort in place (sort!) using block
  collection.sort!{|line1, line2| sort_lines_by_column(line1, line2, column, order)}
end

#sort_lines_by_column(line1, line2, column, sort_order) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/ajax_scaffold_plugin.rb', line 73

def sort_lines_by_column(line1, line2, column, sort_order)
  # Compare each lines column values with <=>
  value1 = eval_method_string(line1, column)
  value2 = eval_method_string(line2, column)
  if (value1.nil?)
    res = -1
  elsif (value2.nil?)
    res = 1
  else
    res = (value1 != nil ? value1 : "") <=> (value2 != nil ? value2 : "")
  end
  # Reverse result if not asc
  sort_order == 'asc' ? res : res * -1
end

#store_or_get_from_session(id_key, value_key) ⇒ Object



52
53
54
55
# File 'lib/base/ajax_scaffold.rb', line 52

def store_or_get_from_session(id_key, value_key)
  session[id_key][value_key] = params[value_key] if !params[value_key].nil?
  params[value_key] ||= session[id_key][value_key]
end

#update_params(options) ⇒ Object



57
58
59
60
61
62
63
64
# File 'lib/base/ajax_scaffold.rb', line 57

def update_params(options)
  @scaffold_id = params[:scaffold_id] ||= options[:default_scaffold_id]
  session[@scaffold_id] ||= {:sort => options[:default_sort], :sort_direction => options[:default_sort_direction], :page => 1}

  store_or_get_from_session(@scaffold_id, :sort)
  store_or_get_from_session(@scaffold_id, :sort_direction)
  store_or_get_from_session(@scaffold_id, :page)
end