From 0e20ec697b828fd3fd2e1987fff66d28df134365 Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Sun, 19 May 2013 01:06:25 +0000 Subject: [PATCH] set default issue start/due datepicker from due/start date (#14024) git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11883 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/application_helper.rb | 8 +++++--- public/javascripts/datepicker.js | 16 ++++++++++++++++ test/ui/issues_test.rb | 16 ++++++++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 public/javascripts/datepicker.js diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 751550118..fbf14b3d1 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1075,6 +1075,7 @@ module ApplicationHelper def include_calendar_headers_tags unless @calendar_headers_tags_included + tags = javascript_include_tag("datepicker") @calendar_headers_tags_included = true content_for :header_tags do start_of_week = Setting.start_of_week @@ -1082,12 +1083,13 @@ module ApplicationHelper # Redmine uses 1..7 (monday..sunday) in settings and locales # JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0 start_of_week = start_of_week.to_i % 7 - - tags = javascript_tag( + tags << javascript_tag( "var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: #{start_of_week}, " + "showOn: 'button', buttonImageOnly: true, buttonImage: '" + path_to_image('/images/calendar.png') + - "', showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true, changeMonth: true, changeYear: true};") + "', showButtonPanel: true, showWeek: true, showOtherMonths: true, " + + "selectOtherMonths: true, changeMonth: true, changeYear: true, " + + "beforeShow: beforeShowDatePicker};") jquery_locale = l('jquery.locale', :default => current_language.to_s) unless jquery_locale == 'en' tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js") diff --git a/public/javascripts/datepicker.js b/public/javascripts/datepicker.js new file mode 100644 index 000000000..9acae0cd4 --- /dev/null +++ b/public/javascripts/datepicker.js @@ -0,0 +1,16 @@ +function beforeShowDatePicker(input, inst) { + var default_date = null; + switch ($(input).attr("id")) { + case "issue_start_date" : + if ($("#issue_due_date").size() > 0) { + default_date = $("#issue_due_date").val(); + } + break; + case "issue_due_date" : + if ($("#issue_start_date").size() > 0) { + default_date = $("#issue_start_date").val(); + } + break; + } + $(input).datepicker("option", "defaultDate", default_date); +} diff --git a/test/ui/issues_test.rb b/test/ui/issues_test.rb index df25f8b9c..1f9ba457b 100644 --- a/test/ui/issues_test.rb +++ b/test/ui/issues_test.rb @@ -147,6 +147,22 @@ class Redmine::UiTest::IssuesTest < Redmine::UiTest::Base end end + def test_create_issue_start_due_date_default + log_user('jsmith', 'jsmith') + visit '/projects/ecookbook/issues/new' + fill_in 'Start date', :with => '2012-04-01' + fill_in 'Due date', :with => '' + page.first('p#due_date_area img').click + page.first("td.ui-datepicker-days-cell-over a").click + assert_equal '2012-04-01', page.find('input#issue_due_date').value + + fill_in 'Start date', :with => '' + fill_in 'Due date', :with => '2012-04-01' + page.first('p#start_date_area img').click + page.first("td.ui-datepicker-days-cell-over a").click + assert_equal '2012-04-01', page.find('input#issue_start_date').value + end + def test_preview_issue_description log_user('jsmith', 'jsmith') visit '/projects/ecookbook/issues/new'