From: ivan Date: Wed, 19 May 2010 19:04:52 +0000 (+0000) Subject: week view on calendars from Sunday -> Saturday X-Git-Tag: root_of_svc_elec_features~266 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=d5933aea7be7beddc995fb35cdd034231d2c515f week view on calendars from Sunday -> Saturday --- diff --git a/rt/lib/RTx/Calendar.pm b/rt/lib/RTx/Calendar.pm index 515bd4810..20568e853 100644 --- a/rt/lib/RTx/Calendar.pm +++ b/rt/lib/RTx/Calendar.pm @@ -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; } diff --git a/rt/share/html/Search/Calendar.html b/rt/share/html/Search/Calendar.html index e711b861c..e5a1c28a5 100644 --- a/rt/share/html/Search/Calendar.html +++ b/rt/share/html/Search/Calendar.html @@ -46,7 +46,7 @@ $NewQuery => 0 -% for (1 .. 6, 0) { +% for ( @{$week{$weekstart}} ) { <%$rtdate->GetWeekday($_)%> % } @@ -54,7 +54,7 @@ $NewQuery => 0 % while ($date <= $end) { -% if ( $date->day_of_week == 1) { +% if ( $date->day_of_week == $startday_of_week ) { <% $date->week_number %> % } 0 % } % $date = $set->next($date); -% if ( $date->day_of_week == 1) { +% if ( $date->day_of_week == $startday_of_week ) { % } % } @@ -125,7 +125,7 @@ $NewQuery => 0 <%INIT> -use RTx::Calendar; +use RTx::Calendar qw(FirstDay LastDay); my $title = loc("Calendar"); @@ -133,9 +133,18 @@ my @DateTypes = qw/Created Starts Started Due LastUpdated Resolved/; 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(