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
This commit is contained in:
parent
06c0e5ad1c
commit
5823a71c18
|
@ -34,25 +34,11 @@ module ApplicationHelper
|
||||||
# Display a link if user is authorized
|
# Display a link if user is authorized
|
||||||
#
|
#
|
||||||
# @param [String] name Anchor text (passed to link_to)
|
# @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).
|
# @param [Hash] options Hash params. This will checked by authorize_for to see if the user is authorized
|
||||||
# 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] html_options Options passed to link_to
|
||||||
# @param [optional, Hash] parameters_for_method_reference Extra parameters for 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)
|
def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference)
|
||||||
if options.is_a?(String)
|
link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
|
||||||
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)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Display a link to remote if user is authorized
|
# Display a link to remote if user is authorized
|
||||||
|
|
|
@ -49,15 +49,6 @@ class ApplicationHelperTest < ActionView::TestCase
|
||||||
assert_match /href/, response
|
assert_match /href/, response
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
def test_auto_links
|
def test_auto_links
|
||||||
|
|
Loading…
Reference in New Issue