On 12/13/2011 10:18 AM, ifarkas(a)redhat.com wrote:
From: Imre Farkas<ifarkas(a)redhat.com>
https://bugzilla.redhat.com/show_bug.cgi?id=758653
---
src/app/controllers/application_controller.rb | 11 +++++++++++
src/app/controllers/catalogs_controller.rb | 4 +---
src/app/controllers/deployables_controller.rb | 4 +---
src/app/controllers/deployments_controller.rb | 4 +---
.../controllers/hardware_profiles_controller.rb | 4 +---
src/app/controllers/instances_controller.rb | 4 +---
src/app/controllers/pools_controller.rb | 5 +----
.../controllers/provider_accounts_controller.rb | 4 +---
src/app/controllers/realms_controller.rb | 4 +---
src/app/controllers/users_controller.rb | 4 +---
10 files changed, 20 insertions(+), 28 deletions(-)
diff --git a/src/app/controllers/application_controller.rb
b/src/app/controllers/application_controller.rb
index 16fa71d..df2a0fc 100644
--- a/src/app/controllers/application_controller.rb
+++ b/src/app/controllers/application_controller.rb
@@ -349,4 +349,15 @@ class ApplicationController< ActionController::Base
(ordered_languages& I18n.available_locales).first
end
+
+ def redirect_to_original(extended_params = {})
+ original_path = params[:current_path]
+ # In cases when current_path contains prefix like '/conductor'
recognize_path fails.
+ # It needs to be stripped out in order to get the path correctly.
+ path = original_path.split(ENV['RAILS_RELATIVE_URL_ROOT']).last
I'm a bit worried about this ^^^. RAILS_RELATIVE_URL_ROOT can be
anything the admins who deploy Conductor set it out to be. And if that
prefix happens to be repeated in the path, this won't work.
How about something like this instead:
root = ENV['RAILS_RELATIVE_URL_ROOT']
path = path.slice(root.length..path.length) if path.start_with? root
It's a tad longer but more robust.
+ path = Rails.application.routes.recognize_path(path)
+ original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
+ redirect_to path.merge(original_params).merge(extended_params)
+ end
+
end
diff --git a/src/app/controllers/catalogs_controller.rb
b/src/app/controllers/catalogs_controller.rb
index c530a6a..1f92d3b 100644
--- a/src/app/controllers/catalogs_controller.rb
+++ b/src/app/controllers/catalogs_controller.rb
@@ -99,9 +99,7 @@ class CatalogsController< ApplicationController
end
def filter
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("catalogs_preset_filter" =>
params[:catalogs_preset_filter], "catalogs_search" =>
params[:catalogs_search])
+ redirect_to_original({"catalogs_preset_filter" =>
params[:catalogs_preset_filter], "catalogs_search" =>
params[:catalogs_search]})
end
private
diff --git a/src/app/controllers/deployables_controller.rb
b/src/app/controllers/deployables_controller.rb
index 19306d2..f909947 100644
--- a/src/app/controllers/deployables_controller.rb
+++ b/src/app/controllers/deployables_controller.rb
@@ -187,9 +187,7 @@ class DeployablesController< ApplicationController
end
def filter
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("catalog_entries_preset_filter" =>
params[:catalog_entries_preset_filter], "catalog_entries_search" =>
params[:catalog_entries_search])
+ redirect_to_original({"catalog_entries_preset_filter" =>
params[:catalog_entries_preset_filter], "catalog_entries_search" =>
params[:catalog_entries_search]})
end
def build
diff --git a/src/app/controllers/deployments_controller.rb
b/src/app/controllers/deployments_controller.rb
index ebaaf7a..3ca38c3 100644
--- a/src/app/controllers/deployments_controller.rb
+++ b/src/app/controllers/deployments_controller.rb
@@ -317,9 +317,7 @@ class DeploymentsController< ApplicationController
end
def filter
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("deployments_preset_filter" =>
params[:deployments_preset_filter], "deployments_search" =>
params[:deployments_search])
+ redirect_to_original({"deployments_preset_filter" =>
params[:deployments_preset_filter], "deployments_search" =>
params[:deployments_search]})
end
private
diff --git a/src/app/controllers/hardware_profiles_controller.rb
b/src/app/controllers/hardware_profiles_controller.rb
index e490adb..8773d6a 100644
--- a/src/app/controllers/hardware_profiles_controller.rb
+++ b/src/app/controllers/hardware_profiles_controller.rb
@@ -150,9 +150,7 @@ class HardwareProfilesController< ApplicationController
end
def filter
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("hardware_profiles_preset_filter"
=> params[:hardware_profiles_preset_filter], "hardware_profiles_search"
=> params[:hardware_profiles_search])
+ redirect_to_original({"hardware_profiles_preset_filter" =>
params[:hardware_profiles_preset_filter], "hardware_profiles_search" =>
params[:hardware_profiles_search]})
end
private
diff --git a/src/app/controllers/instances_controller.rb
b/src/app/controllers/instances_controller.rb
index 9ae96a2..5979a1c 100644
--- a/src/app/controllers/instances_controller.rb
+++ b/src/app/controllers/instances_controller.rb
@@ -179,9 +179,7 @@ class InstancesController< ApplicationController
end
def filter
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("instances_preset_filter" =>
params[:instances_preset_filter], "instances_search" =>
params[:instances_search])
+ redirect_to_original({"instances_preset_filter" =>
params[:instances_preset_filter], "instances_search" =>
params[:instances_search]})
end
private
diff --git a/src/app/controllers/pools_controller.rb
b/src/app/controllers/pools_controller.rb
index 3918d14..7e4503a 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -234,10 +234,7 @@ class PoolsController< ApplicationController
end
def filter
- #redirects to path of the table view medged with filter and search params
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("pools_preset_filter" =>
params[:pools_preset_filter], "pools_search" => params[:pools_search])
+ redirect_to_original({"pools_preset_filter" =>
params[:pools_preset_filter], "pools_search" => params[:pools_search]})
end
protected
diff --git a/src/app/controllers/provider_accounts_controller.rb
b/src/app/controllers/provider_accounts_controller.rb
index 43bcd86..d66a6d5 100644
--- a/src/app/controllers/provider_accounts_controller.rb
+++ b/src/app/controllers/provider_accounts_controller.rb
@@ -184,9 +184,7 @@ class ProviderAccountsController< ApplicationController
end
def filter
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("provider_accounts_preset_filter"
=> params[:provider_accounts_preset_filter], "provider_accounts_search"
=> params[:provider_accounts_search])
+ redirect_to_original({"provider_accounts_preset_filter" =>
params[:provider_accounts_preset_filter], "provider_accounts_search" =>
params[:provider_accounts_search]})
end
protected
diff --git a/src/app/controllers/realms_controller.rb
b/src/app/controllers/realms_controller.rb
index 4b0ef96..c0e01d4 100644
--- a/src/app/controllers/realms_controller.rb
+++ b/src/app/controllers/realms_controller.rb
@@ -129,9 +129,7 @@ class RealmsController< ApplicationController
end
def filter
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("realms_preset_filter" =>
params[:realms_preset_filter], "realms_search" => params[:realms_search])
+ redirect_to_original({"realms_preset_filter" =>
params[:realms_preset_filter], "realms_search" => params[:realms_search]})
end
protected
diff --git a/src/app/controllers/users_controller.rb
b/src/app/controllers/users_controller.rb
index d9cf8c9..0af28e7 100644
--- a/src/app/controllers/users_controller.rb
+++ b/src/app/controllers/users_controller.rb
@@ -135,9 +135,7 @@ class UsersController< ApplicationController
end
def filter
- original_path = Rails.application.routes.recognize_path(params[:current_path])
- original_params =
Rack::Utils.parse_nested_query(URI.parse(params[:current_path]).query)
- redirect_to
original_path.merge(original_params).merge("users_preset_filter" =>
params[:users_preset_filter], "users_search" => params[:users_search])
+ redirect_to_original({"users_preset_filter" =>
params[:users_preset_filter], "users_search" => params[:users_search]})
end
protected
Nice one, ACK. Before pushing, see a small nit inline please.
Thomas
--
No trees were killed to send this message, but a large number of
electrons were terribly inconvenienced.