diff options
author | Ivan Kohler <ivan@freeside.biz> | 2012-06-07 00:56:06 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2012-06-07 00:56:06 -0700 |
commit | 43a06151e47d2c59b833cbd8c26d97865ee850b6 (patch) | |
tree | 42c51d94e7fa265461b508d061562be204ccc2c1 /rt/share/html/Approvals | |
parent | 6587f6ba7d047ddc1686c080090afe7d53365bd4 (diff) |
starting to work...
Diffstat (limited to 'rt/share/html/Approvals')
-rwxr-xr-x | rt/share/html/Approvals/Display.html | 7 | ||||
-rwxr-xr-x | rt/share/html/Approvals/Elements/Approve | 18 | ||||
-rwxr-xr-x | rt/share/html/Approvals/Elements/PendingMyApproval | 74 | ||||
-rwxr-xr-x | rt/share/html/Approvals/Elements/ShowDependency | 2 | ||||
-rwxr-xr-x | rt/share/html/Approvals/Elements/Tabs | 58 | ||||
-rw-r--r-- | rt/share/html/Approvals/autohandler | 2 | ||||
-rwxr-xr-x | rt/share/html/Approvals/index.html | 14 |
7 files changed, 65 insertions, 110 deletions
diff --git a/rt/share/html/Approvals/Display.html b/rt/share/html/Approvals/Display.html index 74d509e04..f98998650 100755 --- a/rt/share/html/Approvals/Display.html +++ b/rt/share/html/Approvals/Display.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -46,10 +46,7 @@ %# %# END BPS TAGGED BLOCK }}} <& /Elements/Header, Title => $title &> - -<& Elements/Tabs, - current_tab => "Approvals/Display.html", - Title => $title &> +<& /Elements/Tabs &> <form method="post" action="<%RT->Config->Get('WebPath')%>/Approvals/index.html"> <&| /Widgets/TitleBox, title => $title &> diff --git a/rt/share/html/Approvals/Elements/Approve b/rt/share/html/Approvals/Elements/Approve index f651139fa..4111680a4 100755 --- a/rt/share/html/Approvals/Elements/Approve +++ b/rt/share/html/Approvals/Elements/Approve @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -67,17 +67,29 @@ <div class="form"> <div class="action"> <div> +% if ( $inactive && $status eq 'resolved' ) { + <input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-approve" name="Approval-<%$ticket->Id%>-Action" value="approve" checked="checked" /> + <label for="Approval-<%$ticket->Id%>-Action-approve"><% loc('[_1] (Unchanged)', loc('Approve')) %></label> +% } else { <input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-approve" name="Approval-<%$ticket->Id%>-Action" value="approve" /> <label for="Approval-<%$ticket->Id%>-Action-approve"><&|/l&>Approve</&></label> +% } </div> <div> +% if ( $inactive && $status ne 'resolved' ) { + <input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-deny" name="Approval-<%$ticket->Id%>-Action" value="deny" checked="checked" /> + <label for="Approval-<%$ticket->Id%>-Action-deny"><% loc('[_1] (Unchanged)', loc('Deny')) %></label> +% } else { <input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-deny" name="Approval-<%$ticket->Id%>-Action" value="deny" /> <label for="Approval-<%$ticket->Id%>-Action-deny"><&|/l&>Deny</&></label> +% } </div> +% unless ( $inactive ) { <div> <input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-none" name="Approval-<%$ticket->Id%>-Action" value="none" checked="checked" /> <label for="Approval-<%$ticket->Id%>-Action-none"><&|/l&>No action</&></label> </div> +% } </div> <div class="notes"> <label for="Approval-<%$ticket->Id%>-Notes"><&|/l&>Notes</&></label> @@ -92,3 +104,7 @@ $ShowCustomFields => 1 $ShowHistory => 1 $ticket => undef </%ARGS> +<%INIT> +my $status = $ticket->Status; +my $inactive = $ticket->QueueObj->Lifecycle->IsInactive( $status ); +</%INIT> diff --git a/rt/share/html/Approvals/Elements/PendingMyApproval b/rt/share/html/Approvals/Elements/PendingMyApproval index e3cdff64d..75ad5e1ab 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-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -45,13 +45,13 @@ %# 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") &> @@ -63,46 +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(Timezone => 'user'))."' name='CreatedBefore' id='CreatedBefore' />"&>Only show approvals for requests created before [_1]</&><br /> +<&|/l, qq{<input size='15' class="ui-datepicker" 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(Timezone => 'user'))."' name='CreatedAfter' id='CreatedAfter' />"&>Only show approvals for requests created after [_1]</&> +<&|/l, qq{<input size='15' class="ui-datepicker" 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'} ); -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' ); </%init> diff --git a/rt/share/html/Approvals/Elements/ShowDependency b/rt/share/html/Approvals/Elements/ShowDependency index 380604a75..26dd070f2 100755 --- a/rt/share/html/Approvals/Elements/ShowDependency +++ b/rt/share/html/Approvals/Elements/ShowDependency @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) diff --git a/rt/share/html/Approvals/Elements/Tabs b/rt/share/html/Approvals/Elements/Tabs deleted file mode 100755 index b17fa03ce..000000000 --- a/rt/share/html/Approvals/Elements/Tabs +++ /dev/null @@ -1,58 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# 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 -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# 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 }}} -<& /Elements/Tabs, - tabs => $tabs, - current_toptab => 'Approvals/', - current_tab => $current_tab, - Title => $Title &> - -<%ARGS> -$tabs => undef -$current_tab => undef -$Title => undef -</%ARGS> diff --git a/rt/share/html/Approvals/autohandler b/rt/share/html/Approvals/autohandler index 655a001a8..a05770654 100644 --- a/rt/share/html/Approvals/autohandler +++ b/rt/share/html/Approvals/autohandler @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) diff --git a/rt/share/html/Approvals/index.html b/rt/share/html/Approvals/index.html index cfd5ab4d5..c72e9afe2 100755 --- a/rt/share/html/Approvals/index.html +++ b/rt/share/html/Approvals/index.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# <sales@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) @@ -46,10 +46,10 @@ %# %# END BPS TAGGED BLOCK }}} <& /Elements/Header, Title => loc("My approvals") &> -<& /Approvals/Elements/Tabs, Title => loc("My approvals") &> +<& /Elements/Tabs &> <& /Elements/ListActions, actions => \@actions &> -<form method="post"> +<form method="post" name="Approvals" id="Approvals"> <& Elements/PendingMyApproval, %ARGS &> <& /Elements/Submit, Label => loc('Go!') &> </form> @@ -79,11 +79,11 @@ foreach my $arg ( keys %ARGS ) { } my ($val, $msg); - if ( $ARGS{$arg} eq 'deny' ) { - ( $val, $msg ) = $ticket->SetStatus('rejected'); + if ( $ARGS{$arg} eq 'deny' && $ticket->Status !~ /^(rejected|deleted)/ ) { + ( $val, $msg ) = $ticket->SetStatus('rejected'); } - elsif ( $ARGS{$arg} eq 'approve' ) { - ( $val, $msg ) = $ticket->SetStatus('resolved'); + elsif ( $ARGS{$arg} eq 'approve' && $ticket->Status ne 'resolved') { + ( $val, $msg ) = $ticket->SetStatus('resolved'); } push ( @actions, loc("Approval #[_1]: [_2]",$ticket->id, $msg )) if ($msg); } |