rt 4.2.16
[freeside.git] / rt / share / html / Approvals / Elements / PendingMyApproval
index e3cdff6..d677ce8 100755 (executable)
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
 %#                                          <sales@bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<script type="text/javascript"><!--
-    onLoadHook('createCalendarLink("CreatedBefore");');
-    onLoadHook('createCalendarLink("CreatedAfter");');
---></script>
-% 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") &>
-<input type="checkbox" class="checkbox" value="1" name="ShowPending"
+<input type="checkbox" class="checkbox" value="1" id="ShowPending" name="ShowPending"
         <%((!$ARGS{'ShowRejected'} && !$ARGS{'ShowResolved'}) ||
          $ARGS{'ShowPending'})
-        && qq[checked="checked"] |n%> /> <&|/l&>Show pending requests</&><br />
-<input type="checkbox" class="checkbox" value="1" name="ShowResolved" <% defined($ARGS{'ShowResolved'}) && $ARGS{'ShowResolved'} && qq[checked="checked"] |n%> /> <&|/l&>Show approved requests</&><br />
-<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 />
+        && qq[checked="checked"] |n%> />
+<label for="ShowPending"><&|/l&>Show pending requests</&></label><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 />
+<input type="checkbox" class="checkbox" value="1" id="ShowResolved" name="ShowResolved" <% defined($ARGS{'ShowResolved'}) && $ARGS{'ShowResolved'} && qq[checked="checked"] |n%> />
+<label for="ShowResolved"><&|/l&>Show approved requests</&></label><br />
 
-<&|/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]</&>
+<input type="checkbox" class="checkbox" value="1" id="ShowRejected" name="ShowRejected" <% defined($ARGS{'ShowRejected'}) && $ARGS{'ShowRejected'} && qq[checked="checked"] |n%> />
+<label for="ShowRejected"><&|/l&>Show denied requests</&></label><br />
+
+<input type="checkbox" class="checkbox" value="1" id="ShowDependent" name="ShowDependent" <% defined($ARGS{'ShowDependent'}) && $ARGS{'ShowDependent'} && qq[checked="checked"] |n%> />
+<label for="ShowDependent"><&|/l&>Show requests awaiting other approvals</&></label><br />
+
+<&|/l_unsafe, qq{<input size='15' class="datepicker" value='}.($created_before->IsSet &&$created_before->ISO(Timezone => 'user'))."' name='CreatedBefore' id='CreatedBefore' />"&>Only show approvals for requests created before [_1]</&><br />
+
+<&|/l_unsafe, qq{<input size='15' class="datepicker" value='}.( $created_after->IsSet && $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'}->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'";
+foreach ($tickets, $group_tickets) {
+    $_->LimitType( VALUE => '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);
-}
-
-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' );
 
 </%init>