X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FApprovals%2FElements%2FPendingMyApproval;h=9b34b1f81329f46bebdcd654a16ba06e4de8abef;hb=b8988e1d3ac75af63c85e8563e57701030315a9e;hp=e3cdff64d1128bf69e0e1f89ccd3da42e5f8db04;hpb=0fb307c305e4bc2c9c27dc25a3308beae3a4d33c;p=freeside.git diff --git a/rt/share/html/Approvals/Elements/PendingMyApproval b/rt/share/html/Approvals/Elements/PendingMyApproval index e3cdff64d..9b34b1f81 100755 --- a/rt/share/html/Approvals/Elements/PendingMyApproval +++ b/rt/share/html/Approvals/Elements/PendingMyApproval @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -45,13 +45,13 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} - -% while (my $ticket = $tickets->Next() ) { -% next if !$ARGS{'ShowDependent'} and $ticket->HasUnresolvedDependencies( Type => 'approval' ); +% my %done; +% foreach ($tickets, $group_tickets) { +% while (my $ticket = $_->Next() ) { +% next if !$ARGS{'ShowDependent'} and $ticket->HasUnresolvedDependencies( Type => 'approval' ); +% next if $done{$ticket->Id}++; # don't show duplicate tickets <& Approve, ticket => $ticket &> +% } % } <&| /Widgets/TitleBox, title => loc("Search for approvals") &> @@ -63,46 +63,46 @@ /> <&|/l&>Show denied requests
/> <&|/l&>Show requests awaiting other approvals
-<&|/l,""&>Only show approvals for requests created before [_1]
+<&|/l_unsafe, qq{"&>Only show approvals for requests created before [_1]
-<&|/l, ""&>Only show approvals for requests created after [_1] +<&|/l_unsafe, qq{"&>Only show approvals for requests created after [_1] <%init> my $tickets = RT::Tickets->new( $session{'CurrentUser'} ); +$tickets->LimitOwner( VALUE => $session{'CurrentUser'}->Id ); + +# also consider AdminCcs as potential approvers. +my $group_tickets = RT::Tickets->new( $session{'CurrentUser'} ); +$group_tickets->LimitWatcher( VALUE => $session{'CurrentUser'}->EmailAddress, TYPE => 'AdminCc' ); + my $created_before = RT::Date->new( $session{'CurrentUser'} ); my $created_after = RT::Date->new( $session{'CurrentUser'} ); -my @clauses; -push @clauses, - "Owner = '".$session{CurrentUser}->Id."' OR AdminCc = '".$session{CurrentUser}->UserObj->EmailAddress."'"; -push @clauses, "Type = 'approval'"; - -my @statuses; -if ( $ARGS{'ShowResolved'} ) { - push @statuses,'resolved'; -} -if ( $ARGS{'ShowRejected'} ) { - push @statuses,'rejected'; -} -if ( $ARGS{'ShowPending'} || ( !$ARGS{'ShowRejected'} && !$ARGS{'Resolved'} ) ) { - push @statuses,qw(open new stalled); -} +foreach ($tickets, $group_tickets) { + $_->Limit( FIELD => 'Type', VALUE => 'approval' ); -push @clauses, join(' OR ', map { " Status = '$_' " } @statuses); + if ( $ARGS{'ShowResolved'} ) { + $_->LimitStatus( VALUE => 'resolved' ); + } + if ( $ARGS{'ShowRejected'} ) { + $_->LimitStatus( VALUE => 'rejected' ); + } + if ( $ARGS{'ShowPending'} || ( !$ARGS{'ShowRejected'} && !$ARGS{'Resolved'} ) ) { + $_->LimitStatus( VALUE => 'open' ); + $_->LimitStatus( VALUE => 'new' ); + $_->LimitStatus( VALUE => 'stalled' ); + } -if ( $ARGS{'CreatedBefore'} ) { - $created_before->Set( Format => 'unknown', Value => $ARGS{'CreatedBefore'} ); - push @clauses, "Created <= ".$created_before->ISO; + if ( $ARGS{'CreatedBefore'} ) { + $created_before->Set( Format => 'unknown', Value => $ARGS{'CreatedBefore'} ); + $_->LimitCreated( OPERATOR => "<=", VALUE => $created_before->ISO ); + } + if ( $ARGS{'CreatedAfter'} ) { + $created_after->Set( Format => 'unknown', Value => $ARGS{'CreatedAfter'} ); + $_->LimitCreated( OPERATOR => ">=", VALUE => $created_after->ISO ); + } + $_->OrderBy( FIELD => 'id' ); } -if ( $ARGS{'CreatedAfter'} ) { - $created_after->Set( Format => 'unknown', Value => $ARGS{'CreatedAfter'} ); - push @clauses, "Created >= ".$created_after->ISO; -} - -$m->callback(CallbackName => 'Search', clauses => \@clauses); -my $query = join (' AND ', map { "( $_ )" } @clauses); -$tickets->FromSQL($query); -$tickets->OrderBy( FIELD => 'id' );