]> source.dussan.org Git - redmine.git/commitdiff
Setting to disable automatic closing of duplicates (#26192).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 25 Jun 2017 11:40:58 +0000 (11:40 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 25 Jun 2017 11:40:58 +0000 (11:40 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@16697 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue.rb
app/views/settings/_issues.html.erb
config/locales/en.yml
config/locales/fr.yml
config/settings.yml
test/unit/issue_test.rb

index 33e6bf2234d21ce9a625291ad6bf3c607729257d..f984e03320338861f25ab9596335fcb81c16a958 100644 (file)
@@ -1798,7 +1798,7 @@ class Issue < ActiveRecord::Base
 
   # Closes duplicates if the issue is being closed
   def close_duplicates
-    if closing?
+    if Setting.close_duplicate_issues? && closing?
       duplicates.each do |duplicate|
         # Reload is needed in case the duplicate was updated by a previous duplicate
         duplicate.reload
index f29a6d4ec158f5ea5fe67b1fd7e3a1017b8d016f..17e8ca99ba5026472103cfff30aa50b9af0adbb3 100644 (file)
@@ -7,6 +7,8 @@
 
 <p><%= setting_select :cross_project_subtasks, cross_project_subtasks_options %></p>
 
+<p><%= setting_check_box :close_duplicate_issues %></p>
+
 <p><%= setting_check_box :issue_group_assignment %></p>
 
 <p><%= setting_check_box :default_issue_start_date_to_creation_date %></p>
index df57a57f301330426c384d2b4643740d131d42e3..50a003f84023b429e647af3b22b803537f153902 100644 (file)
@@ -462,6 +462,7 @@ en:
   setting_new_item_menu_tab: Project menu tab for creating new objects
   setting_commit_logs_formatting: Apply text formatting to commit messages
   setting_timelog_required_fields: Required fields for time logs
+  setting_close_duplicate_issues: Close duplicate issues automatically
 
   permission_add_project: Create project
   permission_add_subprojects: Create subprojects
index dea9e3e0998ffe8593966ef064d4714f3d69bb5c..48226cfb0ed3ae63aa848a46e116f86b8cc851f5 100644 (file)
@@ -474,6 +474,7 @@ fr:
   setting_new_item_menu_tab: Onglet de création d'objets dans le menu du project
   setting_commit_logs_formatting: Appliquer le formattage de texte aux messages de commit
   setting_timelog_required_fields: Champs obligatoire pour les temps passés
+  setting_close_duplicate_issues: Fermer les doublons automatiquement
 
   permission_add_project: Créer un projet
   permission_add_subprojects: Créer des sous-projets
index 7520d8e8447da2f1f67e879c8cd190cc27f08fd1..baf2b92c47a7b5030d9b2c6a0247f470342e2d8d 100644 (file)
@@ -173,6 +173,8 @@ parent_issue_done_ratio:
   default: 'derived'
 link_copied_issue:
   default: 'ask'
+close_duplicate_issues:
+  default: 1
 issue_group_assignment:
   default: 0
 default_issue_start_date_to_creation_date:
index 82c1a272068ce088ee1d42705095ab1cf0bfa572..df242a1692ab3dba809385364bf0057868a4151a 100644 (file)
@@ -1436,6 +1436,23 @@ class IssueTest < ActiveSupport::TestCase
     assert issue3.reload.closed?
   end
 
+  def test_should_not_close_duplicate_when_disabled
+    issue = Issue.generate!
+    duplicate = Issue.generate!
+
+    IssueRelation.create!(:issue_from => duplicate, :issue_to => issue,
+                          :relation_type => IssueRelation::TYPE_DUPLICATES)
+    assert issue.reload.duplicates.include?(duplicate)
+
+    with_settings :close_duplicate_issues => '0' do
+      issue.init_journal(User.first, "Closing issue")
+      issue.status = IssueStatus.where(:is_closed => true).first
+      issue.save
+    end
+
+    assert !duplicate.reload.closed?
+  end
+
   def test_should_close_duplicates_with_private_notes
     issue = Issue.generate!
     duplicate = Issue.generate!