Rewrite layer parameters in shortlinks correctly
authorTom Hughes <tom@compton.nu>
Tue, 17 Jun 2014 20:15:36 +0000 (21:15 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 17 Jun 2014 20:15:36 +0000 (21:15 +0100)
Fixes #762

app/controllers/site_controller.rb
test/controllers/site_controller_test.rb
test/integration/short_links_test.rb

index e9ec292e8968fee8ba4db1519029963604551e97..df11a275aeae34eae7516b3ed91f3720d6ea53c7 100644 (file)
@@ -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
 
index 86a92490ac067fb5ee9ad10b43938c1088119f7a..07587bc4da428f6d4cfefb4084a80d3a90e2dc9b 100644 (file)
@@ -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
index b36082caca91b64a5084f18bb957bac5f15ed0f6..d1a6937cb56bb78ce8bd78e1c109dccaaa316d19 100644 (file)
@@ -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"