From: Eric Davis Date: Fri, 15 Oct 2010 23:11:00 +0000 (+0000) Subject: Revert part of r4064. X-Git-Tag: 1.1.0~278 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5823a71c1851a331a8a28c1255809efe4386fe0d;p=redmine.git Revert part of r4064. Having link_to_if_authorized support urls has too many edge cases and isn't working with sub-uris. #6195 #6513 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4257 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 6ba40eb45..e2255da30 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -34,25 +34,11 @@ module ApplicationHelper # Display a link if user is authorized # # @param [String] name Anchor text (passed to link_to) - # @param [Hash, String] options Hash params or url for the link target (passed to link_to). - # This will checked by authorize_for to see if the user is authorized + # @param [Hash] options Hash params. This will checked by authorize_for to see if the user is authorized # @param [optional, Hash] html_options Options passed to link_to # @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference) - if options.is_a?(String) - begin - route = ActionController::Routing::Routes.recognize_path(options.gsub(/\?.*/,''), :method => options[:method] || :get) - link_controller = route[:controller] - link_action = route[:action] - rescue ActionController::RoutingError # Parse failed, not a route - link_controller, link_action = nil, nil - end - else - link_controller = options[:controller] || params[:controller] - link_action = options[:action] - end - - link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(link_controller, link_action) + link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action]) end # Display a link to remote if user is authorized diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb index 2906ec6e4..d44bc0045 100644 --- a/test/unit/helpers/application_helper_test.rb +++ b/test/unit/helpers/application_helper_test.rb @@ -49,15 +49,6 @@ class ApplicationHelperTest < ActionView::TestCase assert_match /href/, response end - should "allow using the url for the target link" do - User.current = User.find_by_login('admin') - - @project = Issue.first.project # Used by helper - response = link_to_if_authorized("By url", - new_issue_move_path(:id => Issue.first.id)) - assert_match /href/, response - end - end def test_auto_links