From 41ff1b9cb2648eab0c8d67b074de81efe1eabb78 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Sat, 19 Jun 2010 22:52:15 +0000 Subject: [PATCH] Display the correct ISO week number on the project calendar. http://en.wikipedia.org/wiki/ISO_week Contributed by Holger Just git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3790 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/views/common/_calendar.rhtml | 2 +- test/functional/calendars_controller_test.rb | 44 ++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/app/views/common/_calendar.rhtml b/app/views/common/_calendar.rhtml index d0cf2a07a..14d26badd 100644 --- a/app/views/common/_calendar.rhtml +++ b/app/views/common/_calendar.rhtml @@ -6,7 +6,7 @@ <% day = calendar.startdt while day <= calendar.enddt %> -<%= "#{day.cweek}" if day.cwday == calendar.first_wday %> +<%= "#{(day+(11-day.cwday)%7).cweek}" if day.cwday == calendar.first_wday %>

<%= day.day %>

<% calendar.events_on(day).each do |i| %> diff --git a/test/functional/calendars_controller_test.rb b/test/functional/calendars_controller_test.rb index fa07fdd47..79cfe28a0 100644 --- a/test/functional/calendars_controller_test.rb +++ b/test/functional/calendars_controller_test.rb @@ -17,4 +17,48 @@ class CalendarsControllerTest < ActionController::TestCase assert_not_nil assigns(:calendar) end + def test_week_number_calculation + Setting.start_of_week = 7 + + get :show, :month => '1', :year => '2010' + assert_response :success + + assert_tag :tag => 'tr', + :descendant => {:tag => 'td', + :attributes => {:class => 'week-number'}, :content => '53'}, + :descendant => {:tag => 'td', + :attributes => {:class => 'odd'}, :content => '27'}, + :descendant => {:tag => 'td', + :attributes => {:class => 'even'}, :content => '2'} + + assert_tag :tag => 'tr', + :descendant => {:tag => 'td', + :attributes => {:class => 'week-number'}, :content => '1'}, + :descendant => {:tag => 'td', + :attributes => {:class => 'odd'}, :content => '3'}, + :descendant => {:tag => 'td', + :attributes => {:class => 'even'}, :content => '9'} + + + Setting.start_of_week = 1 + get :show, :month => '1', :year => '2010' + assert_response :success + + assert_tag :tag => 'tr', + :descendant => {:tag => 'td', + :attributes => {:class => 'week-number'}, :content => '53'}, + :descendant => {:tag => 'td', + :attributes => {:class => 'even'}, :content => '28'}, + :descendant => {:tag => 'td', + :attributes => {:class => 'even'}, :content => '3'} + + assert_tag :tag => 'tr', + :descendant => {:tag => 'td', + :attributes => {:class => 'week-number'}, :content => '1'}, + :descendant => {:tag => 'td', + :attributes => {:class => 'even'}, :content => '4'}, + :descendant => {:tag => 'td', + :attributes => {:class => 'even'}, :content => '10'} + + end end