From c9e9ef1a89b7589031a4f97517d6e5dc5636fcc7 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 17 Jun 2014 21:15:36 +0100 Subject: [PATCH] Rewrite layer parameters in shortlinks correctly Fixes #762 --- app/controllers/site_controller.rb | 6 +++++- test/controllers/site_controller_test.rb | 2 +- test/integration/short_links_test.rb | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index e9ec292e8..df11a275a 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -17,7 +17,7 @@ class SiteController < ApplicationController def permalink lon, lat, zoom = ShortLink::decode(params[:code]) - new_params = params.except(:code, :lon, :lat, :zoom, :node, :way, :relation, :changeset) + new_params = params.except(:code, :lon, :lat, :zoom, :layers, :node, :way, :relation, :changeset) if new_params.has_key? :m new_params.delete :m @@ -48,6 +48,10 @@ class SiteController < ApplicationController new_params[:anchor] = "map=#{zoom}/#{lat}/#{lon}" + if params.has_key? :layers + new_params[:anchor] += "&layers=#{params[:layers]}" + end + redirect_to new_params end diff --git a/test/controllers/site_controller_test.rb b/test/controllers/site_controller_test.rb index 86a92490a..07587bc4d 100644 --- a/test/controllers/site_controller_test.rb +++ b/test/controllers/site_controller_test.rb @@ -119,7 +119,7 @@ class SiteControllerTest < ActionController::TestCase get :permalink, :code => 'wBz3--', :layers => 'T' assert_response :redirect - assert_redirected_to :controller => :site, :action => :index, :layers => 'T', :anchor => 'map=3/4.8779296875/3.955078125' + assert_redirected_to :controller => :site, :action => :index, :anchor => 'map=3/4.8779296875/3.955078125&layers=T' get :permalink, :code => 'wBz3--', :node => 1 assert_response :redirect diff --git a/test/integration/short_links_test.rb b/test/integration/short_links_test.rb index b36082cac..d1a6937cb 100644 --- a/test/integration/short_links_test.rb +++ b/test/integration/short_links_test.rb @@ -25,9 +25,9 @@ class ShortLinksTest < ActionDispatch::IntegrationTest # test with layers and a marker get '/go/' + short_link + "?m&layers=B000FTF" - assert_redirected_to :controller => 'site', :action => 'index', :mlat => lat.to_s, :mlon => lon.to_s, :layers => "B000FTF", :anchor => anchor + assert_redirected_to :controller => 'site', :action => 'index', :mlat => lat.to_s, :mlon => lon.to_s, :anchor => "#{anchor}&layers=B000FTF" get '/go/' + short_link + "?layers=B000FTF&m" - assert_redirected_to :controller => 'site', :action => 'index', :mlat => lat.to_s, :mlon => lon.to_s, :layers => "B000FTF", :anchor => anchor + assert_redirected_to :controller => 'site', :action => 'index', :mlat => lat.to_s, :mlon => lon.to_s, :anchor => "#{anchor}&layers=B000FTF" # test with some random query parameters we haven't even implemented yet get '/go/' + short_link + "?foobar=yes" -- 2.43.2