import rt 2.0.14
[freeside.git] / rt / webrt / Search / Bulk.html
diff --git a/rt/webrt/Search/Bulk.html b/rt/webrt/Search/Bulk.html
new file mode 100755 (executable)
index 0000000..ac688d7
--- /dev/null
@@ -0,0 +1,186 @@
+%# $Header: /home/cvs/cvsroot/freeside/rt/webrt/Search/Attic/Bulk.html,v 1.1 2002-08-12 06:17:09 ivan Exp $
+%# Copyright 1996-2001 Jesse Vincent <jesse@fsck.com>
+<& /Elements/Header, Title => "Bulk ticket update" &>
+<& /Elements/Tabs &>
+
+<& /Elements/ListActions, actions => \@results &>
+
+<FORM METHOD=POST>
+<TABLE WIDTH=100% border=0 cellpadding=3 CELLSPACING=0>
+<TR>
+<TH>Update</TH>
+%foreach my $col (@cols) {
+% my $colalias = $col;
+% $colalias =~ s/(Obj\-\>|)(Name|AsString)//;
+
+<TH ><% $colalias %>&nbsp;</TH>
+%}
+</TR>
+
+<%PERL>
+
+my $i;
+
+
+      
+$session{'tickets'}->RedoSearch();
+while (my $Ticket = $session{'tickets'}->Next) {
+ $i++;
+ if ($i % 2) {
+     $bgcolor = "#dddddd";
+ }
+ else {
+     $bgcolor = "#ffffff";
+ }
+      </%PERL>
+<TR bgcolor="<%$bgcolor%>">
+<TD><input type=checkbox name="UpdateTicket<%$Ticket->Id%>" CHECKED></TD>
+%# The ticket view is controlled by config.pm, WebOptions
+%foreach my $col (@cols) {
+<TD>
+% if ($col eq 'id') {
+<A HREF="<% $RT::WebPath%>/Ticket/Display.html?id=<%$Ticket->Id%>"><%$Ticket->Id()%></A>
+% }
+%else {
+<% eval "\$Ticket->$col()" %>&nbsp;
+%}
+</TD>
+%}
+</TR>
+%}
+
+
+
+</TABLE>
+
+<HR>
+
+
+<& /Elements/TitleBoxStart, title => 'Update selected tickets' &>
+<TABLE>
+<TR>
+<TD VALIGN=TOP>
+<UL>
+<li> Make Owner <& /Elements/SelectOwner, Name => "Owner" &>
+(<input type=checkbox name="ForceOwnerChange"> Force change)
+<li> Add Requestor <INPUT Name="AddRequestor" SIZE=20>
+<li> Remove Requestor <INPUT Name="DeleteRequestor" SIZE=20>
+<li> Add Cc <INPUT Name="AddCc" SIZE=20>
+<li> Remove Cc <INPUT Name="DeleteCc" SIZE=20>
+<li> Add AdminCc <INPUT Name="AddAdminCc" SIZE=20>
+<li> Remove AdminCc <INPUT Name="DeleteAdminCc" SIZE=20>
+</UL>
+</TD>
+<TD VALIGN=TOP>
+<UL>
+<li> Make subject <INPUT Name="Subject" SIZE=20>
+<li> Make priority <INPUT Name="Priority" SIZE=4>
+<li> Make queue <& /Elements/SelectQueue, Name => "Queue" &>
+
+<li>Make Status <& /Elements/SelectStatus, Name => "Status" &>
+
+
+
+<li> Make date Starts <& /Elements/SelectDate, Name => "Starts_Date", ShowTime => 0, Default => '' &>
+<li> Make date Started <& /Elements/SelectDate, Name => "Started_Date", ShowTime => 0, Default => '' &>
+<li> Make date Told <& /Elements/SelectDate, Name => "Told_Date", ShowTime => 0, Default => '' &>
+<li> Make date Due <& /Elements/SelectDate, Name => "Due_Date", ShowTime => 0, Default => '' &>
+<li> Make date Resolved <& /Elements/SelectDate, Name => "Resolved_Date", ShowTime => 0, Default => '' &>
+
+
+% while ( my $KeywordSelect = $KeywordSelects->Next ) {
+
+<li> Add <% $KeywordSelect->Name %> <& /Elements/SelectKeyword, Name => "AddToKeywordSelect".$KeywordSelect->id, KeywordObj => $KeywordSelect->KeywordObj &>
+<li> Remove <% $KeywordSelect->Name %> <& /Elements/SelectKeyword, Name => "DeleteFromKeywordSelect".$KeywordSelect->id, KeywordObj => $KeywordSelect->KeywordObj &>
+% }
+
+</UL>
+
+
+</TD>
+</TR>
+</table>
+<& /Elements/TitleBoxEnd&>
+<& /Elements/TitleBoxStart, title => 'Add comments or replies to selected tickets' &>
+<table>
+<tr><td align=right>Update Type:</td>
+<td><select name="UpdateType">
+  <option value="private" >Comments (not sent to requestors)</option>
+<option value="response" >Response to requestors</option>
+</select> 
+</td></tr>
+<tr><td align=right>Subject:</td><td> <input name="UpdateSubject" size=60 value=""></td></tr>
+ <tr><td align=right>Attach:</td><td><input name="UpdateAttachment" type="file"></td></tr>
+ <tr><td colspan="2">
+ <& /Elements/MessageBox, Name=>"UpdateContent"&>
+ </td></tr>
+ </table>
+<& /Elements/TitleBoxEnd &>
+
+
+
+
+<& /Elements/Submit &>
+
+
+</FORM>
+<%INIT>
+
+# 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 Status Priority Subject QueueObj->Name OwnerObj->Name RequestorsAsString DueAsString );
+
+Abort("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;
+}
+
+my $KeywordSelects = new RT::KeywordSelects $session{'CurrentUser'};
+foreach ( $session{'tickets'}->RestrictionValues('Queue') ) {
+    $KeywordSelects->LimitToQueue($_);
+}
+
+$KeywordSelects->IncludeGlobals;
+
+
+#Iterate through each ticket we've been handed
+
+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");
+    #Update the basics.
+    my @basicresults = ProcessTicketBasics(TicketObj => $Ticket, ARGSRef => \%ARGS);
+    my @dateresults = ProcessTicketDates(TicketObj => $Ticket, ARGSRef => \%ARGS);
+    my @watchresults = ProcessTicketWatchers(TicketObj => $Ticket, ARGSRef => \%ARGS);    
+    my @selectresults = ProcessTicketObjectKeywords(TicketObj => $Ticket, ARGSRef => \%ARGS);
+    
+   
+     my @updateresults; 
+     if ($do_comment_reply) {
+     ProcessUpdateMessage(TicketObj => $Ticket, ARGSRef => \%ARGS, Actions => \
+@updateresults); 
+    } 
+    my @tempresults = (@watchresults, @basicresults, @dateresults, @updateresults);
+    @tempresults = map { "Ticket ".$Ticket->Id. ": ".$_ } @tempresults;
+
+    
+    #Update the keyword selects
+    #Update the watchers
+    $RT::Logger->debug(join("\n",@tempresults));
+    @results = (@results, @tempresults);
+}
+
+</%INIT>