]> source.dussan.org Git - redmine.git/commitdiff
Display the correct ISO week number on the project calendar.
authorEric Davis <edavis@littlestreamsoftware.com>
Sat, 19 Jun 2010 22:52:15 +0000 (22:52 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Sat, 19 Jun 2010 22:52:15 +0000 (22:52 +0000)
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
test/functional/calendars_controller_test.rb

index d0cf2a07a2a6920fd64bab18ca426152241f1577..14d26badd221e695fb70ebe8f7959660bab72caf 100644 (file)
@@ -6,7 +6,7 @@
 <tr>
 <% day = calendar.startdt
 while day <= calendar.enddt %>
-<%= "<td class='week-number' title='#{ l(:label_week) }'>#{day.cweek}</td>" if day.cwday == calendar.first_wday %>
+<%= "<td class='week-number' title='#{ l(:label_week) }'>#{(day+(11-day.cwday)%7).cweek}</td>" if day.cwday == calendar.first_wday %>
 <td class="<%= day.month==calendar.month ? 'even' : 'odd' %><%= ' today' if Date.today == day %>">
 <p class="day-num"><%= day.day %></p>  
 <% calendar.events_on(day).each do |i| %>
index fa07fdd47f89add8139188a87edfbfce6de45c36..79cfe28a04409afa4ca933dcf85b430d939f1dd9 100644 (file)
@@ -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