summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2019-06-07 09:40:12 +0000
committerGo MAEDA <maeda@farend.jp>2019-06-07 09:40:12 +0000
commita12a6f6c3ec9634ee5f2a00a0db10b9966aaa8fc (patch)
treed0b38889e8ad8bac3610598c0655c1ac7bbf12e7
parent048601bdf354b747013ed291ced972c5359a85dc (diff)
downloadredmine-a12a6f6c3ec9634ee5f2a00a0db10b9966aaa8fc.tar.gz
redmine-a12a6f6c3ec9634ee5f2a00a0db10b9966aaa8fc.zip
Show "Due in X days" in issue details page (#31499).
Patch by Go MAEDA. git-svn-id: http://svn.redmine.org/redmine/trunk@18236 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/helpers/issues_helper.rb7
-rw-r--r--app/views/issues/show.html.erb2
-rw-r--r--test/helpers/issues_helper_test.rb19
3 files changed, 27 insertions, 1 deletions
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 0df257d37..cfdb15ad1 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -176,6 +176,13 @@ module IssuesHelper
end
end
+ def issue_due_date_details(issue)
+ return if issue&.due_date.nil?
+ s = format_date(issue.due_date)
+ s += " (#{due_date_distance_in_words(issue.due_date)})" unless issue.closed?
+ s
+ end
+
# Returns a link for adding a new subtask to the given issue
def link_to_new_subtask(issue)
attrs = {
diff --git a/app/views/issues/show.html.erb b/app/views/issues/show.html.erb
index eade4da7b..6c0018f24 100644
--- a/app/views/issues/show.html.erb
+++ b/app/views/issues/show.html.erb
@@ -59,7 +59,7 @@
rows.right l(:field_start_date), format_date(@issue.start_date), :class => 'start-date'
end
unless @issue.disabled_core_fields.include?('due_date')
- rows.right l(:field_due_date), format_date(@issue.due_date), :class => 'due-date'
+ rows.right l(:field_due_date), issue_due_date_details(@issue), :class => 'due-date'
end
unless @issue.disabled_core_fields.include?('done_ratio')
rows.right l(:field_done_ratio), progress_bar(@issue.done_ratio, :legend => "#{@issue.done_ratio}%"), :class => 'progress'
diff --git a/test/helpers/issues_helper_test.rb b/test/helpers/issues_helper_test.rb
index 0880bc0e7..076b51b7f 100644
--- a/test/helpers/issues_helper_test.rb
+++ b/test/helpers/issues_helper_test.rb
@@ -331,4 +331,23 @@ class IssuesHelperTest < Redmine::HelperTest
def test_find_name_by_reflection_should_return_nil_for_missing_record
assert_nil find_name_by_reflection('status', 99)
end
+
+ def test_issue_due_date_details
+ travel_to DateTime.parse('2019-06-01') do
+ issue = Issue.generate!
+
+ # due date is not set
+ assert_nil issue_due_date_details(issue)
+
+ # due date is set
+ issue.due_date = 5.days.from_now
+ issue.save!
+ assert_equal '06/06/2019 (Due in 5 days)', issue_due_date_details(issue)
+
+ # Don't show "Due in X days" if the issue is closed
+ issue.status = IssueStatus.find_by_is_closed(true)
+ issue.save!
+ assert_equal '06/06/2019', issue_due_date_details(issue)
+ end
+ end
end