From 8c2b30cf4fbf5faeeb134778840720d13bd1df14 Mon Sep 17 00:00:00 2001 From: kumojima Date: Wed, 17 Dec 2025 11:51:33 +0900 Subject: show delete link in context menu with sub-uri --- app/controllers/context_menus_controller.rb | 7 ++++++- .../context_menus_controller_test.rb | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/controllers/context_menus_controller.rb b/app/controllers/context_menus_controller.rb index bb9e5d82f..8c591025d 100644 --- a/app/controllers/context_menus_controller.rb +++ b/app/controllers/context_menus_controller.rb @@ -49,7 +49,12 @@ class ContextMenusController < ApplicationController begin # Recognize the controller and action from the back_url to determine # which view triggered the context menu. - route = Rails.application.routes.recognize_path(@back) + if relative_url_root.present? && @back&.starts_with?(relative_url_root) + back = @back.delete_prefix(relative_url_root) + else + back = @back + end + route = Rails.application.routes.recognize_path(back) @include_delete = [ {controller: 'issues', action: 'index'}, diff --git a/test/functional/context_menus_controller_test.rb b/test/functional/context_menus_controller_test.rb index 74a7155ff..b91d9dcce 100644 --- a/test/functional/context_menus_controller_test.rb +++ b/test/functional/context_menus_controller_test.rb @@ -492,6 +492,24 @@ class ContextMenusControllerTest < Redmine::ControllerTest end end + def test_context_menu_with_suburi_should_include_delete_for_allowed_back_urls + @relative_url_root = Redmine::Utils.relative_url_root + Redmine::Utils.relative_url_root = '/redmine' + + @request.session[:user_id] = 2 + %w[ + /redmine/issues + /redmine/projects/ecookbook/issues/gantt + /redmine/projects/ecookbook/issues/calendar + ].each do |back_url| + get :issues, :params => { :ids => [1], :back_url => back_url } + assert_response :success + assert_select 'a.icon-del', :text => /Delete/ + end + ensure + Redmine::Utils.relative_url_root = @relative_url_root + end + def test_context_menu_should_not_include_delete_for_disallowed_back_urls @request.session[:user_id] = 2 %w[ -- 2.34.1