summaryrefslogtreecommitdiff
path: root/rt
diff options
context:
space:
mode:
authorivan <ivan>2010-05-19 19:04:52 +0000
committerivan <ivan>2010-05-19 19:04:52 +0000
commitd5933aea7be7beddc995fb35cdd034231d2c515f (patch)
treebbef4c6faa11cdc44c3b966cd330d173006ecb33 /rt
parent1a7887345cd2dec240533a9323eaf8d858d5fecb (diff)
week view on calendars from Sunday -> Saturday
Diffstat (limited to 'rt')
-rw-r--r--rt/lib/RTx/Calendar.pm15
-rw-r--r--rt/share/html/Search/Calendar.html21
2 files changed, 24 insertions, 12 deletions
diff --git a/rt/lib/RTx/Calendar.pm b/rt/lib/RTx/Calendar.pm
index 515bd48..20568e8 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 e711b86..e5a1c28 100644
--- a/rt/share/html/Search/Calendar.html
+++ b/rt/share/html/Search/Calendar.html
@@ -46,7 +46,7 @@ $NewQuery => 0
<thead>
<tr>
<th></th>
-% for (1 .. 6, 0) {
+% for ( @{$week{$weekstart}} ) {
<th width="14%"><%$rtdate->GetWeekday($_)%></th>
% }
</tr>
@@ -54,7 +54,7 @@ $NewQuery => 0
<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 @@ $NewQuery => 0
% }
</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 @@ $NewQuery => 0
</html>
<%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(