Skip Menu |

This queue is for tickets about the RTx-Calendar CPAN distribution.

Report information
The Basics
Id: 57642
Status: new
Priority: 0/
Queue: RTx-Calendar

People
Owner: Nobody in particular
Requestors: ivan-pause [...] 420.am
Cc:
AdminCc:

Bug Information
Severity: Wishlist
Broken in: 0.12
Fixed in: (no value)



Subject: [patch] configure Sunday -> Saturday weeks
This patch changes the week row in month view from "Monday -> Sunday" to the more common "Sunday -> Saturday". I kept the support for "Monday -> Sunday" weeks (and also added "Saturday -> Friday" weeks), but didn't know whether to make the choice into an RT::SiteConfig option, a user pref or what, so the patch just has my $weekstart = 'Sunday'
Subject: RTx-Calendar.dayofweek.patch
Index: lib/RTx/Calendar.pm =================================================================== RCS file: /home/cvs/cvsroot/freeside/rt/lib/RTx/Calendar.pm,v retrieving revision 1.1 diff -u -r1.1 Calendar.pm --- lib/RTx/Calendar.pm 19 May 2010 02:32:00 -0000 1.1 +++ lib/RTx/Calendar.pm 19 May 2010 19:01:46 -0000 @@ -1,33 +1,36 @@ package RTx::Calendar; use strict; +use base qw( Exporter ); use DateTime; use DateTime::Set; our $VERSION = "0.07"; -sub FirstMonday { - my ($year, $month) = (shift, shift); +our @EXPORT_OK = qw( FirstDay LastDay ); + +sub FirstDay { + my ($year, $month, $matchday) = @_; my $set = DateTime::Set->from_recurrence( next => sub { $_[0]->truncate( to => 'day' )->subtract( days => 1 ) } ); my $day = DateTime->new( year => $year, month => $month ); - $day = $set->next($day) while $day->day_of_week != 1; + $day = $set->next($day) while $day->day_of_week != $matchday; $day; } -sub LastSunday { - my ($year, $month) = (shift, shift); +sub LastDay { + my ($year, $month, $matchday) = @_; my $set = DateTime::Set->from_recurrence( next => sub { $_[0]->truncate( to => 'day' )->add( days => 1 ) } ); my $day = DateTime->last_day_of_month( year => $year, month => $month ); - $day = $set->next($day) while $day->day_of_week != 7; + $day = $set->next($day) while $day->day_of_week != $matchday; $day; } Index: share/html/Search/Calendar.html =================================================================== RCS file: /home/cvs/cvsroot/freeside/rt/share/html/Search/Calendar.html,v retrieving revision 1.1 diff -u -r1.1 Calendar.html --- share/html/Search/Calendar.html 19 May 2010 02:32:01 -0000 1.1 +++ share/html/Search/Calendar.html 19 May 2010 19:01:46 -0000 @@ -46,7 +46,7 @@ <thead> <tr> <th></th> -% for (1 .. 6, 0) { +% for ( @{$week{$weekstart}} ) { <th width="14%"><%$rtdate->GetWeekday($_)%></th> % } </tr> @@ -54,7 +54,7 @@ <tbody> <tr> % while ($date <= $end) { -% if ( $date->day_of_week == 1) { +% if ( $date->day_of_week == $startday_of_week ) { <th><% $date->week_number %></th> % } <td class="<% $date->month != ($Month + 1) ? 'oddline' : '' %>" @@ -66,7 +66,7 @@ % } </td> % $date = $set->next($date); -% if ( $date->day_of_week == 1) { +% if ( $date->day_of_week == $startday_of_week ) { </tr><tr> % } % } @@ -125,7 +125,7 @@ </html> <%INIT> -use RTx::Calendar; +use RTx::Calendar qw(FirstDay LastDay); my $title = loc("Calendar"); @@ -133,9 +133,18 @@ my $rtdate = RT::Date->new($session{'CurrentUser'}); +my $weekstart = 'Sunday'; #RT::SiteConfig? user pref? +my %week = ( + 'Saturday' => [6,0..5], + 'Sunday' => [0..6], + 'Monday' => [1..6,0], +); +my $startday_of_week = ${$week{$weekstart}}[0] || 7; +my $endday_of_week = ${$week{$weekstart}}[-1] || 7; + my $today = DateTime->today; -my $date = RTx::Calendar::FirstMonday($Year, $Month + 1); -my $end = RTx::Calendar::LastSunday($Year, $Month + 1); +my $date = FirstDay($Year, $Month + 1, $startday_of_week ); +my $end = LastDay ($Year, $Month + 1, $endday_of_week ); # use this to loop over days until $end my $set = DateTime::Set->from_recurrence(