<&|/Widgets/TitleBox,
    title => loc("Calendar"),
    title_href => "Tools/Calendar.html" &>

<table class="rtxcalendar">
<thead>
<tr>
% my $date = $begin->clone;
% while ( $date <= $end ) {
<th width="14%"><%$rtdate->GetWeekday($date->day_of_week % 7)%></th>
% $date = $set->next($date);
% }
</tr>
</thead>
<tbody>
<tr>
% $date = $begin->clone;
% while ($date <= $end) {
%   my @DayTickets = grep { $_->DueObj->Date eq $date->strftime("%F") } @Tickets;
<td>
<p class="date"><%$date->day%></p>
% for my $t (@DayTickets) {
<div class="tooltip">
<small><img src="<%$RT::WebImagesURL%>/arrow_to.png" />
	<a href="<%$RT::WebPath%>/Ticket/Display.html?id=<%$t->Id%>">
           <% $t->QueueObj->Name %> #<% $t->Id %>
           <% length($t->Subject) > 80 ? substr($t->Subject, 0, 77) . "..." : $t->Subject %></a></small><br />
	<span class="tip">
	<strong><&|/l&>Subject</&>:</strong> <% $t->Subject%><br />
	<strong><&|/l&>Owner</&>:</strong> <%$t->OwnerObj->Name %><br />
	<strong><&|/l&>Created</&>:</strong> <%$t->CreatedObj->Date %><br />
        <strong><&|/l&>Due</&>:</strong> <% $t->DueObj->Unix > 0 ? $t->DueObj->Date : '-' %><br />
	<strong><&|/l&>Status</&>:</strong> <%$t->Status %><br />
	<strong><&|/l&>Priority</&>:</strong> <%$t->Priority %><br />
	<strong><&|/l&>Requestors</&>:</strong> 
% 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 %>
% }
<br />
	</span>
</div>
% }
</td>
% $date = $set->next($date);
% }
</tr>
</tbody>
</table>

 </&>

<%INIT>

use RTx::Calendar;

my $title = loc("Calendar");

my $rtdate = RT::Date->new($session{'CurrentUser'});

my $today = DateTime->today;
my $begin  = DateTime->today->subtract( days => 3);
my $end   = DateTime->today->add( days => 3);

# 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 $OwnerId = $session{'CurrentUser'}->Id;

my $Tickets = RT::Tickets->new($session{'CurrentUser'});
$Tickets->LimitStatus( VALUE => 'open' );
$Tickets->LimitStatus ( VALUE => 'new');
$Tickets->LimitStatus ( VALUE => 'stalled');

$Tickets->LimitOwner(VALUE => $OwnerId);

$Tickets->LimitDue(OPERATOR => ">=", VALUE => $begin->strftime("%F") );
$Tickets->LimitDue(OPERATOR => "<=", VALUE => $end->strftime("%F") );

while ( my $Ticket = $Tickets->Next()) {
  push @Tickets, $Ticket
    unless $already_seen{$Ticket->Id}++;
}

</%INIT>
