From 47841829d81dc9475d34dd716220744c284e7f82 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 15 Feb 2014 12:42:52 +0000 Subject: [PATCH] Improve redirection of shortlinks If a shortlink includes an object reference then redirect to a new style browse URL for that object. Fixes #702 --- app/controllers/site_controller.rb | 25 ++++++++++++++++++++++--- test/functional/site_controller_test.rb | 16 ++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 779ea1a88..5597fd4ae 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) + new_params = params.except(:code, :lon, :lat, :zoom, :node, :way, :relation, :changeset) if new_params.has_key? :m new_params.delete :m @@ -25,8 +25,27 @@ class SiteController < ApplicationController new_params[:mlon] = lon end - new_params[:controller] = 'site' - new_params[:action] = 'index' + if params.has_key? :node + new_params[:controller] = 'browse' + new_params[:action] = 'node' + new_params[:id] = params[:node] + elsif params.has_key? :way + new_params[:controller] = 'browse' + new_params[:action] = 'way' + new_params[:id] = params[:way] + elsif params.has_key? :relation + new_params[:controller] = 'browse' + new_params[:action] = 'relation' + new_params[:id] = params[:relation] + elsif params.has_key? :changeset + new_params[:controller] = 'browse' + new_params[:action] = 'changeset' + new_params[:id] = params[:changeset] + else + new_params[:controller] = 'site' + new_params[:action] = 'index' + end + new_params[:anchor] = "map=#{zoom}/#{lat}/#{lon}" redirect_to new_params diff --git a/test/functional/site_controller_test.rb b/test/functional/site_controller_test.rb index f2dab3404..78fde62d7 100644 --- a/test/functional/site_controller_test.rb +++ b/test/functional/site_controller_test.rb @@ -112,6 +112,22 @@ class SiteControllerTest < ActionController::TestCase get :permalink, :code => 'wBz3--' assert_response :redirect assert_redirected_to :controller => :site, :action => :index, :anchor => 'map=3/4.8779296875/3.955078125' + + get :permalink, :code => 'wBz3--', :node => 1 + assert_response :redirect + assert_redirected_to :controller => :browse, :action => :node, :id => 1, :anchor => 'map=3/4.8779296875/3.955078125' + + get :permalink, :code => 'wBz3--', :way => 2 + assert_response :redirect + assert_redirected_to :controller => :browse, :action => :way, :id => 2, :anchor => 'map=3/4.8779296875/3.955078125' + + get :permalink, :code => 'wBz3--', :relation => 3 + assert_response :redirect + assert_redirected_to :controller => :browse, :action => :relation, :id => 3, :anchor => 'map=3/4.8779296875/3.955078125' + + get :permalink, :code => 'wBz3--', :changeset => 4 + assert_response :redirect + assert_redirected_to :controller => :browse, :action => :changeset, :id => 4, :anchor => 'map=3/4.8779296875/3.955078125' end # Test the key page -- 2.43.2