hobo 2.0.1 → 2.1.0.pre1
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.
- checksums.yaml +7 -0
- data/CHANGES-2.1.markdown +57 -0
- data/Gemfile +1 -1
- data/VERSION +1 -1
- data/app/helpers/hobo_permissions_helper.rb +1 -1
- data/app/helpers/hobo_route_helper.rb +10 -79
- data/config/routes.rb +2 -2
- data/hobo.gemspec +1 -1
- data/lib/generators/hobo/admin_subsite/admin_subsite_generator.rb +3 -1
- data/lib/generators/hobo/controller.rb +4 -1
- data/lib/generators/hobo/front_controller/front_controller_generator.rb +7 -6
- data/lib/generators/hobo/i18n/templates/hobo.en.yml +2 -1
- data/lib/generators/hobo/i18n/templates/hobo.es.yml +1 -0
- data/lib/generators/hobo/i18n/templates/hobo.ru.yml +1 -0
- data/lib/generators/hobo/routes/router.rb +5 -3
- data/lib/generators/hobo/routes/templates/hobo_routes.rb.erb +0 -36
- data/lib/generators/hobo/setup_wizard/setup_wizard_generator.rb +2 -2
- data/lib/hobo.rb +2 -2
- data/lib/hobo/controller.rb +1 -1
- data/lib/hobo/controller/model.rb +4 -4
- data/lib/hobo/extensions/active_record/associations/association.rb +1 -1
- data/lib/hobo/extensions/active_record/associations/scope.rb +6 -5
- data/lib/hobo/extensions/active_record/relation_with_origin.rb +9 -7
- data/lib/hobo/model.rb +1 -2
- data/lib/hobo/model/accessible_associations.rb +4 -5
- data/lib/hobo/model/permissions.rb +7 -6
- data/lib/hobo/model/scopes.rb +1 -3
- data/lib/hobo/model/scopes/apply_scopes.rb +3 -3
- data/test/irt/generators/admin_subsite.irt +6 -0
- metadata +17 -39
- data/test/doctest/hobo/multi_model_forms.rdoctest +0 -260
- data/test/doctest/hobo/scopes.rdoctest +0 -375
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5de6d624783c705dfe7dd66c79518ebc2ec68b3f
|
4
|
+
data.tar.gz: 634bf9f6c3831df42e818c03fe46a45d0a8e5255
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 78ea8f82e5ac95ddcc3085afd7cce6ac1f1d01f499b8b589ab3f2ab1e55111d7671b9e5c735ed8754c7755463b160982a68eceb3847e01549cb407c36205fb07
|
7
|
+
data.tar.gz: df53268326185eef5f0cea67c8fe7773a7dc0f9d5883e823aa0a911bf8cf78680e20221dadc1658a9ebcc7bdcd04e12697e09056ec98484b8870cc33d96d98f8
|
@@ -0,0 +1,57 @@
|
|
1
|
+
Hobo 2.1 Changes
|
2
|
+
{: .document-title}
|
3
|
+
|
4
|
+
Documents the changes made in Hobo 2.1 and the changes required to
|
5
|
+
migrate applications to Hobo 2.1
|
6
|
+
|
7
|
+
Contents
|
8
|
+
{: .contents-heading}
|
9
|
+
|
10
|
+
- contents
|
11
|
+
{:toc}
|
12
|
+
|
13
|
+
# Updating from a Hobo 2.0 application to Hobo 2.1
|
14
|
+
|
15
|
+
Meta tags: note for collaborators. A meta-tag looks like this {.done}. It's added after a paragraph with no blank spaces. The tags that we support are: {.ruby} {.javascript} {.dryml} and {.diff} for code highlighting. {.todo}, {.done}, {.check}, {.part} and {.nomove} indicate documentation progress moving into the Hobo manuals. {.check} means that it's probably done. {.part} means that it's partly done. {.nomove} means that this section only needs to exist in this CHANGES document. Finally, {.hidden} is used for paragraphs like this one that shouldn't show up on the website.
|
16
|
+
{.hidden}
|
17
|
+
|
18
|
+
{.nomove}
|
19
|
+
|
20
|
+
Many of the changes required in upgrading a Hobo 2.0 application are necessitated by the switch from Rails 3.2 to 4.0. [Railscasts has a good guide to upgrading to Rails 4.0](http://railscasts.com/episodes/415-upgrading-to-rails-4).
|
21
|
+
|
22
|
+
From Hobo's point of view, you shouldn't need to change almost anything :).
|
23
|
+
|
24
|
+
## Gemfile
|
25
|
+
|
26
|
+
Now Hobo uses "will_paginate_hobo" gem, instead of the git repository "git://github.com/Hobo/will_paginate.git". This should make it easier to install in systems without Git installed (users have reported problems with Windows and Git).
|
27
|
+
|
28
|
+
You also need to add the `protected_attributes` gem to your Gemfile.
|
29
|
+
|
30
|
+
|
31
|
+
# Internal changes
|
32
|
+
|
33
|
+
In order to make Hobo compatible with Rails 4, these are the main changes that have been done:
|
34
|
+
|
35
|
+
## Routing
|
36
|
+
|
37
|
+
* `url_for` does not accept parameters any more
|
38
|
+
* Remove deprecated routes system
|
39
|
+
* `match` is no longer accepted in routes.rb, it has been replaced by "get" and "post"
|
40
|
+
|
41
|
+
## ActiveRecord
|
42
|
+
|
43
|
+
* `Model.find(:all)` is deprecated
|
44
|
+
* `finder.scoped :conditions => conditions` has been replaced with `finder.where(conditions)`
|
45
|
+
* raise_on_type_mismatch has been renamed to raise_on_type_mismatch!
|
46
|
+
|
47
|
+
## Other
|
48
|
+
* `protected_attributes` gem has been added to support the "old" way of protecting attributes
|
49
|
+
* Domizio has made Hobo thread safe :)
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
# Running the integration tests:
|
54
|
+
|
55
|
+
The integration tests in the "agility_bootstrap" folder have been updated for Hobo 2.1 and Rails 4.
|
56
|
+
|
57
|
+
see https://github.com/tablatom/hobo/integration_tests/agility_bootstrap/README
|
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.1.0.pre1
|
@@ -38,7 +38,7 @@ module HoboPermissionsHelper
|
|
38
38
|
|
39
39
|
def can_edit?(*args)
|
40
40
|
object, field = if args.empty?
|
41
|
-
if this.respond_to?(:editable_by?) && !this_field_reflection
|
41
|
+
if !this.respond_to?(:to_a) && this.respond_to?(:editable_by?) && !this_field_reflection
|
42
42
|
[this, nil]
|
43
43
|
elsif this_parent && this_field
|
44
44
|
[this_parent, this_field]
|
@@ -1,13 +1,8 @@
|
|
1
1
|
module HoboRouteHelper
|
2
|
+
include Rails.application.routes.url_helpers
|
2
3
|
extend HoboHelperBase
|
3
4
|
def object_url(obj, *args)
|
4
5
|
new_ = object_url_new(obj, *args)
|
5
|
-
|
6
|
-
unless Rails.configuration.hobo.dont_emit_deprecated_routes
|
7
|
-
old_ = object_url_old(obj, *args)
|
8
|
-
debugger if old_ != new_
|
9
|
-
Rails.logger.debug "new style url #{new_} does not match old style url #{old_}. obj: #{obj.inspect}. args: #{args.inspect}. backtrace: #{caller.inspect}" if old_ != new_
|
10
|
-
end
|
11
6
|
new_
|
12
7
|
end
|
13
8
|
|
@@ -31,64 +26,6 @@ module HoboRouteHelper
|
|
31
26
|
|
32
27
|
IMPLICIT_ACTIONS = [:index, :show, :create, :update, :destroy]
|
33
28
|
|
34
|
-
def object_url_old(obj, *args)
|
35
|
-
params = args.extract_options!
|
36
|
-
action = args.first._?.to_sym
|
37
|
-
options, params = params.partition_hash([:subsite, :method, :format])
|
38
|
-
options[:subsite] ||= self.subsite
|
39
|
-
subsite, method = options.get :subsite, :method
|
40
|
-
|
41
|
-
if obj.respond_to?(:member_class) && obj.respond_to?(:origin) && obj.origin
|
42
|
-
# Asking for URL of a collection, e.g. category/1/adverts or category/1/adverts/new
|
43
|
-
|
44
|
-
refl = obj.origin.class.reverse_reflection(obj.origin_attribute)
|
45
|
-
owner_name = refl.name.to_s
|
46
|
-
owner_name = owner_name.singularize if refl.macro == :has_many
|
47
|
-
if action == :new
|
48
|
-
action_path = "#{obj.origin_attribute}/new"
|
49
|
-
action = :"new_for_#{owner_name}"
|
50
|
-
elsif action.nil?
|
51
|
-
action_path = obj.origin_attribute
|
52
|
-
if method.to_s == 'post'
|
53
|
-
action = :"create_for_#{owner_name}"
|
54
|
-
else
|
55
|
-
action = :"index_for_#{owner_name}"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
klass = obj.member_class
|
59
|
-
obj = obj.origin
|
60
|
-
else
|
61
|
-
action ||= case options[:method].to_s
|
62
|
-
when 'put'; :update
|
63
|
-
when 'post'; :create
|
64
|
-
when 'delete'; :destroy
|
65
|
-
else; obj.is_a?(Class) ? :index : :show
|
66
|
-
end
|
67
|
-
|
68
|
-
if options[:method].to_s == 'post' && obj.try.new_record?
|
69
|
-
# Asking for url to post new record to
|
70
|
-
obj = obj.class
|
71
|
-
end
|
72
|
-
|
73
|
-
klass = if obj.is_a?(Class)
|
74
|
-
obj
|
75
|
-
elsif obj.respond_to?(:member_class)
|
76
|
-
obj.member_class # We get here if we're passed a scoped class
|
77
|
-
else
|
78
|
-
obj.class
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
if Hobo::Routes.linkable?(klass, action, options)
|
83
|
-
|
84
|
-
url = base_url_for(obj, subsite, action)
|
85
|
-
url += "/#{action_path || action}" unless action.in?(IMPLICIT_ACTIONS)
|
86
|
-
|
87
|
-
params = make_params(params)
|
88
|
-
params.blank? ? url : "#{url}?#{params}"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
29
|
def object_url_new(obj, *args)
|
93
30
|
options = args.extract_options!
|
94
31
|
action = args.first._?.to_sym
|
@@ -161,26 +98,20 @@ module HoboRouteHelper
|
|
161
98
|
"#{base_url}#{'/' + subsite unless subsite.blank?}/#{path}"
|
162
99
|
end
|
163
100
|
|
164
|
-
|
165
101
|
def recognize_page_path
|
166
|
-
# round tripping params through the router will remove
|
167
|
-
# unnecessary params
|
168
102
|
if params[:page_path]
|
169
103
|
url = params[:page_path]
|
170
104
|
method = "GET"
|
105
|
+
Rails.application.routes.recognize_path(url, :method => method)
|
171
106
|
else
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
if ENV['RAILS_RELATIVE_URL_ROOT']
|
176
|
-
url.gsub!(/^#{ENV['RAILS_RELATIVE_URL_ROOT']}/, "")
|
177
|
-
url.gsub!(/^https?:\/\/.*?#{ENV['RAILS_RELATIVE_URL_ROOT']}/, "")
|
107
|
+
# We used to use "url_for(params)", but with Rails 4 stopped working
|
108
|
+
# It seems that we can send back the params directly
|
109
|
+
params
|
178
110
|
end
|
179
|
-
Rails.application.routes.recognize_path(url, :method => method)
|
180
111
|
end
|
181
112
|
|
182
113
|
def url_for_page_path(options={})
|
183
|
-
url_for recognize_page_path.merge(options)
|
114
|
+
url_for recognize_page_path.merge(options).merge({:only_path => true})
|
184
115
|
end
|
185
116
|
|
186
117
|
def controller_action_from_page_path
|
@@ -220,19 +151,19 @@ module HoboRouteHelper
|
|
220
151
|
|
221
152
|
# Login url for a given user record or user class
|
222
153
|
def forgot_password_url(user_class=Hobo::Model::UserBase.default_user_model)
|
223
|
-
send("#{user_class.name.underscore}
|
154
|
+
send("#{user_class.name.underscore}_forgot_password_path") rescue nil
|
224
155
|
end
|
225
156
|
|
226
157
|
|
227
158
|
# Login url for a given user record or user class
|
228
159
|
def login_url(user_class=Hobo::Model::UserBase.default_user_model)
|
229
|
-
send("#{user_class.name.underscore}
|
160
|
+
send("#{user_class.name.underscore}_login_path") rescue nil
|
230
161
|
end
|
231
162
|
|
232
163
|
|
233
164
|
# Sign-up url for a given user record or user class
|
234
165
|
def signup_url(user_class=Hobo::Model::UserBase.default_user_model)
|
235
|
-
send("signup_#{user_class.name.underscore.pluralize}
|
166
|
+
send("signup_#{user_class.name.underscore.pluralize}_path") rescue nil
|
236
167
|
end
|
237
168
|
|
238
169
|
|
@@ -245,7 +176,7 @@ module HoboRouteHelper
|
|
245
176
|
else
|
246
177
|
user_or_class.class
|
247
178
|
end
|
248
|
-
send("#{c.name.underscore}
|
179
|
+
send("#{c.name.underscore}_logout_path") rescue nil
|
249
180
|
end
|
250
181
|
|
251
182
|
def new_for_current_user(model_or_assoc=nil)
|
data/config/routes.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
get 'dryml/:action', :controller => 'dryml_support', :as => 'dryml_support'
|
4
|
+
get 'dev/:action', :controller => 'dev', :as => 'dev_support' if Rails.application.config.hobo.developer_features
|
5
5
|
|
6
6
|
end
|
data/hobo.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.add_runtime_dependency('hobo_support', ["= #{version}"])
|
15
15
|
s.add_runtime_dependency('hobo_fields', ["= #{version}"])
|
16
16
|
s.add_runtime_dependency('dryml', ["= #{version}"])
|
17
|
-
s.add_runtime_dependency('
|
17
|
+
s.add_runtime_dependency('hobo_will_paginate')
|
18
18
|
|
19
19
|
s.add_development_dependency('rubydoctest', [">= 1.1.3"])
|
20
20
|
s.add_development_dependency('shoulda', [">= 0"])
|
@@ -16,7 +16,9 @@ module Hobo
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def generate_admin_user_controller
|
19
|
-
|
19
|
+
fixed_options = {:subsite_controller_is_being_created => 1}
|
20
|
+
options.each{|k,v| fixed_options[k] = v}
|
21
|
+
invoke "hobo:controller", ["#{file_name}/#{options[:user_resource_name].pluralize.underscore}"], fixed_options
|
20
22
|
template "users_index.dryml", "app/views/#{file_name}/#{options[:user_resource_name].pluralize.underscore}/index.dryml" if invite_only?
|
21
23
|
end
|
22
24
|
|
@@ -15,7 +15,10 @@ module Generators
|
|
15
15
|
def generate_controller
|
16
16
|
if class_path.length == 1 and
|
17
17
|
subsite = class_path.first and
|
18
|
-
|
18
|
+
(
|
19
|
+
options[:subsite_controller_is_being_created] or
|
20
|
+
File.exist?(File.join('app/controllers', class_path, "#{subsite}_site_controller.rb"))
|
21
|
+
)
|
19
22
|
@subsite = subsite.camelize
|
20
23
|
end
|
21
24
|
template 'controller.rb.erb', File.join('app/controllers',"#{file_path}_controller.rb")
|
@@ -43,15 +43,16 @@ module Hobo
|
|
43
43
|
|
44
44
|
def add_routes
|
45
45
|
return unless options[:add_routes]
|
46
|
-
route "
|
47
|
-
route "
|
48
|
-
route "
|
49
|
-
route "
|
46
|
+
route "get 'search' => '#{file_path}#search', :as => 'site_search'"
|
47
|
+
route "post 'search' => '#{file_path}#search', :as => 'site_search_post'"
|
48
|
+
route "get '#{options[:user_resource_name]}s/:id/activate_from_email/:key' => '#{options[:user_resource_name]}s#activate', :as => 'activate_from_email'"
|
49
|
+
route "get '#{options[:user_resource_name]}s/:id/accept_invitation_from_email/:key' => '#{options[:user_resource_name]}s#accept_invitation', :as => 'accept_invitation_from_email'"
|
50
|
+
route "get '#{options[:user_resource_name]}s/:id/reset_password_from_email/:key' => '#{options[:user_resource_name]}s#reset_password', :as => 'reset_password_from_email'"
|
50
51
|
if class_path.empty?
|
51
52
|
route "root :to => '#{file_path}#index'"
|
52
|
-
route "
|
53
|
+
route "get ENV['RAILS_RELATIVE_URL_ROOT'] => 'front#index' if ENV['RAILS_RELATIVE_URL_ROOT']"
|
53
54
|
else
|
54
|
-
route "
|
55
|
+
route "get '#{file_path}' => '#{file_path}#index', :as => '#{file_path.gsub(/\//,'_')}'"
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
@@ -114,7 +114,7 @@ en:
|
|
114
114
|
update:
|
115
115
|
no_attribute_error: "No update specified in params"
|
116
116
|
success: "Changes to the %{model} were saved"
|
117
|
-
error: "There was a problem with that change
|
117
|
+
error: "There was a problem with that change.\n%{errors}"
|
118
118
|
destroy:
|
119
119
|
success: "The %{model} was deleted"
|
120
120
|
signup:
|
@@ -167,6 +167,7 @@ en:
|
|
167
167
|
table_plus:
|
168
168
|
search: "Search"
|
169
169
|
submit_label: "Go"
|
170
|
+
clear_label: "Clear"
|
170
171
|
|
171
172
|
live_search:
|
172
173
|
label: "Search"
|
@@ -4,7 +4,7 @@ module Generators
|
|
4
4
|
class Router
|
5
5
|
|
6
6
|
# specify that an id CANNOT be null - needed to disambiguate /models from /models/[nil]
|
7
|
-
ID_REQUIREMENT = "{ :id => %r([^#{
|
7
|
+
ID_REQUIREMENT = "{ :id => %r([^#{ActionDispatch::Routing::SEPARATORS.join}]+) }"
|
8
8
|
|
9
9
|
attr_reader :subsite, :controller, :model, :record, :records
|
10
10
|
|
@@ -210,9 +210,11 @@ module Generators
|
|
210
210
|
return [] unless controller < ::Hobo::Controller::UserBase
|
211
211
|
prefix = records == "users" ? "" : "#{record}_"
|
212
212
|
[
|
213
|
-
link("
|
213
|
+
link("post '#{prefix}login(.:format)' => '#{records}#login', :as => '#{record}_login_post'", 'login'),
|
214
|
+
link("get '#{prefix}login(.:format)' => '#{records}#login', :as => '#{record}_login'", 'login'),
|
214
215
|
link("get '#{prefix}logout(.:format)' => '#{records}#logout', :as => '#{record}_logout'", 'logout'),
|
215
|
-
link("
|
216
|
+
link("get '#{prefix}forgot_password(.:format)' => '#{records}#forgot_password', :as => '#{record}_forgot_password'", 'forgot_password'),
|
217
|
+
link("post '#{prefix}forgot_password(.:format)' => '#{records}#forgot_password', :as => '#{record}_forgot_password_post'", 'forgot_password'),
|
216
218
|
].compact
|
217
219
|
end
|
218
220
|
|
@@ -33,40 +33,4 @@
|
|
33
33
|
<%- end -%>
|
34
34
|
<%- end -%>
|
35
35
|
|
36
|
-
<% unless Rails.configuration.hobo.dont_emit_deprecated_routes %>
|
37
|
-
|
38
|
-
# These are the Hobo 1.3 style routes. They've been included for backwards
|
39
|
-
# compatibility reasons because the names of some named routes have been changed.
|
40
|
-
# Please update your views to use the new named route names and then disable this
|
41
|
-
# section by setting config.hobo.dont_emit_deprecated_routes = true. blah blah
|
42
|
-
|
43
|
-
<% puts "Warning: deprecated routes emitted into config/hobo_routes.rb. These will be removed in Hobo 2.1. Disable this warning by setting config.hobo.dont_emit_deprecated_routes = true." unless subsites.blank? %>
|
44
|
-
<% for subsite in subsites -%>
|
45
|
-
<%- if subsite -%>
|
46
|
-
|
47
|
-
<%= "namespace :#{subsite} do" %>
|
48
|
-
<%- end -%>
|
49
|
-
<%- for controller in controllers_for(subsite) -%>
|
50
|
-
<%- router = router_for(subsite, controller)
|
51
|
-
groups = %w[ index_action lifecycle owner web_method show_action reorder resource ] -%>
|
52
|
-
|
53
|
-
<%- for group in groups -%>
|
54
|
-
<%- gr = "#{group}_routes"
|
55
|
-
routes = gr == 'lifecycle_routes' ? router.send(gr.to_sym, subsite) : router.send(gr.to_sym) -%>
|
56
|
-
<%- unless routes.empty? -%>
|
57
|
-
|
58
|
-
<%= " " if subsite %><%= "# DEPRECATED #{gr.humanize} for controller #{controller.controller_path}" %>
|
59
|
-
<%- end -%>
|
60
|
-
<%- for route in routes -%>
|
61
|
-
<%= " " if subsite %><%= route %>
|
62
|
-
<%- end -%>
|
63
|
-
<%- end -%>
|
64
|
-
<%- end -%>
|
65
|
-
<%- if subsite -%>
|
66
|
-
|
67
|
-
end
|
68
|
-
<%- end -%>
|
69
|
-
<%- end -%>
|
70
|
-
|
71
|
-
<%- end -%>
|
72
36
|
end
|
@@ -146,8 +146,8 @@ EOI
|
|
146
146
|
end
|
147
147
|
|
148
148
|
def will_paginate
|
149
|
-
say "Adding
|
150
|
-
gem_with_comments('
|
149
|
+
say "Adding hobo_will_paginate gem"
|
150
|
+
gem_with_comments('hobo_will_paginate', :comments => "\n# Hobo's version of will_paginate is required.")
|
151
151
|
end
|
152
152
|
|
153
153
|
def choose_test_framework
|
data/lib/hobo.rb
CHANGED
@@ -2,9 +2,9 @@ require 'hobo_support'
|
|
2
2
|
require 'hobo_fields'
|
3
3
|
require 'dryml'
|
4
4
|
begin
|
5
|
-
gem '
|
5
|
+
gem 'hobo_will_paginate'
|
6
6
|
rescue Gem::LoadError => e
|
7
|
-
puts "WARNING: unable to activate
|
7
|
+
puts "WARNING: unable to activate hobo_will_paginate. Please add gem \"hobo_will_paginate\" to your Gemfile." if File.exist?("app/views/taglibs/application.dryml")
|
8
8
|
# don't print warning if setup not complete
|
9
9
|
end
|
10
10
|
require 'hobo/extensions/enumerable'
|
data/lib/hobo/controller.rb
CHANGED
@@ -96,7 +96,7 @@ module Hobo
|
|
96
96
|
page << "#{function}(#{dom_id.to_json}, #{part_content.to_json})\n"
|
97
97
|
elsif spec[:result]
|
98
98
|
result = results[spec[:result].to_sym]
|
99
|
-
page << "#{function}(#{dom_id.to_json}, #{result.to_json})
|
99
|
+
page << "#{function}(#{dom_id.to_json}, #{result.to_json});\n"
|
100
100
|
else
|
101
101
|
page << "alert('ajax_update_response: render_spec did not provide action');\n"
|
102
102
|
end
|
@@ -341,7 +341,7 @@ module Hobo
|
|
341
341
|
hash = args.extract_options!
|
342
342
|
db_sort_field = (hash[field] || hash[field.to_sym] || (field if field.in?(args) || field.to_sym.in?(args))).to_s
|
343
343
|
|
344
|
-
|
344
|
+
unless db_sort_field.blank?
|
345
345
|
if db_sort_field == field && field.match(/\./)
|
346
346
|
fields = field.split(".", 2)
|
347
347
|
db_sort_field = "#{fields[0].pluralize}.#{fields[1]}"
|
@@ -692,7 +692,7 @@ module Hobo
|
|
692
692
|
if params[:render]
|
693
693
|
hobo_ajax_response || render(:nothing => true)
|
694
694
|
else
|
695
|
-
|
695
|
+
redirect_to destination_after_submit(this, true, options)
|
696
696
|
end
|
697
697
|
end
|
698
698
|
|
@@ -774,12 +774,12 @@ module Hobo
|
|
774
774
|
|
775
775
|
begin
|
776
776
|
finder = finder.send(options[:query_scope], params[options[:param]])
|
777
|
-
items = finder.
|
777
|
+
items = finder.select { |r| r.viewable_by?(current_user) }
|
778
778
|
rescue TypeError # must be a list of methods instead
|
779
779
|
items = []
|
780
780
|
options[:query_scope].each do |qscope|
|
781
781
|
finder2 = finder.send(qscope, params[options[:param]])
|
782
|
-
items += finder2.
|
782
|
+
items += finder2.all.select { |r| r.viewable_by?(current_user) }
|
783
783
|
end
|
784
784
|
end
|
785
785
|
if request.xhr?
|