diff options
Diffstat (limited to 'rt/webrt/Search/Bulk.html')
-rwxr-xr-x | rt/webrt/Search/Bulk.html | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/rt/webrt/Search/Bulk.html b/rt/webrt/Search/Bulk.html new file mode 100755 index 000000000..ac688d7cd --- /dev/null +++ b/rt/webrt/Search/Bulk.html @@ -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 %> </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()" %> +%} +</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> |