<div class="ticket-overview">
<&|/Widgets/TitleBox, title => $title, bodyclass => "" &>
<table border="0" cellspacing="0" cellpadding="1" width="100%" class="queue-summary">
<tr>
<th class="collection-as-table"><% loc($Field || $Role) %></th>
% for my $status (@statuses) {
<th class="collection-as-table"><% loc($status) %></th>
% }
</tr>
<%PERL>
my $i = 0;
for my $uinfo (sort { $display{$a} cmp $display{$b} } keys %table) {
my $user_cond = $Role . (
$Field
? ".$Field". ( length $uinfo ? " = '$uinfo'" : " IS NULL" )
: " = $uinfo"
);
my $all_q = "$user_cond AND ($status_cond)";
$i++;
$m->out('<tr class="'. ($i%2 ? 'oddline' : 'evenline') .'" >' );
</%PERL>
<td><a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% $all_q |uhn %>" title=""><% $display{$uinfo} |n %></a></td>
% for my $status (@statuses) {
% if ( my $count = $table{$uinfo}{$status} ) {
% my $cond = "$user_cond AND Status = '$status'";
<td align="right"><a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% $cond |uhn %>"><% $count %></a></td>
% } else {
<td align="right">-</td>
% }
% }
</tr>
% }
</table>
</&>
</div>
<%ARGS>
$Role => 'Owner'
$Field => undef
</%ARGS>
<%INIT>
my $title;
if ( $Role eq 'Owner' ) {
$title = loc('Summary by owner');
} elsif ( $Role eq 'Creator' ) {
$title = loc('Summary by creator');
} elsif ( $Role eq 'Requestor' ) {
$title = loc('Summary by requestor');
} elsif ( $Role eq 'Cc' ) {
$title = loc('Summary by cc');
} elsif ( $Role eq 'AdminCc' ) {
$title = loc('Summary by admin cc');
} else {
$RT::Logger->error("Unknown role '$Role'");
return;
}
$Field = undef if $Field && ($Field eq 'Name' || $Field eq 'EmailAddress');
$title .= ' ('. loc($Field) .')' if $Field;
my @statuses = RT::Queue->ActiveStatusArray;
my $status_cond = join 'OR', map "Status = '$_'", @statuses;
use RT::Report::Tickets;
my $tix = RT::Report::Tickets->new( $session{'CurrentUser'} );
my ($count_field, $user_field, $status_field) = $tix->SetupGroupings(
Query => $status_cond,
GroupBy => [ $Role .'.'. ($Field || 'id'), 'Status' ],
);
my (%table, %display) = ();
while ( my $entry = $tix->Next ) {
my $uinfo = $entry->__Value( $user_field );
$uinfo = '' unless defined $uinfo;
unless ( $display{ $uinfo } ) {
unless ( $Field ) {
my $user = RT::User->new( $RT::SystemUser );
$user->Load( $uinfo );
unless ( $user->id ) {
$RT::Logger->error( "Couldn't load user $uinfo");
next;
}
$display{$uinfo} = $m->scomp('/Elements/ShowUser', User => $user );
} else {
$display{$uinfo} = $uinfo;
$display{$uinfo} = loc('(no value)') unless length $uinfo;
}
}
my $status = $entry->__Value( $status_field );
my $count = $entry->__Value( $count_field );
$table{$uinfo}{$status} = $count;
}
</%INIT>