From 2027b8750aa8f6432cf58fc5b0f8bf15ef8a03d8 Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Thu, 15 Apr 2021 01:03:18 +0000 Subject: [PATCH] Prevent hash type URLs from being namespaced in MenuManager (#35076). Patch by Jan Schulz-Hofen. git-svn-id: http://svn.redmine.org/redmine/trunk@20945 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/menu_manager.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/redmine/menu_manager.rb b/lib/redmine/menu_manager.rb index 16315a725..6378b19ba 100644 --- a/lib/redmine/menu_manager.rb +++ b/lib/redmine/menu_manager.rb @@ -180,14 +180,14 @@ module Redmine url = '#' options.reverse_merge!(:onclick => 'return false;') end - link_to(h(caption), url, options) + link_to(h(caption), use_absolute_controller(url), options) end def render_unattached_menu_item(menu_item, project) raise MenuError, ":child_menus must be an array of MenuItems" unless menu_item.is_a? MenuItem if menu_item.allowed?(User.current, project) - link_to(menu_item.caption, menu_item.url, menu_item.html_options) + link_to(menu_item.caption, use_absolute_controller(menu_item.url), menu_item.html_options) end end @@ -232,6 +232,15 @@ module Redmine node.allowed?(user, project) end + + # Prevent hash type URLs (e.g. {controller: 'foo', action: 'bar}) from being namespaced + # when menus are rendered from views in namespaced controllers in plugins or engines + def use_absolute_controller(url) + if url.is_a?(Hash) && url[:controller].present? && !url[:controller].start_with?('/') + url[:controller] = "/#{url[:controller]}" + end + url + end end class << self -- 2.39.5