<%args> $Queue => undef $OwnerId => undef $ShowCreated => undef $ShowResolved => undef $Month => (localtime)[4] $Year => (localtime)[5] + 1900 <& /Elements/Header, Title => $title &> <& /Tools/Elements/Tabs, current_tab => "Tools/Calendar.html", Title => $title &> <&| /Widgets/TitleBox, title => loc('Calendar for ') . $rtdate->GetMonth($Month) . " $Year" , title_class=> 'inverse', color => "#993333" &> % my @options; % my $options = ''; % if ($ShowCreated) { % push @options, "ShowCreated=$ShowCreated"; % } % if ($ShowResolved) { % push @options, "ShowResolved=$ShowResolved"; % } % if ($OwnerId) { % push @options, "OwnerId=$OwnerId"; % } % if ($Queue) { % push @options, "Queue=$Queue"; % } % $options = "&" . join("&", @options) if @options;
% my ($PMonth, $PYear) = ($Month - 1, $Year); % if ($PMonth < 0) { % $PYear--; % $PMonth = 11; % } «<%$rtdate->GetMonth($PMonth)%> % my ($NMonth, $NYear) = ($Month + 1, $Year); % if ($NMonth > 11) { % $NYear++; % $NMonth = 0; % } <%$rtdate->GetMonth($NMonth)%>»
% for (1 .. 6, 0) { % } % while ($date <= $end) { % if ( $date->day_of_week == 1) { % } % my @DayTickets; % if ($ShowCreated) { % @DayTickets = grep { $_->DueObj->Date eq $date->strftime("%F") or $_->CreatedObj->Date eq $date->strftime("%F") } @Tickets; % } else { % @DayTickets = grep { $_->DueObj->Date eq $date->strftime("%F") } @Tickets; % } % $date = $set->next($date); % if ( $date->day_of_week == 1) { % } % }
<%$rtdate->GetWeekday($_)%>
<% $date->week_number %>

<%$date->day%>

% for my $t (@DayTickets) {
% if ($t->DueObj->Date eq $date->strftime("%F") and $t->CreatedObj->Date eq $date->strftime("%F") ) { % } elsif ($t->DueObj->Date eq $date->strftime("%F")) { % } elsif ($t->CreatedObj->Date eq $date->strftime("%F")) { % } <% $t->QueueObj->Name %> #<% $t->Id %> <% length($t->Subject) > 80 ? substr($t->Subject, 0, 77) . "..." : $t->Subject %>
<&|/l&>Subject: <% $t->Subject%>
<&|/l&>Owner: <%$t->OwnerObj->Name %>
<&|/l&>Created: <%$t->CreatedObj->Date %>
<&|/l&>Due: <% $t->DueObj->Unix > 0 ? $t->DueObj->Date : '-' %>
<&|/l&>Status: <%$t->Status %>
<&|/l&>Priority: <%$t->Priority %>
<&|/l&>Requestors: % my $members = $t->Requestors->MembersObj; % if ($members->Count == 0) { <&|/l&>none % } else { % my @requestors; % while (my $watcher = $members->Next) { % push @requestors, $watcher->MemberObj->Object->Name; % } <% join ", ", @requestors %> % }
% }

<&|/l&>Queue: <& /Elements/SelectQueue, Name => 'Queue', Default => $ARGS{'Queue'} &>
<&|/l&>Owner: <& /Elements/SelectOwner, Name => "OwnerId", Default => $ARGS{'OwnerId'} &>
% my $year = (localtime)[5] + 1900;
<&|/l&>Show Created: />
<&|/l&>Show Resolved: /> <& /Elements/Submit&>
: <&|/l&>Created
: <&|/l&>Due
: <&|/l&>Created, <&|/l&>Due
<%INIT> use RTx::Calendar; my $title = loc("Calendar"); my $rtdate = RT::Date->new($session{'CurrentUser'}); my $today = DateTime->today; my $date = RTx::Calendar::FirstMonday($Year, $Month + 1); my $end = RTx::Calendar::LastSunday($Year, $Month + 1); # use this to loop over days until $end my $set = DateTime::Set->from_recurrence( next => sub { $_[0]->truncate( to => 'day' )->add( days => 1 ) } ); my %already_seen; my @Tickets; my @date_limits = qw/LimitDue/; push @date_limits, "LimitCreated" if $ShowCreated; for my $date_type (@date_limits) { my $Tickets = RT::Tickets->new($session{'CurrentUser'}); $Tickets->LimitStatus( VALUE => 'open' ); $Tickets->LimitStatus ( VALUE => 'new'); $Tickets->LimitStatus ( VALUE => 'stalled'); $Tickets->LimitStatus ( VALUE => 'resolved') if $ShowResolved; $Tickets->LimitQueue(VALUE => $Queue) if $Queue; $Tickets->LimitOwner(VALUE => $OwnerId) if $OwnerId; $Tickets->$date_type(OPERATOR => ">=", VALUE => $date->strftime("%F") ); $Tickets->$date_type(OPERATOR => "<=", VALUE => $end->strftime("%F") ); while ( my $Ticket = $Tickets->Next()) { push @Tickets, $Ticket unless $already_seen{$Ticket->Id}++; } }