upmin-admin 0.0.39 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -14
  3. data/Rakefile +24 -15
  4. data/app/assets/javascripts/upmin/application.js +0 -1
  5. data/app/assets/stylesheets/upmin/base.css.scss +4 -0
  6. data/app/assets/stylesheets/upmin/instances.css.scss +11 -1
  7. data/app/controllers/upmin/models_controller.rb +52 -42
  8. data/app/views/layouts/upmin/_navbar.html.haml +3 -3
  9. data/app/views/layouts/upmin/application.html.haml +2 -1
  10. data/app/views/upmin/models/new.html.haml +3 -3
  11. data/app/views/upmin/models/search.html.haml +5 -4
  12. data/app/views/upmin/models/show.html.haml +3 -3
  13. data/app/views/upmin/partials/actions/_action.html.haml +6 -21
  14. data/app/views/upmin/partials/associations/_associations.html.haml +8 -10
  15. data/app/views/upmin/partials/attributes/_boolean.html.haml +8 -6
  16. data/app/views/upmin/partials/attributes/_datetime.html.haml +38 -36
  17. data/app/views/upmin/partials/attributes/_decimal.html.haml +10 -0
  18. data/app/views/upmin/partials/attributes/_float.html.haml +10 -6
  19. data/app/views/upmin/partials/attributes/_integer.html.haml +10 -6
  20. data/app/views/upmin/partials/attributes/_progress_bar.html.haml +1 -0
  21. data/app/views/upmin/partials/attributes/_string.html.haml +17 -6
  22. data/app/views/upmin/partials/attributes/_text.html.haml +8 -6
  23. data/app/views/upmin/partials/attributes/_unknown.html.haml +5 -3
  24. data/app/views/upmin/partials/models/_model.html.haml +18 -46
  25. data/app/views/upmin/partials/models/_new_model.html.haml +9 -31
  26. data/app/views/upmin/partials/parameters/_block_parameter.haml +0 -0
  27. data/app/views/upmin/partials/parameters/_opt_parameter.html.haml +14 -0
  28. data/app/views/upmin/partials/parameters/_req_parameter.html.haml +4 -0
  29. data/app/views/upmin/partials/search_boxes/_ransack_search_box.html.haml +2 -3
  30. data/app/views/upmin/partials/search_results/_results.html.haml +9 -2
  31. data/lib/upmin/action.rb +50 -0
  32. data/lib/upmin/active_record/association.rb +47 -0
  33. data/lib/upmin/active_record/model.rb +54 -0
  34. data/lib/upmin/active_record/query.rb +12 -0
  35. data/lib/upmin/admin.rb +24 -2
  36. data/lib/upmin/association.rb +73 -0
  37. data/lib/upmin/attribute.rb +87 -0
  38. data/lib/upmin/automatic_delegation.rb +76 -0
  39. data/lib/upmin/configuration.rb +103 -0
  40. data/lib/upmin/data_mapper/association.rb +57 -0
  41. data/lib/upmin/data_mapper/model.rb +62 -0
  42. data/lib/upmin/data_mapper/query.rb +57 -0
  43. data/lib/upmin/engine.rb +2 -0
  44. data/lib/upmin/errors.rb +43 -0
  45. data/lib/upmin/model.rb +267 -98
  46. data/lib/upmin/parameter.rb +43 -0
  47. data/lib/upmin/query.rb +51 -0
  48. data/lib/upmin/railtie.rb +11 -1
  49. data/lib/upmin/railties/active_record.rb +5 -50
  50. data/lib/upmin/railties/data_mapper.rb +18 -0
  51. data/lib/upmin/railties/render.rb +34 -98
  52. data/lib/upmin/railties/render_helpers.rb +119 -53
  53. data/lib/upmin/version.rb +1 -1
  54. data/spec/factories/factories.rb +6 -0
  55. data/spec/features/action_spec.rb +39 -46
  56. data/spec/features/edit_model_spec.rb +4 -2
  57. data/spec/features/navbar_spec.rb +48 -0
  58. data/spec/features/new_model_spec.rb +1 -0
  59. data/spec/features/search_spec.rb +7 -4
  60. data/spec/lib/configuration_spec.rb +60 -0
  61. data/spec/spec_helper.rb +14 -8
  62. metadata +25 -7
  63. data/app/assets/javascripts/upmin/moment.js +0 -2856
  64. data/app/helpers/upmin/instances_helper.rb +0 -13
  65. data/app/views/upmin/partials/attributes/_nilable.html.haml +0 -14
  66. data/app/views/upmin/partials/search_results/_result.html.haml +0 -8
  67. data/lib/upmin/klass.rb +0 -170
@@ -0,0 +1,43 @@
1
+ module Upmin
2
+ class Parameter
3
+ attr_reader :action
4
+ attr_reader :name
5
+
6
+ def initialize(action, parameter_name, options = {})
7
+ @action = action
8
+ @name = parameter_name.to_sym
9
+ @type = options[:type] if options[:type]
10
+ end
11
+
12
+ def model
13
+ return action.model
14
+ end
15
+
16
+ def title
17
+ return name.to_s.humanize
18
+ end
19
+
20
+ def label_name
21
+ name.to_s.capitalize.gsub("_", " ")
22
+ end
23
+
24
+ def type
25
+ return @type if defined?(@type)
26
+ @type = action.model.method(action.name).parameters.select do |param_type, param_name|
27
+ param_name == name
28
+ end.first.first || :req
29
+ return @type
30
+ end
31
+
32
+ def form_id
33
+ return "#{action.name}_#{name}"
34
+ end
35
+
36
+ def nil_form_id
37
+ return "#{form_id}_is_nil"
38
+ end
39
+
40
+ private
41
+
42
+ end
43
+ end
@@ -0,0 +1,51 @@
1
+ module Upmin
2
+ class Query
3
+
4
+ attr_reader :klass
5
+ attr_reader :search_options
6
+ attr_reader :page
7
+ attr_reader :per_page
8
+
9
+ delegate(:underscore_name, to: :klass)
10
+
11
+ def initialize(klass, search_options = {}, options = {})
12
+ if klass.active_record?
13
+ extend Upmin::ActiveRecord::Query
14
+ elsif klass.data_mapper?
15
+ extend Upmin::DataMapper::Query
16
+ else
17
+ raise ArgumentError.new(klass)
18
+ end
19
+
20
+ @klass = klass
21
+ @search_options = search_options
22
+ @page = options[:page]
23
+ @per_page = options[:per_page]
24
+ end
25
+
26
+ def results
27
+ raise NotImplementedError
28
+ end
29
+
30
+ def paginated_results
31
+ return @paginated_results if defined?(@paginated_results)
32
+ if page && per_page
33
+ pr = Upmin::Paginator.paginate(results, page, per_page)
34
+ else
35
+ pr = Upmin::Paginator.paginate(results)
36
+ end
37
+ @paginated_results = pr
38
+ return @paginated_results
39
+ end
40
+
41
+ def upmin_results
42
+ return @upmin_results if defined?(@upmin_results)
43
+ @upmin_results = paginated_results.map{ |r| r.upmin_model }
44
+ return @upmin_results
45
+ end
46
+
47
+
48
+ private
49
+
50
+ end
51
+ end
@@ -1,12 +1,22 @@
1
+ require 'rails/railtie'
2
+
1
3
  module Upmin
2
4
  require 'rails'
3
5
  class Railtie < Rails::Railtie
4
6
  initializer('upmin.insert_into_active_record') do
5
7
  ActiveSupport.on_load(:active_record) do
6
- ::ActiveRecord::Base.send(:include, Upmin::Railties::ActiveRecord)
8
+ if defined?(ActiveRecord)
9
+ ::ActiveRecord::Base.send(:include, Upmin::Railties::ActiveRecord)
10
+ end
11
+
12
+ if defined?(DataMapper)
13
+ ::DataMapper::Resource.send(:include, Upmin::Railties::DataMapper)
14
+ end
7
15
  # ::ActiveRecord::Relation.send(:include, Upmin::ActiveRecordRelation)
8
16
  end
17
+ end
9
18
 
19
+ initializer('upmin.insert_view_helpers') do
10
20
  ActiveSupport.on_load(:action_controller) do
11
21
  ::ActionController::Base.send(:include, Upmin::Railties::Render)
12
22
  ::ActionController::Base.send(:include, Upmin::Railties::Paginator)
@@ -4,60 +4,15 @@ module Upmin::Railties
4
4
  module ActiveRecord
5
5
  extend ::ActiveSupport::Concern
6
6
 
7
+ def upmin_model
8
+ klass = Upmin::Model.find_class(self.class)
9
+ return klass.new(self)
10
+ end
11
+
7
12
  included do
8
13
  end
9
14
 
10
15
  module ClassMethods
11
-
12
- # Add a single attribute to upmin attributes. If this is called
13
- # before upmin_attributes the attributes will not include any defaults
14
- # attributes.
15
- def upmin_attribute(attribute = nil)
16
- @upmin_extra_attrs = [] unless defined?(@upmin_extra_attrs)
17
- @upmin_extra_attrs << attribute.to_sym if attribute
18
- end
19
-
20
- # Sets the upmin_attributes to the provided attributes if any are
21
- # provided.
22
- # If no attributes are provided, and upmin_attributes hasn't been defined,
23
- # then the upmin_attributes are set to the default attributes.
24
- # Returns the upmin_attributes
25
- def upmin_attributes(*attributes)
26
- @upmin_extra_attrs = [] unless defined?(@upmin_extra_attrs)
27
-
28
- if attributes.any?
29
- @upmin_attributes = attributes.map{|a| a.to_sym}
30
- end
31
-
32
- @upmin_attributes ||= attribute_names.map{|a| a.to_sym}
33
- return (@upmin_attributes + @upmin_extra_attrs).uniq
34
- end
35
-
36
-
37
- # Add a single action to upmin actions. If this is called
38
- # before upmin_actions the actions will not include any defaults
39
- # actions.
40
- def upmin_action(action)
41
- @upmin_actions ||= []
42
-
43
- action = action.to_sym
44
- @upmin_actions << action unless @upmin_actions.include?(action)
45
- end
46
-
47
- # Sets the upmin_actions to the provided actions if any are
48
- # provided.
49
- # If no actions are provided, and upmin_actions hasn't been defined,
50
- # then the upmin_actions are set to the default actions.
51
- # Returns the upmin_actions
52
- def upmin_actions(*actions)
53
- if actions.any?
54
- # set the actions
55
- @upmin_actions = actions.map{|a| a.to_sym}
56
- end
57
- @upmin_actions ||= []
58
- return @upmin_actions
59
- end
60
-
61
16
  end
62
17
  end
63
18
  end
@@ -0,0 +1,18 @@
1
+ require 'active_support/concern'
2
+
3
+ module Upmin::Railties
4
+ module DataMapper
5
+ extend ::ActiveSupport::Concern
6
+
7
+ def upmin_model
8
+ klass = Upmin::Model.find_class(self.class)
9
+ return klass.new(self)
10
+ end
11
+
12
+ included do
13
+ end
14
+
15
+ module ClassMethods
16
+ end
17
+ end
18
+ end
@@ -2,105 +2,41 @@
2
2
  module Upmin::Railties
3
3
  module Render
4
4
 
5
- def up_model(model, options = {})
6
- options[:locals] ||= {}
7
-
8
- upmin_model = Upmin::Model.new(model)
9
- options[:locals][:upmin_model] ||= upmin_model
10
-
11
- partials = RenderHelpers.model_partials(upmin_model, options)
12
- return up_render(model, partials, options, :up_model)
13
- end
14
-
15
- def up_attribute(model, attr_name, options = {})
16
- options[:locals] ||= {}
17
- options[:locals][:model] ||= model
18
- options[:locals][:attr_name] = attr_name
19
-
20
- upmin_model = Upmin::Model.new(model)
21
- options[:locals][:upmin_model] ||= upmin_model
22
-
23
- options[:locals][:form_id] ||= upmin_model.attribute_form_id(attr_name)
24
- # Only fill this in if it was never set so the user can override this.
25
- if options[:locals][:editable].nil?
26
- options[:locals][:editable] = upmin_model.attribute_editable?(attr_name)
5
+ # Render method that is used by upmin-admin. Tries to render partials in order, passing data in as the :object, along with options.
6
+ def up_render(data, options = {})
7
+ if data.is_a?(Upmin::Model)
8
+ options = RenderHelpers.model_options(data, options)
9
+ partials = RenderHelpers.model_partials(data, options)
10
+
11
+ elsif data.is_a?(Upmin::Attribute)
12
+ options = RenderHelpers.attribute_options(data, options)
13
+ partials = RenderHelpers.attribute_partials(data, options)
14
+
15
+ elsif data.is_a?(Upmin::Association)
16
+ options = RenderHelpers.association_options(data, options)
17
+ partials = RenderHelpers.association_partials(data, options)
18
+
19
+ elsif data.is_a?(Upmin::Action)
20
+ options = RenderHelpers.action_options(data, options)
21
+ partials = RenderHelpers.action_partials(data, options)
22
+
23
+ elsif data.is_a?(Upmin::Parameter)
24
+ options = RenderHelpers.parameter_options(data, options)
25
+ partials = RenderHelpers.parameter_partials(data, options)
26
+
27
+ elsif data.is_a?(Upmin::Query)
28
+ options = RenderHelpers.search_results_options(data, options)
29
+ partials = RenderHelpers.search_results_partials(data, options)
30
+
31
+ elsif data.superclass == Upmin::Model
32
+ # Probably rendering a search box
33
+ options = RenderHelpers.search_box_options(data, options)
34
+ partials = RenderHelpers.search_box_partials(data, options)
35
+
36
+ else
37
+ raise Upmin::ArgumentError.new(data)
27
38
  end
28
39
 
29
-
30
- partials = RenderHelpers.attribute_partials(upmin_model, attr_name, options)
31
-
32
- data = upmin_model.attribute(attr_name)
33
- return up_render(data, partials, options, :up_attribute)
34
- end
35
-
36
- def up_association(model, assoc_name, options = {})
37
- options[:locals] ||= {}
38
- options[:locals][:model] ||= model
39
- options[:locals][:assoc_name] = assoc_name
40
-
41
- upmin_model = Upmin::Model.new(model)
42
- options[:locals][:upmin_model] ||= upmin_model
43
-
44
- partials = RenderHelpers.association_partials(upmin_model, assoc_name, options)
45
-
46
- data = upmin_model.association(assoc_name, options)
47
- return up_render([data].flatten, partials, options, :up_association)
48
- end
49
-
50
- def up_action(model, action_name, options = {})
51
- options[:locals] ||= {}
52
- options[:locals][:model] ||= model
53
- options[:locals][:action_name] = action_name
54
-
55
- upmin_model = Upmin::Model.new(model)
56
- options[:locals][:upmin_model] ||= upmin_model
57
-
58
- partials = RenderHelpers.action_partials(upmin_model, action_name, options)
59
-
60
- data = upmin_model.action_parameters(action_name)
61
- return up_render(data, partials, options, :up_action)
62
- end
63
-
64
- def up_search_results(ransack_search, ransack_results, options = {})
65
- options[:locals] ||= {}
66
- options[:locals][:klass] ||= Upmin::Klass.find(ransack_search.klass)
67
- options[:locals][:ransack_search] ||= ransack_search
68
- options[:locals][:ransack_results] ||= ransack_results
69
-
70
- partials = RenderHelpers.search_results_partials(ransack_search, options)
71
-
72
- return up_render(ransack_results, partials, options, :up_search_results)
73
- end
74
-
75
- def up_search_result(model, options = {})
76
- options[:locals] ||= {}
77
-
78
- upmin_model = Upmin::Model.new(model)
79
- options[:locals][:upmin_model] ||= upmin_model
80
-
81
- partials = RenderHelpers.search_result_partials(upmin_model, options)
82
-
83
- return up_render(model, partials, options, :up_search_result)
84
- end
85
-
86
- def up_search_box(klass, options = {})
87
- options[:locals] ||= {}
88
-
89
- klass = Upmin::Klass.find(klass) unless klass.is_a?(Upmin::Klass)
90
- if klass.nil?
91
- raise "Invalid klass provided in `up_search_box`"
92
- end
93
-
94
- options[:locals][:klass] = klass
95
-
96
- partials = RenderHelpers.search_box_partials(klass, options)
97
-
98
- return up_render(klass, partials, options, :up_search_box)
99
- end
100
-
101
-
102
- # Generic render method that is used by all of the up_<something> methods. Tries to render the partials in order, passing data in as the :object, along with options.
103
- def up_render(data, partials, options = {}, calling_method = nil)
104
40
  # Use options as the render hash, and set :object as the data being used for rendering.
105
41
  options[:object] = data
106
42
 
@@ -113,7 +49,7 @@ module Upmin::Railties
113
49
  end
114
50
 
115
51
  # If we get here we tried all of the partials and nothing matched. This *shouldn't* be possible but might happen if partials are deleted.
116
- raise "Failed to find a matching partial while trying to render `#{calling_method}` with the following data: #{data.inspect}"
52
+ raise Upmin::MissingPartial.new(data)
117
53
  end
118
54
 
119
55
  end
@@ -2,21 +2,33 @@
2
2
  module Upmin::Railties
3
3
  module RenderHelpers
4
4
 
5
- def RenderHelpers.model_partials(upmin_model, options)
5
+ def RenderHelpers.model_partials(model, options = {})
6
6
  partials = []
7
7
  # Add "new_" in front of any partial for the partial for new view.
8
8
  # <options[:as]>
9
9
  # <model_name>
10
10
  # model
11
- prefix = upmin_model.new_record? ? "new_" : ""
11
+ prefix = model.new_record? ? "new_" : ""
12
12
 
13
13
  partials << build_model_path(options[:as]) if options[:as]
14
- partials << build_model_path(upmin_model.klass.name.underscore, prefix)
14
+ partials << build_model_path(model.underscore_name, prefix)
15
15
  partials << build_model_path(:model, prefix)
16
16
  return partials
17
17
  end
18
18
 
19
- def RenderHelpers.attribute_partials(upmin_model, attr_name, options)
19
+ def RenderHelpers.model_options(model, options = {})
20
+ options[:locals] ||= {}
21
+ options[:locals][:model] ||= model
22
+ return options
23
+ end
24
+
25
+ def RenderHelpers.build_model_path(partial, prefix = "")
26
+ return build_path("models", "#{prefix}#{partial}")
27
+ end
28
+
29
+
30
+
31
+ def RenderHelpers.attribute_partials(attribute, options = {})
20
32
  partials = []
21
33
  # <options[:as]>
22
34
  # <model_name>_<attr_name>, eg: user_name
@@ -24,85 +36,148 @@ module Upmin::Railties
24
36
  # <attr_type>, eg: string
25
37
  # unknown
26
38
 
27
- model_name = upmin_model.klass.name.underscore
28
- attr_type = upmin_model.attribute_type(attr_name)
39
+ model_name = attribute.model.underscore_name
40
+ attr_type = attribute.type
29
41
 
30
42
  partials << build_attribute_path(options[:as]) if options[:as]
31
- partials << build_attribute_path("#{model_name}_#{attr_name}")
43
+ partials << build_attribute_path("#{model_name}_#{attribute.name}")
32
44
  partials << build_attribute_path("#{model_name}_#{attr_type}")
33
45
  partials << build_attribute_path(attr_type)
34
46
  partials << build_attribute_path(:unknown)
35
47
  return partials
36
48
  end
37
49
 
38
- # def RenderHelpers.action_partials(upmin_model, action, options)
39
- # partials = []
40
- # partials << build_action_path(:unknown)
41
- # return partials
42
- # end
50
+ def RenderHelpers.attribute_options(attribute, options = {})
51
+ options[:locals] ||= {}
52
+ options[:locals][:model] ||= attribute.model
53
+ options[:locals][:attribute] = attribute
54
+ return options
55
+ end
56
+
57
+ def RenderHelpers.build_attribute_path(partial)
58
+ return build_path("attributes", partial)
59
+ end
60
+
43
61
 
44
62
 
45
63
  # NOTE: assoc_type is sketchy at best. It tries to determine it, but in some cases it has to be guessed at, so if you have polymorphic associations it will choose the data type of the first association it finds - eg if user.things returns [Order, Product, Review] it will use the type of "order"
46
- def RenderHelpers.association_partials(upmin_model, assoc_name, options)
64
+ def RenderHelpers.association_partials(association, options = {})
47
65
  partials = []
48
66
  # <options[:as]>
49
67
  # <model_name>_<assoc_name>, eg: user_recent_orders
50
68
  # <model_name>_<assoc_type>, eg: user_orders
51
69
  # <attr_type>, eg: orders
52
70
  # associations
53
- model_name = upmin_model.klass.name.underscore
54
- assoc_type = upmin_model.association_type(assoc_name)
71
+ model_name = association.model.underscore_name
72
+ assoc_type = association.type
55
73
 
56
74
  partials << build_association_path(options[:as]) if options[:as]
57
- partials << build_association_path("#{model_name}_#{assoc_name}")
75
+ partials << build_association_path("#{model_name}_#{association.name}")
58
76
  partials << build_association_path("#{model_name}_#{assoc_type}")
59
77
  partials << build_association_path(assoc_type)
60
78
  partials << build_association_path(:associations)
61
79
  return partials
62
80
  end
63
81
 
64
- def RenderHelpers.action_partials(upmin_model, action_name, options)
82
+ def RenderHelpers.association_options(association, options = {})
83
+ options[:locals] ||= {}
84
+ options[:locals][:model] ||= association.model
85
+ options[:locals][:association] = association
86
+ return options
87
+ end
88
+
89
+ def RenderHelpers.build_association_path(partial)
90
+ return build_path("associations", partial)
91
+ end
92
+
93
+
94
+
95
+ def RenderHelpers.action_partials(action, options = {})
65
96
  partials = []
66
97
  # <options[:as]>
67
98
  # <model_name>_<action_name>, eg: order_refund
68
99
  # <action_name>, eg: refund
69
100
  # action
70
- model_name = upmin_model.klass.name.underscore
101
+ model_name = action.model.underscore_name
71
102
 
72
103
  partials << build_action_path(options[:as]) if options[:as]
73
- partials << build_action_path("#{model_name}_#{action_name}")
74
- partials << build_action_path(action_name)
104
+ partials << build_action_path("#{model_name}_#{action.name}")
105
+ partials << build_action_path(action.name)
75
106
  partials << build_action_path(:action)
76
107
  return partials
77
108
  end
78
109
 
79
- def RenderHelpers.search_results_partials(ransack_search, options)
110
+ def RenderHelpers.action_options(action, options = {})
111
+ options[:locals] ||= {}
112
+ options[:locals][:model] ||= action.model
113
+ options[:locals][:action] = action
114
+ return options
115
+ end
116
+
117
+ def RenderHelpers.build_action_path(partial)
118
+ return build_path("actions", partial)
119
+ end
120
+
121
+
122
+
123
+ def RenderHelpers.parameter_partials(parameter, options = {})
80
124
  partials = []
81
125
  # <options[:as]>
82
- # <model_name # plural>, eg: orders
83
- # results
84
- model_name_plural = ransack_search.klass.name.underscore.pluralize
85
-
86
- partials << build_search_result_path(options[:as]) if options[:as]
87
- partials << build_search_result_path(model_name_plural)
88
- partials << build_search_result_path(:results)
126
+ # <model_name>_<action_name>_<param_name>, eg: order_refund_amount
127
+ # <action_name>_<param_name>, eg: refund_amount
128
+ # <param_name>, eg: amount
129
+ # <param_type>_parameter, eg: opt_parameter and req_parameter
130
+ model_name = parameter.model.underscore_name
131
+ action_name = parameter.action.name
132
+
133
+ partials << build_parameter_path(options[:as]) if options[:as]
134
+ partials << build_parameter_path("#{model_name}_#{action_name}_#{parameter.name}")
135
+ partials << build_parameter_path("#{action_name}_#{parameter.name}")
136
+ partials << build_parameter_path(parameter.name)
137
+ partials << build_parameter_path("#{parameter.type}_parameter")
89
138
  return partials
90
139
  end
91
140
 
92
- def RenderHelpers.search_result_partials(upmin_model, options)
141
+ def RenderHelpers.parameter_options(parameter, options = {})
142
+ options[:locals] ||= {}
143
+ options[:locals][:model] ||= parameter.model
144
+ options[:locals][:action] ||= parameter.action
145
+ options[:locals][:parameter] = parameter
146
+ return options
147
+ end
148
+
149
+ def RenderHelpers.build_parameter_path(partial)
150
+ return build_path("parameters", partial)
151
+ end
152
+
153
+
154
+
155
+ def RenderHelpers.search_results_partials(query, options = {})
93
156
  partials = []
94
157
  # <options[:as]>
95
- # <model_name # singular>, eg: order
158
+ # <model_name # plural>, eg: orders
96
159
  # results
97
- model_name = upmin_model.klass.name.underscore
160
+ model_name_plural = query.underscore_name(:plural)
98
161
 
99
- partials << build_search_result_path(options[:as]) if options[:as]
100
- partials << build_search_result_path(model_name)
101
- partials << build_search_result_path(:result)
162
+ partials << build_search_results_path(options[:as]) if options[:as]
163
+ partials << build_search_results_path(model_name_plural)
164
+ partials << build_search_results_path(:results)
102
165
  return partials
103
166
  end
104
167
 
105
- def RenderHelpers.search_box_partials(klass, options)
168
+ def RenderHelpers.search_results_options(query, options = {})
169
+ options[:locals] ||= {}
170
+ options[:locals][:query] = query
171
+ return options
172
+ end
173
+
174
+ def RenderHelpers.build_search_results_path(partial)
175
+ return build_path("search_results", partial)
176
+ end
177
+
178
+
179
+
180
+ def RenderHelpers.search_box_partials(klass, options = {})
106
181
  partials = []
107
182
  # <options[:as]>
108
183
  # ransack_search_box
@@ -112,30 +187,21 @@ module Upmin::Railties
112
187
  return partials
113
188
  end
114
189
 
115
-
116
- def RenderHelpers.build_model_path(partial_name, prefix = "")
117
- return "#{root_path}/models/#{prefix}#{partial_name}"
190
+ def RenderHelpers.search_box_options(klass, options = {})
191
+ options[:locals] ||= {}
192
+ options[:locals][:klass] = klass
193
+ return options
118
194
  end
119
195
 
120
- def RenderHelpers.build_attribute_path(partial_name)
121
- return "#{root_path}/attributes/#{partial_name}"
196
+ def RenderHelpers.build_search_box_path(partial)
197
+ return build_path("search_boxes", partial)
122
198
  end
123
199
 
124
- def RenderHelpers.build_action_path(partial_name)
125
- partial_name = partial_name.to_s.gsub(/[!?]/, "")
126
- return "#{root_path}/actions/#{partial_name}"
127
- end
128
200
 
129
- def RenderHelpers.build_association_path(partial_name)
130
- return "#{root_path}/associations/#{partial_name}"
131
- end
132
-
133
- def RenderHelpers.build_search_result_path(partial_name)
134
- return "#{root_path}/search_results/#{partial_name}"
135
- end
136
201
 
137
- def RenderHelpers.build_search_box_path(partial_name)
138
- return "#{root_path}/search_boxes/#{partial_name}"
202
+ def RenderHelpers.build_path(folder, partial)
203
+ partial = partial.to_s.gsub(/[!?]/, "")
204
+ "#{root_path}/#{folder}/#{partial}"
139
205
  end
140
206
 
141
207
  def RenderHelpers.root_path