%# BEGIN LICENSE BLOCK %# %# Copyright (c) 1996-2003 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($Title) &> <& /RTIR/Elements/Tabs, Title => loc($Title) &> <& /RTIR/Elements/ListActions, actions => \@results &>
%foreach my $col (@cols) { % my $colalias = $col; % $colalias =~ s/(Obj\-\>|)(Name|AsString)//; %} <%PERL> my $i; $session{'tickets'}->RedoSearch(); while (my $Ticket = $session{'tickets'}->Next) { $i++; if ($i % 2) { $bgcolor = "#dddddd"; } else { $bgcolor = "#ffffff"; } %# The ticket view is controlled by config.pm, WebOptions %foreach my $col (@cols) { %} %}
<&|/l&>Update<% loc($colalias) %> 
% if ($col eq 'id') { <%$Ticket->Id()%> % } elsif ($col eq 'State') { <& "/RTIR/Elements/ShowRTIRField", Ticket => $Ticket, Name => 'State' &> % } %else { <% eval "\$Ticket->$col()" %>  %}

<& /Elements/TitleBoxStart, title => loc('Update selected '.$TypeString) &>
% if ($Type ne 'Incident') { % } else { % }
<&|/l&>Make Owner: <& /Elements/SelectOwner, Name => "Owner" &> ( <&|/l&>Force change)
<&|/l&>Add Correspondent:
<&|/l&>Remove Correspondent:
<&|/l&>Add Cc:
<&|/l&>Remove Cc:
<&|/l&>Add AdminCc:
<&|/l&>Remove AdminCc:
<&|/l&>Make Description: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'Description' &>
<&|/l&>Make Constituency: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'Constituency' &>
<%loc("Make Function")%>: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'Function' &>
<%loc("Make Classification")%>: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'Classification' &>
% if ($Type eq 'Report') { % } elsif ($Type eq 'Block') { % }
<&|/l&>Make subject:
<&|/l&>Make SLA: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'SLA' &>
<%loc("Make How Reported")%>: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'HowReported' &>
<%loc("Make Reporter Type")%>: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'ReporterType' &>
<&|/l&>Make IP Address: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'IP' &>
<&|/l&>Make Netmask: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'Netmask' &>
<&|/l&>Make Port: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'Port' &>
<&|/l&>Make Where Blocked: <& /RTIR/Elements/EditRTIRField, QueueObj => $q, Name => 'WhereBlocked' &>
<&|/l&>Make priority:
<&|/l&>Make date Starts: <& /Elements/SelectDate, Name => "Starts_Date", ShowTime => 0, Default => '' &>
<&|/l&>Make date Told: <& /Elements/SelectDate, Name => "Told_Date", ShowTime => 0, Default => '' &>
<&|/l&>Make date Due: <& /Elements/SelectDate, Name => "Due_Date", ShowTime => 0, Default => '' &>
<&|/l&>Make date Resolved: <& /Elements/SelectDate, Name => "Resolved_Date", ShowTime => 0, Default => '' &>
<& /Elements/TitleBoxEnd&> <& /Elements/TitleBoxStart, title => loc('Add comments or replies to selected '.$TypeString) &>
<&|/l&>Update Type:
<&|/l&>Subject:
<&|/l&>Attach:
<&|/l&>Message: <& /Elements/MessageBox, Name=>"UpdateContent"&>
<& /Elements/TitleBoxEnd &> <& /Elements/Submit &>
<%INIT> my ($TypeString, $Title); if ($Type eq "Incident") { $TypeString = "Incidents"; $Title = "Bulk Incident Update"; } elsif ($Type eq "Report") { $TypeString = "Incident Reports"; $Title = "Bulk Incident Report Update"; } elsif ($Type eq "Investigation") { $TypeString = "Investigations"; $Title = "Bulk Investigation Update"; } elsif ($Type eq "Block") { $TypeString = "Blocks"; $Title = "Bulk Block Update"; } my $q = new RT::Queue($session{'CurrentUser'}); $q->Load($TypeString); # Iterate through the ARGS hash and remove anything with a null value. map ($ARGS{$_} =~ /^$/ && (delete $ARGS{$_}), keys %ARGS); my ($bgcolor, @results); my @cols = qw(id State Subject OwnerObj->Name DueAsString ); Abort(loc("No search to operate on.")) unless ($session{'tickets'}); my $do_comment_reply=0; # Prepare for ticket updates $ARGS{'UpdateContent'} =~ s/\r\n/\n/g; chomp ($ARGS{'UpdateContent'}) ; if ($ARGS{'UpdateContent'} && $ARGS{'UpdateContent'} ne '' && $ARGS{'UpdateContent'} ne "-- \n" . $session{'CurrentUser'}->UserObj->Signature) { $do_comment_reply=1; } #Iterate through each ticket we've been handed my @linkresults; while (my $Ticket = $session{'tickets'}->Next) { $RT::Logger->debug( "Checking Ticket ".$Ticket->Id ."\n"); next unless ($ARGS{"UpdateTicket".$Ticket->Id}); $RT::Logger->debug ("Matched\n"); $ARGS{'id'} = $Ticket->Id; #Update the basics. my ($oldstate, $newstate); foreach my $arg (keys %ARGS) { if ( $arg =~ /^CustomField-(\d+)-Values$/ && defined $ARGS{$arg} ) { $ARGS{'Ticket-'.$Ticket->Id.'-'.$arg} = $ARGS{$arg}; $ARGS{'Ticket-'.$Ticket->Id.'-'.$arg.'-Magic'} = $ARGS{$arg.'-Magic'}; } } $oldstate = $Ticket->FirstCustomFieldValue('_RTIR_State'); my @basicresults = ProcessTicketBasics(TicketObj => $Ticket, ARGSRef => \%ARGS); my @cfresults = ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS); my @dateresults = ProcessTicketDates(TicketObj => $Ticket, ARGSRef => \%ARGS); #Update the watchers my @watchresults = ProcessTicketWatchers(TicketObj => $Ticket, ARGSRef => \%ARGS); my @updateresults; if ($do_comment_reply) { ProcessUpdateMessage(TicketObj => $Ticket, ARGSRef => \%ARGS, Actions => \@updateresults); } my @tempresults = (@watchresults, @basicresults, @cfresults, @dateresults, @updateresults, @linkresults); $newstate = $Ticket->FirstCustomFieldValue('_RTIR_State'); if ($newstate ne $oldstate) { push (@tempresults, loc("State changed from [_1] to [_2]", $oldstate, $newstate)); } @tempresults = map { loc("Ticket [_1]: [_2]",$Ticket->Id,$_) } @tempresults; @results = (@results, @tempresults); foreach my $arg (keys %ARGS) { if ( $arg =~ /^Ticket-(\d+)-CustomField-(\d+)-/ ) { delete $ARGS{$arg}; } } } <%ARGS> $Type => undef