From 55d3967e1c623232800043f20e24cc0eddf50c4d Mon Sep 17 00:00:00 2001 From: MAEDA Go Date: Wed, 26 Aug 2026 12:04:15 +0900 Subject: [PATCH] Cannot deselect current user in multi-select user custom field without also deselecting "<< me >>" --- lib/redmine/field_format.rb | 9 ++++++++- .../redmine/field_format/user_field_format_test.rb | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/redmine/field_format.rb b/lib/redmine/field_format.rb index 46ada2817..201c7b53f 100644 --- a/lib/redmine/field_format.rb +++ b/lib/redmine/field_format.rb @@ -876,7 +876,14 @@ module Redmine def possible_values_options(custom_field, object=nil) users = possible_values_records(custom_field, object) options = users.map {|u| [u.name, u.id.to_s]} - options = [["<< #{l(:label_me)} >>", User.current.id]] + options if users.include?(User.current) + if users.include?(User.current) + if custom_field.multiple? + options.delete([User.current.name, User.current.id.to_s]) + options = [["#{User.current.name} << #{l(:label_me)} >>", User.current.id.to_s]] + options + else + options = [["<< #{l(:label_me)} >>", User.current.id.to_s]] + options + end + end options end diff --git a/test/unit/lib/redmine/field_format/user_field_format_test.rb b/test/unit/lib/redmine/field_format/user_field_format_test.rb index 9f34d47bb..6178dd1d5 100644 --- a/test/unit/lib/redmine/field_format/user_field_format_test.rb +++ b/test/unit/lib/redmine/field_format/user_field_format_test.rb @@ -84,6 +84,17 @@ class Redmine::UserFieldFormatTest < ActionView::TestCase assert_equal ['<< me >>', 'Dave Lopper', 'John Smith'], field.possible_values_options(project).map(&:first) end + def test_possible_values_options_for_multiple_custom_field_should_not_duplicate_current_user + ::I18n.locale = 'en' + User.current = User.find(2) + field = IssueCustomField.new(:field_format => 'user', :multiple => true) + project = Project.find(1) + + options = field.possible_values_options(project) + assert_equal ['John Smith << me >>', 'Dave Lopper'], options.map(&:first) + assert_equal [User.current.id.to_s], options.filter_map {|label, value| value if label.include?('John Smith')} + end + def test_value_from_keyword_should_return_user_id field = IssueCustomField.new(:field_format => 'user') project = Project.find(1) -- 2.55.0