summaryrefslogtreecommitdiff
path: root/rt/html/Approvals/Elements/PendingMyApproval
blob: b5cf0078854c653d5d404b43038667b3e1ca653c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
%# BEGIN LICENSE BLOCK
%# 
%# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
%# 
%# (Except where explictly superceded by other copyright notices)
%# 
%# 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.
%# 
%# Unless otherwise specified, all modifications, corrections or
%# extensions to this work which alter its source code become the
%# property of Best Practical Solutions, LLC when submitted for
%# inclusion in the work.
%# 
%# 
%# END LICENSE BLOCK
<table width="100%">
% my ($i, $class);
% 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
%     $i++; 
%     $class = ($i%2) ?  "oddline" : "evenline";
<& Approve, ticket => $ticket, class => $class &>
%   }
% }
</table>

<& /Elements/TitleBoxStart, title => loc("Search for approvals") &>
<input type=checkbox value="1" name="ShowPending"
        <%((!$ARGS{'ShowRejected'} && !$ARGS{'ShowResolved'}) ||
         $ARGS{'ShowPending'})
        && "checked"%>> <&|/l&>Show pending requests</&><br>
<input type=checkbox value="1" name="ShowResolved" <%$ARGS{'ShowResolved'} && "checked"%>> <&|/l&>Show approved requests</&><br>
<input type=checkbox value="1" name="ShowRejected" <%$ARGS{'ShowRejected'} && "checked"%>> <&|/l&>Show denied requests</&><br>
<input type=checkbox value="1" name="ShowDependent" <%$ARGS{'ShowDependent'} && "checked"%>> <&|/l&>Show requests awaiting other approvals</&><br>

<&|/l,"<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>"&>Only show approvals for requests created before [_1]</&><br>

<&|/l, "<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>"&>Only show approvals for requests created after [_1]</&>
<& /Elements/TitleBoxEnd &>

<%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'} );

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' );

    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'} );
	$_->LimitCreated( OPERATOR => "<=", VALUE => $created_before->ISO );
    }
    if ( $ARGS{'CreatedAfter'} ) {
	$created_after->Set( Format => 'unknown', Value => $ARGS{'CreatedAfter'} );
	$_->LimitCreated( OPERATOR => ">=", VALUE => $created_after->ISO );
    }
}

</%init>