searchgasm 0.9.10 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,33 @@
1
+ module Searchgasm
2
+ module Helpers
3
+ module ControlTypes
4
+ module RemoteSelect
5
+ # Please see order_by_links. All options are the same and applicable here. The only difference is that instead of a group of links, this gets returned as a select form element that will perform the same function when the value is changed.
6
+ def remote_order_by_select(options = {})
7
+ add_remote_defaults!(options)
8
+ order_by_select(options)
9
+ end
10
+
11
+ # Please see order_as_links. All options are the same and applicable here. The only difference is that instead of a group of links, this gets returned as a select form element that will perform the same function when the value is changed.
12
+ def remote_order_as_select(options = {})
13
+ add_remote_defaults!(options)
14
+ order_as_select(options)
15
+ end
16
+
17
+ # Please see per_page_links. All options are the same and applicable here. The only difference is that instead of a group of links, this gets returned as a select form element that will perform the same function when the value is changed.
18
+ def remote_per_page_select(options = {})
19
+ add_remote_defaults!(options)
20
+ per_page_select(options)
21
+ end
22
+
23
+ # Please see page_links. All options are the same and applicable here, excep the :prev, :next, :first, and :last options. The only difference is that instead of a group of links, this gets returned as a select form element that will perform the same function when the value is changed.
24
+ def remote_page_select(options = {})
25
+ add_remote_defaults!(options)
26
+ page_select(options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ ActionController::Base.helper Searchgasm::Helpers::ControlTypes::RemoteSelect if defined?(ActionController)
@@ -0,0 +1,78 @@
1
+ module Searchgasm
2
+ module Helpers
3
+ module ControlTypes
4
+ module Select
5
+ # Please see order_by_links. All options are the same and applicable here. The only difference is that instead of a group of links, this gets returned as a select form element that will perform the same function when the value is changed.
6
+ def order_by_select(options = {})
7
+ add_order_by_select_defaults!(options)
8
+ searchgasm_state_for(:order_by, options) + select(options[:params_scope], :order_by, options[:choices], options[:tag] || {}, options[:html] || {})
9
+ end
10
+
11
+ # Please see order_as_links. All options are the same and applicable here. The only difference is that instead of a group of links, this gets returned as a select form element that will perform the same function when the value is changed.
12
+ def order_as_select(options = {})
13
+ add_order_by_select_defaults!(options)
14
+ searchgasm_state_for(:order_as, options) + select(options[:params_scope], :order_as, options[:choices], options[:tag] || {}, options[:html])
15
+ end
16
+
17
+ # Please see per_page_links. All options are the same and applicable here. The only difference is that instead of a group of links, this gets returned as a select form element that will perform the same function when the value is changed.
18
+ def per_page_select(options = {})
19
+ add_per_page_select_defaults!(options)
20
+ searchgasm_state_for(:per_page, options) + select(options[:params_scope], :per_page, options[:choices], options[:tag] || {}, options[:html])
21
+ end
22
+
23
+ # Please see page_links. All options are the same and applicable here, excep the :prev, :next, :first, and :last options. The only difference is that instead of a group of links, this gets returned as a select form element that will perform the same function when the value is changed.
24
+ def page_select(options = {})
25
+ add_page_select_defaults!(options)
26
+ searchgasm_state_for(:page, options) + select(options[:params_scope], :page, options[:choices], options[:tag] || {}, options[:html])
27
+ end
28
+
29
+ private
30
+ def add_order_by_select_defaults!(options)
31
+ add_order_by_links_defaults!(options)
32
+ add_searchgasm_select_defaults!(:order_by, options)
33
+ options
34
+ end
35
+
36
+ def add_order_as_select_defaults!(options)
37
+ add_order_as_links_defaults!(options)
38
+ add_searchgasm_select_defaults!(:order_as, options)
39
+ options
40
+ end
41
+
42
+ def add_per_page_select_defaults!(options)
43
+ add_per_page_links_defaults!(options)
44
+ options[:choices] = options[:choices].collect { |choice| choice.nil? ? ["Show all", choice] : ["#{choice} per page", choice]}
45
+ add_searchgasm_select_defaults!(:per_page, options)
46
+ options
47
+ end
48
+
49
+ def add_page_select_defaults!(options)
50
+ add_page_links_defaults!(options)
51
+ add_searchgasm_select_defaults!(:page, options)
52
+ options
53
+ end
54
+
55
+ def add_searchgasm_select_defaults!(option, options)
56
+ url = searchgasm_url_hash(option, nil, options)
57
+ url.delete(option)
58
+ url = searchgasm_url(url, options)
59
+ url = url_for(url)
60
+ url_option = CGI.escape((options[:params_scope].blank? ? "#{option}" : "#{options[:params_scope]}[#{option}]")) + "='+this.value"
61
+ url += (url.last == "?" ? "" : (url.include?("?") ? "&" : "?")) + url_option
62
+
63
+ options[:html][:onchange] ||= ""
64
+ options[:html][:onchange] += ";"
65
+ if !options[:remote]
66
+ options[:html][:onchange] += "window.location='#{url};"
67
+ else
68
+ options[:html][:onchange] += remote_function(:url => url, :method => :get).gsub(/\\'\+this.value'/, "'+this.value")
69
+ end
70
+ options[:html][:id] ||= ""
71
+ options
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+
78
+ ActionController::Base.helper Searchgasm::Helpers::ControlTypes::Select if defined?(ActionController)
@@ -0,0 +1,41 @@
1
+ module Searchgasm
2
+ module Helpers
3
+ # = Control Type Helpers
4
+ #
5
+ # The purpose of these helpers is to make ordering and paginating data, in your view, a breeze. Everyone has their own flavor of displaying data, so I made these helpers extra flexible, just for you.
6
+ #
7
+ # === How it's organized
8
+ #
9
+ # Basically you can do 4 different things in your with with your data:
10
+ #
11
+ # 1. Order your data by a single column or an array of columns
12
+ # 2. Descend or ascend your data
13
+ # 3. Change how many items are on each page
14
+ # 4. Paginate through your data
15
+ #
16
+ # Each one of these actions comes with 3 different types of helpers:
17
+ #
18
+ # 1. Link - A single link for a single value. Requires that you pass a value as the first parameter.
19
+ # 2. Group of links - A group of single links.
20
+ # 3. Select - A select with choices that perform an action once selected. Basically the same thing as a group of links, but just as a select form element
21
+ #
22
+ # === Examples
23
+ #
24
+ # Sometimes the best way to explain something is with some examples. Let's pretend we are performing these actions on a User model. Check it out:
25
+ #
26
+ # order_by_link(:name)
27
+ # => produces a single link that when clicked will order by the name column, and each time its clicked alternated between "ASC" and "DESC"
28
+ #
29
+ # order_by_links
30
+ # => produces a group of links for all of the columns in your users table, each link is basically order_by_link(column.name)
31
+ #
32
+ # order_by_select
33
+ # => produces a select form element with all of the user's columns as choices, when the value is change (onchange) it will act as if they clicked a link.
34
+ # => This is just order_by_links as a select form element, nothing fancy
35
+ #
36
+ # You can apply the _link, _links, or _select to any of the following: order_by, order_as, per_page, page. You have your choice on how you want to set up the interface. For more information and options on these individual
37
+ # helpers check out their source files. Look at the sub modules under this one (Ex: Searchgasm::Helpers::ControlTypes::Select)
38
+ module ControlTypes
39
+ end
40
+ end
41
+ end
@@ -24,7 +24,9 @@ module Searchgasm
24
24
  # === Options
25
25
  #
26
26
  # * <tt>:hidden_fields</tt> --- Array, a list of hidden fields to include. Defaults to [:order_by, :order_as, :per_page]. Pass false, nil, or a blank array to not include any.
27
- module FormHelper
27
+ # * <tt>:js_lib</tt> --- Accepts :prototype, :jquery, or nil. Javascript is written to keep the :hidden_fields in sync with the other fields on the page. nil will turn javascript off, you will be on your own.
28
+ # Keeping these fields in sync allows search to remember their values when they are changed, making search much more user friendly.
29
+ module Form
28
30
  module Shared # :nodoc:
29
31
  private
30
32
  def searchgasm_object?(object)
@@ -43,12 +45,21 @@ module Searchgasm
43
45
 
44
46
  searchgasm_object?(search_object) ? search_object : nil
45
47
  end
48
+
49
+ def extract_searchgasm_options!(args)
50
+ options = args.extract_options!
51
+ searchgasm_options = {}
52
+ [:hidden_fields].each { |option| searchgasm_options[option] = options.has_key?(option) ? options.delete(option) : Config.send(option) }
53
+ searchgasm_options[:hidden_fields] = [searchgasm_options[:hidden_fields]].flatten.compact
54
+ args << options
55
+ searchgasm_options
56
+ end
46
57
 
47
- def searchgasm_args(args, search_object, for_helper = nil)
58
+ def searchgasm_args(args, search_object, search_options, for_helper = nil)
48
59
  args = args.dup
49
60
  first = args.shift
50
61
 
51
- # Setup args
62
+ # Rearrange args with name first, search_obj second
52
63
  case first
53
64
  when String, Symbol
54
65
  args.unshift(search_object).unshift(first)
@@ -56,13 +67,32 @@ module Searchgasm
56
67
  name = search_object.is_a?(Conditions::Base) ? (search_object.relationship_name || :conditions) : :search
57
68
  args.unshift(search_object).unshift(name)
58
69
  end
59
-
70
+
71
+ # Now that we are consistent, get the name
72
+ name = args.first
73
+
74
+ # Add in some form magic to keep searching consisten and user friendly
60
75
  if for_helper != :fields_for
61
76
  options = args.extract_options!
77
+
78
+ # Set some defaults
62
79
  options[:html] ||= {}
63
80
  options[:html][:method] ||= :get
64
81
  options[:method] ||= options[:html][:method] if for_helper == :remote_form_for
65
- options[:html][:id] ||= searchgasm_form_id(search_object)
82
+ #options[:html][:id] ||= searchgasm_form_id(search_object)
83
+
84
+ if !search_options[:hidden_fields].blank?
85
+ options[:html][:onsubmit] ||= ""
86
+ options[:html][:onsubmit] += ";"
87
+
88
+ javascript = "if(typeof(Prototype) != 'undefined') {"
89
+ search_options[:hidden_fields].each { |field| javascript += "$('#{name}_#{field}_hidden').value = $('#{name}_#{field}').value;" }
90
+ javascript += "} else if(jQuery) {"
91
+ search_options[:hidden_fields].each { |field| javascript += "$('##{name}_#{field}_hidden').val($('##{name}_#{field}').val());" }
92
+ javascript += "}"
93
+
94
+ options[:html][:onsubmit] += javascript
95
+ end
66
96
 
67
97
  # Setup options
68
98
  case first
@@ -80,12 +110,13 @@ module Searchgasm
80
110
  args
81
111
  end
82
112
 
83
- def insert_searchgasm_fields(args, search_object)
113
+ def insert_searchgasm_fields(args, search_object, search_options)
84
114
  return unless search_object.is_a?(Search::Base)
85
115
  name = args.first
86
116
  options = args.extract_options!
87
- [(options.delete(:hidden_fields) || Config.hidden_fields)].flatten.each do |option|
88
- concat(hidden_field(name, option, :object => search_object, :value => (option == :order_by ? searchgasm_order_by_value(search_object.order_by) : search_object.send(option))))
117
+ options
118
+ search_options[:hidden_fields].each do |field|
119
+ concat(hidden_field(name, field, :object => search_object, :id => "#{name}_#{field}_hidden", :value => (field == :order_by ? searchgasm_order_by_value(search_object.order_by) : search_object.send(field))))
89
120
  end
90
121
  args << options
91
122
  end
@@ -97,8 +128,9 @@ module Searchgasm
97
128
  def fields_for_with_searchgasm(*args, &block)
98
129
  search_object = find_searchgasm_object(args)
99
130
  if search_object
100
- new_args = searchgasm_args(args, search_object, :fields_for)
101
- insert_searchgasm_fields(new_args, search_object)
131
+ searchgasm_options = extract_searchgasm_options!(args)
132
+ new_args = searchgasm_args(args, search_object, searchgasm_options, :fields_for)
133
+ insert_searchgasm_fields(new_args, search_object, searchgasm_options)
102
134
  fields_for_without_searchgasm(*new_args, &block)
103
135
  else
104
136
  fields_for_without_searchgasm(*args, &block)
@@ -108,7 +140,8 @@ module Searchgasm
108
140
  def form_for_with_searchgasm(*args, &block)
109
141
  search_object = find_searchgasm_object(args)
110
142
  if search_object
111
- form_for_without_searchgasm(*searchgasm_args(args, search_object, :form_for), &block)
143
+ searchgasm_options = extract_searchgasm_options!(args)
144
+ form_for_without_searchgasm(*searchgasm_args(args, search_object, searchgasm_options, :form_for), &block)
112
145
  else
113
146
  form_for_without_searchgasm(*args, &block)
114
147
  end
@@ -117,7 +150,8 @@ module Searchgasm
117
150
  def remote_form_for_with_searchgasm(*args, &block)
118
151
  search_object = find_searchgasm_object(args)
119
152
  if search_object
120
- remote_form_for_without_searchgasm(*searchgasm_args(args, search_object, :remote_form_for), &block)
153
+ searchgasm_options = extract_searchgasm_options!(args)
154
+ remote_form_for_without_searchgasm(*searchgasm_args(args, search_object, searchgasm_options, :remote_form_for), &block)
121
155
  else
122
156
  remote_form_for_without_searchgasm(*args, &block)
123
157
  end
@@ -130,8 +164,9 @@ module Searchgasm
130
164
  def fields_for_with_searchgasm(*args, &block)
131
165
  search_object = find_searchgasm_object(args)
132
166
  if search_object
133
- new_args = searchgasm_args(args, search_object, :fields_for)
134
- insert_searchgasm_fields(new_args, search_object)
167
+ searchgasm_options = extract_searchgasm_options!(args)
168
+ new_args = searchgasm_args(args, search_object, searchgasm_options, :fields_for)
169
+ insert_searchgasm_fields(new_args, search_object, searchgasm_options)
135
170
  fields_for_without_searchgasm(*new_args, &block)
136
171
  else
137
172
  fields_for_without_searchgasm(*args, &block)
@@ -143,7 +178,7 @@ module Searchgasm
143
178
  end
144
179
 
145
180
  if defined?(ActionView)
146
- ActionView::Base.send(:include, Searchgasm::Helpers::FormHelper::Base)
181
+ ActionView::Base.send(:include, Searchgasm::Helpers::Form::Base)
147
182
 
148
183
  ActionView::Base.class_eval do
149
184
  alias_method_chain :fields_for, :searchgasm
@@ -151,7 +186,7 @@ if defined?(ActionView)
151
186
  alias_method_chain :remote_form_for, :searchgasm
152
187
  end
153
188
 
154
- ActionView::Helpers::FormBuilder.send(:include, Searchgasm::Helpers::FormHelper::FormBuilder)
189
+ ActionView::Helpers::FormBuilder.send(:include, Searchgasm::Helpers::Form::FormBuilder)
155
190
 
156
191
  ActionView::Helpers::FormBuilder.class_eval do
157
192
  alias_method_chain :fields_for, :searchgasm
@@ -0,0 +1,59 @@
1
+ module Searchgasm
2
+ module Helpers #:nodoc:
3
+ module Utilities # :nodoc:
4
+ private
5
+ # Adds default options for all helper methods.
6
+ def add_searchgasm_helper_defaults!(option, options)
7
+ options[:params_scope] = :search unless options.has_key?(:params_scope)
8
+ options[:search_obj] ||= instance_variable_get("@#{options[:params_scope]}")
9
+ raise(ArgumentError, "@search object could not be inferred, please specify: :search_obj => @search") unless options[:search_obj].is_a?(Searchgasm::Search::Base)
10
+ options[:html] ||= {}
11
+ options[:html][:class] = (options[:html][:class].blank? ? "" : "#{options[:html][:class]} ") + option.to_s
12
+ options
13
+ end
14
+
15
+ def searchgasm_url(url_hash, options)
16
+ options[:params_scope].blank? ? url_hash : {options[:params_scope] => url_hash}
17
+ end
18
+
19
+ def searchgasm_url_hash(option, value, options)
20
+ params_copy = params.dup
21
+ params_copy.delete(:commit)
22
+
23
+ # Extract search params from params
24
+ search_params = options[:params_scope].blank? ? params_copy : params_copy[options[:params_scope]]
25
+ search_params ||= {}
26
+
27
+ # Never want to keep page
28
+ search_params.delete(:page)
29
+
30
+ # Use special order_by value
31
+ search_params[option] = option == :order_by ? searchgasm_order_by_value(value) : value
32
+
33
+ search_params
34
+ end
35
+
36
+ def searchgasm_order_by_value(order_by)
37
+ case order_by
38
+ when String
39
+ order_by
40
+ when Array, Hash
41
+ [Marshal.dump(order_by)].pack("m")
42
+ end
43
+ end
44
+
45
+ def searchgasm_state_for(option, options)
46
+ @added_state_for ||= []
47
+ html = ""
48
+ unless @added_state_for.include?(option)
49
+ value = options[:search_obj].send(option)
50
+ html = hidden_field(options[:params_scope], option, :value => (option == :order_by ? searchgasm_order_by_value(value) : value))
51
+ @added_state_for << option
52
+ end
53
+ html
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ ActionController::Base.helper(Searchgasm::Helpers::Utilities) if defined?(ActionController)
@@ -0,0 +1,3 @@
1
+ module Searchgasm
2
+ module Helpers #:nodoc:
3
+ module UtilitiesHelper # :nodoc:
@@ -3,7 +3,7 @@ module Searchgasm
3
3
  # = Search Ordering
4
4
  #
5
5
  # The purpose of this module is to provide easy ordering for your searches. All that these options do is
6
- # build :order for you. This plays a huge part in ordering your data on the interface. See Searchgasm::Helpers::SearchHelper for more information.
6
+ # build :order for you. This plays a huge part in ordering your data on the interface. See Searchgasm::Helpers::Search for more information.
7
7
  module Ordering
8
8
  def self.included(klass)
9
9
  klass.class_eval do
@@ -65,9 +65,9 @@ module Searchgasm
65
65
  [@major, @minor, @tiny]
66
66
  end
67
67
 
68
- MAJOR = 0
69
- MINOR = 9
70
- TINY = 10
68
+ MAJOR = 1
69
+ MINOR = 0
70
+ TINY = 0
71
71
 
72
72
  # The current version as a Version instance
73
73
  CURRENT = new(MAJOR, MINOR, TINY)
data/lib/searchgasm.rb CHANGED
@@ -40,9 +40,14 @@ require "searchgasm/condition/inclusive_descendant_of"
40
40
  require "searchgasm/condition/sibling_of"
41
41
 
42
42
  # Helpers
43
- require "searchgasm/helpers/utilities_helper"
44
- require "searchgasm/helpers/form_helper"
45
- require "searchgasm/helpers/search_helper"
43
+ require "searchgasm/helpers/utilities"
44
+ require "searchgasm/helpers/form"
45
+ require "searchgasm/helpers/control_types/link"
46
+ require "searchgasm/helpers/control_types/links"
47
+ require "searchgasm/helpers/control_types/select"
48
+ require "searchgasm/helpers/control_types/remote_link"
49
+ require "searchgasm/helpers/control_types/remote_links"
50
+ require "searchgasm/helpers/control_types/remote_select"
46
51
 
47
52
  # Lets do it!
48
53
  module Searchgasm
data/searchgasm.gemspec CHANGED
@@ -1,18 +1,18 @@
1
1
 
2
- # Gem::Specification for Searchgasm-0.9.10
2
+ # Gem::Specification for Searchgasm-1.0.0
3
3
  # Originally generated by Echoe
4
4
 
5
5
  --- !ruby/object:Gem::Specification
6
6
  name: searchgasm
7
7
  version: !ruby/object:Gem::Version
8
- version: 0.9.10
8
+ version: 1.0.0
9
9
  platform: ruby
10
10
  authors:
11
11
  - Ben Johnson of Binary Logic
12
12
  autorequire:
13
13
  bindir: bin
14
14
 
15
- date: 2008-09-08 00:00:00 -04:00
15
+ date: 2008-09-09 00:00:00 -04:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
@@ -74,9 +74,16 @@ extra_rdoc_files:
74
74
  - lib/searchgasm/conditions/base.rb
75
75
  - lib/searchgasm/conditions/protection.rb
76
76
  - lib/searchgasm/config.rb
77
- - lib/searchgasm/helpers/form_helper.rb
78
- - lib/searchgasm/helpers/search_helper.rb
79
- - lib/searchgasm/helpers/utilities_helper.rb
77
+ - lib/searchgasm/helpers/control_types/link.rb
78
+ - lib/searchgasm/helpers/control_types/links.rb
79
+ - lib/searchgasm/helpers/control_types/remote_link.rb
80
+ - lib/searchgasm/helpers/control_types/remote_links.rb
81
+ - lib/searchgasm/helpers/control_types/remote_select.rb
82
+ - lib/searchgasm/helpers/control_types/select.rb
83
+ - lib/searchgasm/helpers/control_types.rb
84
+ - lib/searchgasm/helpers/form.rb
85
+ - lib/searchgasm/helpers/utilities.rb
86
+ - lib/searchgasm/helpers.rb
80
87
  - lib/searchgasm/search/base.rb
81
88
  - lib/searchgasm/search/conditions.rb
82
89
  - lib/searchgasm/search/ordering.rb
@@ -111,9 +118,16 @@ files:
111
118
  - lib/searchgasm/conditions/base.rb
112
119
  - lib/searchgasm/conditions/protection.rb
113
120
  - lib/searchgasm/config.rb
114
- - lib/searchgasm/helpers/form_helper.rb
115
- - lib/searchgasm/helpers/search_helper.rb
116
- - lib/searchgasm/helpers/utilities_helper.rb
121
+ - lib/searchgasm/helpers/control_types/link.rb
122
+ - lib/searchgasm/helpers/control_types/links.rb
123
+ - lib/searchgasm/helpers/control_types/remote_link.rb
124
+ - lib/searchgasm/helpers/control_types/remote_links.rb
125
+ - lib/searchgasm/helpers/control_types/remote_select.rb
126
+ - lib/searchgasm/helpers/control_types/select.rb
127
+ - lib/searchgasm/helpers/control_types.rb
128
+ - lib/searchgasm/helpers/form.rb
129
+ - lib/searchgasm/helpers/utilities.rb
130
+ - lib/searchgasm/helpers.rb
117
131
  - lib/searchgasm/search/base.rb
118
132
  - lib/searchgasm/search/conditions.rb
119
133
  - lib/searchgasm/search/ordering.rb
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: searchgasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.10
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Johnson of Binary Logic
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-08 00:00:00 -04:00
12
+ date: 2008-09-09 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -71,9 +71,16 @@ extra_rdoc_files:
71
71
  - lib/searchgasm/conditions/base.rb
72
72
  - lib/searchgasm/conditions/protection.rb
73
73
  - lib/searchgasm/config.rb
74
- - lib/searchgasm/helpers/form_helper.rb
75
- - lib/searchgasm/helpers/search_helper.rb
76
- - lib/searchgasm/helpers/utilities_helper.rb
74
+ - lib/searchgasm/helpers/control_types/link.rb
75
+ - lib/searchgasm/helpers/control_types/links.rb
76
+ - lib/searchgasm/helpers/control_types/remote_link.rb
77
+ - lib/searchgasm/helpers/control_types/remote_links.rb
78
+ - lib/searchgasm/helpers/control_types/remote_select.rb
79
+ - lib/searchgasm/helpers/control_types/select.rb
80
+ - lib/searchgasm/helpers/control_types.rb
81
+ - lib/searchgasm/helpers/form.rb
82
+ - lib/searchgasm/helpers/utilities.rb
83
+ - lib/searchgasm/helpers.rb
77
84
  - lib/searchgasm/search/base.rb
78
85
  - lib/searchgasm/search/conditions.rb
79
86
  - lib/searchgasm/search/ordering.rb
@@ -108,9 +115,16 @@ files:
108
115
  - lib/searchgasm/conditions/base.rb
109
116
  - lib/searchgasm/conditions/protection.rb
110
117
  - lib/searchgasm/config.rb
111
- - lib/searchgasm/helpers/form_helper.rb
112
- - lib/searchgasm/helpers/search_helper.rb
113
- - lib/searchgasm/helpers/utilities_helper.rb
118
+ - lib/searchgasm/helpers/control_types/link.rb
119
+ - lib/searchgasm/helpers/control_types/links.rb
120
+ - lib/searchgasm/helpers/control_types/remote_link.rb
121
+ - lib/searchgasm/helpers/control_types/remote_links.rb
122
+ - lib/searchgasm/helpers/control_types/remote_select.rb
123
+ - lib/searchgasm/helpers/control_types/select.rb
124
+ - lib/searchgasm/helpers/control_types.rb
125
+ - lib/searchgasm/helpers/form.rb
126
+ - lib/searchgasm/helpers/utilities.rb
127
+ - lib/searchgasm/helpers.rb
114
128
  - lib/searchgasm/search/base.rb
115
129
  - lib/searchgasm/search/conditions.rb
116
130
  - lib/searchgasm/search/ordering.rb