diff --git a/app/models/issue.rb b/app/models/issue.rb
index f267f3f48..d6d6c7c8b 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -2050,6 +2050,7 @@ class Issue < ActiveRecord::Base
tracker.disabled_core_fields.each do |attribute|
send "#{attribute}=", nil
end
+ self.priority_id ||= IssuePriority.default&.id || IssuePriority.active.first.id
self.done_ratio ||= 0
end
end
diff --git a/app/models/tracker.rb b/app/models/tracker.rb
index da39ae934..ce476092d 100644
--- a/app/models/tracker.rb
+++ b/app/models/tracker.rb
@@ -20,11 +20,11 @@
class Tracker < ActiveRecord::Base
include Redmine::SafeAttributes
- CORE_FIELDS_UNDISABLABLE = %w(project_id tracker_id subject priority_id is_private).freeze
+ CORE_FIELDS_UNDISABLABLE = %w(project_id tracker_id subject is_private).freeze
# Fields that can be disabled
# Other (future) fields should be appended, not inserted!
CORE_FIELDS =
- %w(assigned_to_id category_id fixed_version_id parent_issue_id
+ %w(priority_id assigned_to_id category_id fixed_version_id parent_issue_id
start_date due_date estimated_hours done_ratio description).freeze
CORE_FIELDS_ALL = (CORE_FIELDS_UNDISABLABLE + CORE_FIELDS).freeze
diff --git a/app/views/issues/show.html.erb b/app/views/issues/show.html.erb
index c7cd5689c..6f0a0a984 100644
--- a/app/views/issues/show.html.erb
+++ b/app/views/issues/show.html.erb
@@ -47,8 +47,10 @@
<%= issue_fields_rows do |rows|
rows.left l(:field_status), @issue.status.name, :class => 'status'
- rows.left l(:field_priority), @issue.priority.name, :class => 'priority'
+ unless @issue.disabled_core_fields.include?('priority_id')
+ rows.left l(:field_priority), @issue.priority.name, :class => 'priority'
+ end
unless @issue.disabled_core_fields.include?('assigned_to_id')
rows.left l(:field_assigned_to), (@issue.assigned_to ? link_to_principal(@issue.assigned_to) : "-"), :class => 'assigned-to'
end
diff --git a/test/functional/trackers_controller_test.rb b/test/functional/trackers_controller_test.rb
index 24bd3bff3..218397ca5 100644
--- a/test/functional/trackers_controller_test.rb
+++ b/test/functional/trackers_controller_test.rb
@@ -209,6 +209,9 @@ class TrackersControllerTest < Redmine::ControllerTest
assert_select 'input[name=?][value=category_id]', 'tracker[core_fields][]'
assert_select 'input[name=?][value=category_id][checked=checked]', 'tracker[core_fields][]', 0
+ assert_select 'input[name=?][value=priority_id]', 'tracker[core_fields][]'
+ assert_select 'input[name=?][value=priority_id][checked=checked]', 'tracker[core_fields][]', 0
+
assert_select 'input[name=?][value=""][type=hidden]', 'tracker[core_fields][]'
end
diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
index 08bc50df8..188230022 100644
--- a/test/unit/issue_test.rb
+++ b/test/unit/issue_test.rb
@@ -83,6 +83,16 @@ class IssueTest < ActiveSupport::TestCase
assert_save issue
end
+ def test_default_priority_should_be_set_when_priority_field_is_disabled
+ tracker = Tracker.find(1)
+ tracker.core_fields = tracker.core_fields - ['priority_id']
+ tracker.save!
+
+ issue = Issue.new(:project_id => 1, :tracker_id => tracker.id, :author_id => 1, :subject => 'priority_id is disabled')
+ issue.save!
+ assert_equal IssuePriority.default, issue.priority
+ end
+
def test_start_date_format_should_be_validated
set_language_if_valid 'en'
['2012', 'ABC', '2012-15-20'].each do |invalid_date|