%# BEGIN LICENSE BLOCK %# %# Copyright (c) 1996-2002 Jesse Vincent %# %# (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 <& /RTIR/Elements/Header, Title => loc("Edit Incident #[_1]: [_2]", $Ticket->Id, $Ticket->Subject) &> <& /RTIR/Incident/Elements/Tabs, Ticket => $Ticket, current_tab => "RTIR/Display.html?id=".$Ticket->Id, current_subtab => "RTIR/Edit.html?id=".$Ticket->Id, Title => loc("Edit Incident #[_1]: [_2]", $Ticket->Id, $Ticket->Subject) &> % $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $Ticket); <& /Elements/ListActions, actions => \@results &> % unless ( $Ticket->CurrentUserHasRight('ModifyTicket') ) { <&|/l&>You are not allowed to edit this Incident. % return; % }
<&| /Widgets/TitleBox, title => loc('Modify incident # [_1]', $Ticket->Id), class => 'ticket-info-basics' &> % if ( $constituency_cf && ( $constituency_propagation ne 'reject' || !$has_children )) { % }
<&|/l&>State: <& /RTIR/Elements/ShowRTIRField, Name => 'State', Ticket => $Ticket &>
<&|/l&>Owner: <& /Elements/SelectOwner, Name => 'Owner', QueueObj => $Ticket->QueueObj, TicketObj => $Ticket, Default => $Ticket->Owner &>
<&|/l&>Subject:
<&|/l&>Priority: <&/Elements/SelectPriority, Name=>"Priority", Default=>$Ticket->Priority &>
<&|/l&>Time Worked:
<&|/l&>Constituency: <& /RTIR/Elements/EditRTIRField, TicketObj => $Ticket, Name => 'Constituency', Rows => 1 &>
<& /Ticket/Elements/EditCustomFields, TicketObj => $Ticket &>
<&| /Widgets/TitleBox, title => loc('Dates'), class => 'ticket-info-dates' &> <& /RTIR/Elements/EditDates, TicketObj => $Ticket &>

<& /Elements/Submit, Name => 'SaveChanges', Label => loc('Save Changes'), Caption => loc("If you've updated anything above, be sure to"), color => "#333399", &>
<%INIT> my $Ticket = LoadTicket($id); $id = $ARGS{'id'} = $Ticket->Id; $m->callback(CallbackName => 'Initial', %ARGS, Ticket => $Ticket); my $CanRespond = 0; my $CanComment = 0; $CanRespond = 1 if ( $Ticket->CurrentUserHasRight('ReplyToTicket') or $Ticket->CurrentUserHasRight('ModifyTicket') ); $CanComment = 1 if ( $Ticket->CurrentUserHasRight('CommentOnTicket') or $Ticket->CurrentUserHasRight('ModifyTicket') ); my $constituency_cf = RT::IR->CustomFields( Constituency => Ticket => $Ticket ); my $constituency_propagation = RT->Config->Get('_RTIR_Constituency_Propagation'); my $has_children = 0; if ( $constituency_cf && $constituency_propagation eq 'reject' ) { my $query = "( Queue = 'Incident Reports' OR Queue = 'Investigations' OR Queue = 'Blocks' )" ." AND MemberOf = ". $Ticket->id; my $tickets = RT::Tickets->new( $RT::SystemUser ); $tickets->FromSQL( $query ); $tickets->RowsPerPage(1); $has_children = $tickets->First ? 1 : 0; } my @results; if ( $SaveChanges && !$OnlySearchForPeople ) { my $checks_failure = 0; my $oldstate = $Ticket->FirstCustomFieldValue('State'); push @results, ProcessTicketWatchers( TicketObj => $Ticket, ARGSRef => \%ARGS); push @results, ProcessTicketBasics( TicketObj => $Ticket, ARGSRef => \%ARGS); my ($status, @msg) = $m->comp('/Elements/ValidateCustomFields', CustomFields => $Ticket->QueueObj->TicketCustomFields, NamePrefix => "Object-RT::Ticket-$id-CustomField-", ARGSRef => \%ARGS, ); # we don't use messages as later ProcessTicketCustomFieldUpdates do that for us $checks_failure = 1 unless $status; push @results, ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS); push @results, ProcessTicketDates( TicketObj => $Ticket, ARGSRef => \%ARGS); my $strict_acl = RT->Config->Set( StrictLinkACL => 0 ); push @results, ProcessTicketLinks( TicketObj => $Ticket, ARGSRef => \%ARGS); RT->Config->Set( StrictLinkACL => $strict_acl ); $ARGS{UpdateAttachments} = $session{'Attachments'}; push @results, ProcessUpdateMessage( TicketObj => $Ticket, ARGSRef=>\%ARGS ); my $newstate = $Ticket->FirstCustomFieldValue('State'); if ($newstate ne $oldstate) { push (@results, loc("State changed from [_1] to [_2]", $oldstate, $newstate)); } if ( !$checks_failure && RT->Config->Get('DisplayAfterEdit', $session{'CurrentUser'}) ) { $m->callback(CallbackName => 'BeforeDisplay', ARGSRef => \%ARGS, Ticket => $Ticket); push @{ $session{'Actions'}{''} ||= [] }, @results; return $m->comp("/RTIR/Incident/Display.html", %ARGS, id => $id ); } } # If they've gone and moved the ticket to somewhere they can't see, etc... # TODO: display the results, even if we can't display the ticket. unless ($Ticket->CurrentUserHasRight('ShowTicket')) { Abort("No permission to view ticket"); } <%ARGS> $OnlySearchForPeople => undef $SaveChanges => undef $id => undef