diff options
Diffstat (limited to 'rt/share/html/Approvals/Elements/PendingMyApproval')
-rwxr-xr-x | rt/share/html/Approvals/Elements/PendingMyApproval | 97 |
1 files changed, 47 insertions, 50 deletions
diff --git a/rt/share/html/Approvals/Elements/PendingMyApproval b/rt/share/html/Approvals/Elements/PendingMyApproval index e6b08f07d..e3cdff64d 100755 --- a/rt/share/html/Approvals/Elements/PendingMyApproval +++ b/rt/share/html/Approvals/Elements/PendingMyApproval @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# +%# +%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# <sales@bestpractical.com> +%# %# (Except where explicitly superseded by other copyright notices) -%# -%# +%# +%# %# LICENSE: -%# +%# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. -%# +%# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. -%# +%# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# +%# +%# %# CONTRIBUTION SUBMISSION POLICY: -%# +%# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) -%# +%# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,19 +43,15 @@ %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. -%# +%# %# END BPS TAGGED BLOCK }}} <script type="text/javascript"><!-- onLoadHook('createCalendarLink("CreatedBefore");'); onLoadHook('createCalendarLink("CreatedAfter");'); --></script> -% 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 +% while (my $ticket = $tickets->Next() ) { +% next if !$ARGS{'ShowDependent'} and $ticket->HasUnresolvedDependencies( Type => 'approval' ); <& Approve, ticket => $ticket &> -% } % } <&| /Widgets/TitleBox, title => loc("Search for approvals") &> @@ -67,45 +63,46 @@ <input type="checkbox" class="checkbox" value="1" name="ShowRejected" <% defined($ARGS{'ShowRejected'}) && $ARGS{'ShowRejected'} && qq[checked="checked"] |n%> /> <&|/l&>Show denied requests</&><br /> <input type="checkbox" class="checkbox" value="1" name="ShowDependent" <% defined($ARGS{'ShowDependent'}) && $ARGS{'ShowDependent'} && qq[checked="checked"] |n%> /> <&|/l&>Show requests awaiting other approvals</&><br /> -<&|/l,"<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore' id='CreatedBefore' />"&>Only show approvals for requests created before [_1]</&><br /> +<&|/l,"<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO(Timezone => 'user'))."' name='CreatedBefore' id='CreatedBefore' />"&>Only show approvals for requests created before [_1]</&><br /> -<&|/l, "<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter' id='CreatedAfter' />"&>Only show approvals for requests created after [_1]</&> +<&|/l, "<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO(Timezone => 'user'))."' name='CreatedAfter' id='CreatedAfter' />"&>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'}->UserObj->EmailAddress, TYPE => 'AdminCc' ); - my $created_before = RT::Date->new( $session{'CurrentUser'} ); my $created_after = RT::Date->new( $session{'CurrentUser'} ); -foreach ($tickets, $group_tickets) { - $_->Limit( FIELD => 'Type', VALUE => 'approval' ); +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); +} - 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' ); - } +push @clauses, join(' OR ', map { " Status = '$_' " } @statuses); - 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 ); - } +if ( $ARGS{'CreatedBefore'} ) { + $created_before->Set( Format => 'unknown', Value => $ARGS{'CreatedBefore'} ); + push @clauses, "Created <= ".$created_before->ISO; } +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' ); </%init> |