<& /Elements/Header, Title => $title, Refresh => $session{'tickets_refresh_interval'} || RT->Config->Get('SearchResultsRefreshInterval', $session{'CurrentUser'} ), &> % if ( $m->comp_exists( '/Ticket/Elements/Tabs' ) ) { <& /Ticket/Elements/Tabs, Title => $title, Query => $ARGS{Query}, &> % } else { <& /Elements/Tabs &> %# this space is to make following elements a bit lower to avoid overlap %#   % }
<%init> my $title = loc('JSGantt Results'); my @Tickets; my %options; if ( RT->Config->Get('JSGanttOptions') ) { %options = RT->Config->Get('JSGanttOptions'); } if ( $Ticket ) { @Tickets = RT::Extension::JSGantt->AllRelatedTickets( Ticket => $Ticket, CurrentUser => $session{CurrentUser}, ); } elsif ($Query) { my $Tickets = RT::Tickets->new( $session{'CurrentUser'} ); $Tickets->FromSQL($Query); if ( $OrderBy =~ /\|/ ) { # Multiple Sorts my @OrderBy = split /\|/, $OrderBy; my @Order = split /\|/, $Order; $Tickets->OrderByCols( map { { FIELD => $OrderBy[$_], ORDER => $Order[$_] } } ( 0 .. $#OrderBy ) ); } else { $Tickets->OrderBy( FIELD => $OrderBy, ORDER => $Order ); } @Tickets = @{ $Tickets->ItemsArrayRef }; } my ( $ids, $info ) = RT::Extension::JSGantt->TicketsInfo( Tickets => \@Tickets, CurrentUser => $session{CurrentUser}, ); <%args> $Query => undef $OrderBy => 'id' $Order => 'ASC' $Ticket => undef