Feature #24808 » 0002-Prevent-hash-type-URLs-from-being-namespaced-in-Menu.patch
| lib/redmine/menu_manager.rb | ||
|---|---|---|
| 180 | 180 | 
    url = '#'  | 
| 181 | 181 | 
    options.reverse_merge!(:onclick => 'return false;')  | 
| 182 | 182 | 
    end  | 
| 183 | 
            link_to(h(caption), url, options)
   | 
|
| 183 | 
            link_to(h(caption), use_absolute_controller(url), options)
   | 
|
| 184 | 184 | 
    end  | 
| 185 | 185 | |
| 186 | 186 | 
    def render_unattached_menu_item(menu_item, project)  | 
| 187 | 187 | 
    raise MenuError, ":child_menus must be an array of MenuItems" unless menu_item.is_a? MenuItem  | 
| 188 | 188 | |
| 189 | 189 | 
    if menu_item.allowed?(User.current, project)  | 
| 190 | 
              link_to(menu_item.caption, menu_item.url, menu_item.html_options)
   | 
|
| 190 | 
              link_to(menu_item.caption, use_absolute_controller(menu_item.url), menu_item.html_options)
   | 
|
| 191 | 191 | 
    end  | 
| 192 | 192 | 
    end  | 
| 193 | 193 | |
| ... | ... | |
| 229 | 229 | 
    raise MenuError, ":child_menus must be an array of MenuItems" unless node.is_a? MenuItem  | 
| 230 | 230 | 
    node.allowed?(user, project)  | 
| 231 | 231 | 
    end  | 
| 232 | ||
| 233 | 
          # Prevent hash type URLs (e.g. {controller: 'foo', action: 'bar}) from being namespaced
   | 
|
| 234 | 
    # when menus are rendered from views in namespaced controllers in plugins or engines  | 
|
| 235 | 
    def use_absolute_controller(url)  | 
|
| 236 | 
            if url.is_a?(Hash) && url[:controller].present? && !url[:controller].start_with?('/')
   | 
|
| 237 | 
              url[:controller] = "/#{url[:controller]}"
   | 
|
| 238 | 
    end  | 
|
| 239 | 
    url  | 
|
| 240 | 
    end  | 
|
| 232 | 241 | 
    end  | 
| 233 | 242 | |
| 234 | 243 | 
    class << self  |