[Rt-commit] r4840 - in rtir/branches/1.9-EXPERIMENTAL: html/RTIR html/RTIR/Elements html/RTIR/Incident html/RTIR/Tools

ruz at bestpractical.com ruz at bestpractical.com
Fri Mar 24 22:01:50 EST 2006


Author: ruz
Date: Fri Mar 24 22:01:48 2006
New Revision: 4840

Modified:
   rtir/branches/1.9-EXPERIMENTAL/   (props changed)
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Create.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Display.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Edit.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Elements/UpdateData
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/BulkAbandon.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Create.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Edit.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Reply.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Split.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Tools/ScriptedAction.html
   rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Update.html

Log:
 r1035 at cubic-pc:  cubic | 2006-03-25 06:08:46 +0300
 * fixes for attachments processing


Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Create.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Create.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Create.html	Fri Mar 24 22:01:48 2006
@@ -54,11 +54,18 @@
 %    $m->abort();
 % }
 
+% unless ( $Split ) {
 <form action="<% RT->Config->Get('WebPath') %>/RTIR/Create.html" method="post" enctype="multipart/form-data">
+% } else {
+<form action="<% RT->Config->Get('WebPath') %>/RTIR/Split.html" method="post" enctype="multipart/form-data">
+% }
 <input type="hidden" name="id" value="new" />
 <input type="hidden" name="Queue" value="<% $QueueObj->Name %>" />
 <input type="hidden" name="Status" value="<% $Status || 'open' %>" />
 <input type="hidden" name="Incident" value="<% $ARGS{Incident} %>" />
+% if ( $Split ) {
+<input type="hidden" name="Ticket" value="<% $ARGS{'TicketObj'}->Id %>" />
+% }
 % my $parentvalue;
 % if ($IncidentObj) {
 %   $parentvalue = $IncidentObj->Id;
@@ -333,12 +340,12 @@
 $QueueObj->Load( $Queue ) || Abort( loc("Queue could not be loaded.") );
 
 my ($Type) = $m->comp('/RTIR/Elements/Type', Queue => $Queue );
-if ($Type eq 'Incident') {
-    return $m->comp("/RTIR/Incident/Create.html", %ARGS);
-}
 if ($Type eq 'Block' && RT->Config->Get('RTIR_DisableBlocksQueue') ) {
     Abort(loc("Blocks queue is disabled via config file"));
 }
+if ( $m->comp_exists("/RTIR/$Type/Create.html") ) {
+    return $m->comp( "/RTIR/$Type/Create.html", %ARGS );
+}
 
 my $Status;
 if ($Queue eq "Incident Reports") {
@@ -375,17 +382,12 @@
     }
 }
 
-# delete temporary storage entry to make WebUI clean
-unless (keys %{$session{'Attachments'}} and $ARGS{'id'} eq 'new') {
-    delete $session{'Attachments'};
-}
-
+$m->comp( 'SELF:ProcessAttachments', %ARGS );
 
 my @results;
-if ( !$ARGS{'AddMoreAttach'} && $ARGS{'id'} eq 'new' ) {
+if ( !$ARGS{'AddAttachment'} && $ARGS{'id'} eq 'new' ) {
     if ( $Type ne 'Investigation' || $ARGS{'Requestors'} ) {
-        $m->comp( 'Display.html', %ARGS );
-        $m->abort;
+        return $m->comp( 'Display.html', %ARGS );
     } else {
         push @results, loc( "Investigation launch failed: You must enter a correspondent.");
     }
@@ -412,6 +414,7 @@
 $Attachment => '';
 </%ARGS>
 <%INIT>
+use Data::Dumper; $RT::Logger->crit( Dumper( \%ARGS ) );
 
 $session{'Attachments'} ||= {};
 
@@ -424,15 +427,15 @@
 
 # store the uploaded attachment in session
 if ( $Attachment ) {
-    # strip leading directories
-    $Attachment =~ s{^.*[\\/]}{};
+    my $filename = "$Attachment";
+    $filename =~ s{^.*[\\/]}{};
 
     my $entity = MakeMIMEEntity(
-        Subject             => $Attachment,
+        Subject             => $filename,
         Body                => '',
         AttachmentFieldName => 'Attachment'
     );
-    $session{'Attachments'}{ $Attachment } = $entity;
+    $session{'Attachments'}{ $filename } = $entity;
     $session{'i'}++;
 }
 </%INIT>

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Display.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Display.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Display.html	Fri Mar 24 22:01:48 2006
@@ -224,11 +224,9 @@
 
 my ($Type) = $m->comp('Elements/Type', Queue => $QueueObj->Name);
 return $m->comp( '/Ticket/Display.html', %ARGS ) unless $Type;
-
 if ($Type eq 'Block' && RT->Config->Get('RTIR_DisableBlocksQueue') ) {
     Abort(loc("Blocks queue is disabled via config file"));
 }
-
 if ( $m->comp_exists("/RTIR/$Type/Display.html") ) {
     return $m->comp("/RTIR/$Type/Display.html", %ARGS);
 }

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Edit.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Edit.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Edit.html	Fri Mar 24 22:01:48 2006
@@ -238,6 +238,9 @@
     push @results, ProcessTicketCustomFieldUpdates( ARGSRef => \%ARGS );
     push @results, ProcessTicketDates(    TicketObj => $Ticket, ARGSRef => \%ARGS );
     push @results, ProcessTicketLinks(    TicketObj => $Ticket, ARGSRef => \%ARGS );
+
+    # XXX: edit page has no message box or attachments form
+    $ARGS{UpdateAttachments} = delete $session{'Attachments'};
     push @results, ProcessUpdateMessage(  TicketObj => $Ticket, ARGSRef=>\%ARGS );
 }
 my $newstate = RT::IR::Ticket::FirstCustomFieldValue( $Ticket, '_RTIR_State' );
@@ -246,8 +249,7 @@
 }
  
 if( $ARGS{'SaveChanges'} && RT->Config->Get('DisplayAfterEdit', $session{'CurrentUser'}) ) {
-    $m->comp("/RTIR/Display.html", results => [@results], %ARGS);
-    $m->abort;
+    return $m->comp("/RTIR/Display.html", results => [@results], %ARGS);
 }
 
 # If they've gone and moved the ticket to somewhere they can't see, etc...

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Elements/UpdateData
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Elements/UpdateData	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Elements/UpdateData	Fri Mar 24 22:01:48 2006
@@ -22,40 +22,30 @@
 %# 
 %# 
 %# END LICENSE BLOCK
-<tr><td align="right"><&|/l&>Cc</&>:</td><td> <input name="UpdateCc" size="60"
-value="<% $ARGS{UpdateCc} %>" /><br />
+<tr><td align="right"><&|/l&>Cc</&>:</td><td><input name="UpdateCc" size="60" value="<% $UpdateCc %>" /><br />
 <i><font size="-2">
 <&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)</&></font></i>
 </td></tr>
-<tr><td align="right"><&|/l&>Bcc</&>:</td><td> <input name="UpdateBcc" size="60" value="<%$ARGS{UpdateBcc}%>" /><br />
+
+<tr><td align="right"><&|/l&>Bcc</&>:</td><td><input name="UpdateBcc" size="60" value="<% $UpdateBcc %>" /><br />
 <i><font size="-2">
 <&|/l&>(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)</&></font></i>
 </td></tr>
-% if (exists $session{'Attachments'}) {
-<td>
-<&|/l&>Attached file</&>:
-</td>
-<td colspan="5">
-<&|/l&>Check box to delete</&><br />
-% foreach my $attach_name (keys %{$session{'Attachments'}}) {
-<input type="checkbox" name="DeleteAttach-<%$attach_name%>" /><%$attach_name%><br />
-% } # end of foreach
-</td>
-</tr>
-<tr>
-% } # end of if
-<tr><td align="right"><&|/l&>Attach</&>:</td><td><input name="Attach" type="file" /><input type="submit" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" /><input type="hidden" name="UpdateAttach" value="1" />
-</td></tr>
+
+<tr><td colspan="2"><& /RTIR/Create.html:AttachmentsForm &></td></tr>
+
 <tr><td align="right" valign="top"><&|/l&>Message</&>:</td><td>
 <& /Elements/Callback, Page => '/Ticket/Update.html',_CallbackName => 'BeforeMessageBox', %ARGS &>
-% if (exists $ARGS{UpdateContent}) {
+% if ( exists $ARGS{'UpdateContent'} ) {
 % delete $ARGS{'QuoteTransaction'};
-<& /Elements/MessageBox, Name=>"UpdateContent", Default=>$ARGS{UpdateContent}, %ARGS&>
+<& /Elements/MessageBox, Name => "UpdateContent", Default => $ARGS{'UpdateContent'}, %ARGS &>
 % } else {
-<& /Elements/MessageBox, Name=>"UpdateContent", %ARGS &>
+<& /Elements/MessageBox, Name => "UpdateContent", %ARGS &>
 % }
 </td></tr>
 
 <%ARGS>
 $Ticket => undef
+$UpdateCc => ''
+$UpdateBcc => ''
 </%ARGS>

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/BulkAbandon.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/BulkAbandon.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/BulkAbandon.html	Fri Mar 24 22:01:48 2006
@@ -87,9 +87,10 @@
 
 my ( @results );
 
+$m->comp( '/RTIR/Create.html:ProcessAttachments', %ARGS );
+
 if ( $ARGS{'BulkAbandon'} ) {
     my @tempresults;
-
     foreach my $id ( @SelectedTickets ) {
         $m->out('<!--  Processing <% $t->id %> -->'); $m->flush_buffer;
 
@@ -114,6 +115,7 @@
             my $members = new RT::Tickets( $t->CurrentUser );
             $members->FromSQL( $query );
             while( my $member = $members->Next ) {
+                $ARGS{'UpdateAttachments'} = delete $session{'Attachments'} if $session{'Attachments'};
                 push @tempresults, ProcessUpdateMessage(TicketObj => $member, ARGSRef => \%ARGS );
             }
         }

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Create.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Create.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Create.html	Fri Mar 24 22:01:48 2006
@@ -192,15 +192,10 @@
 my $QueueObj = new RT::Queue( $session{'CurrentUser'} );
 $QueueObj->Load( 'Incidents' ) || Abort( loc("Queue could not be loaded.") );
 
-my $TicketObj = $ARGS{TicketObj};
+my $TicketObj = $ARGS{TicketObj}; #XXX: .html(public) pages shouldn't take objects as argument
 
 $m->comp( '/RTIR/Create.html:ProcessAttachments', %ARGS );
 
-# delete temporary storage entry to make WebUI clean
-unless ( keys %{ $session{'Attachments'} } && $ARGS{'id'} eq 'new' ) {
-    delete $session{'Attachments'};
-}
-
 if ( $CreateIncident ) {
     my ($inc_obj, @tmp);
     ($inc_obj, @tmp) = $m->comp(
@@ -231,8 +226,7 @@
         }
     }
     if( $inc_obj ) {
-        $m->comp('Display.html', id => $inc_obj->id, results => \@results );
-        return;
+        return $m->comp('Display.html', id => $inc_obj->id, results => \@results );
     }
 }
 

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Edit.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Edit.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Edit.html	Fri Mar 24 22:01:48 2006
@@ -155,6 +155,7 @@
     push @results, ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS);
     push @results, ProcessTicketDates( TicketObj => $Ticket, ARGSRef => \%ARGS);
     push @results, ProcessTicketLinks( TicketObj => $Ticket, ARGSRef => \%ARGS);
+    $ARGS{UpdateAttachments} = $session{'Attachments'};
    	push @results, ProcessUpdateMessage( TicketObj => $Ticket, ARGSRef=>\%ARGS );
 }
 my $newstate = RT::IR::Ticket::FirstCustomFieldValue( $Ticket, '_RTIR_State' );

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Reply.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Reply.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Incident/Reply.html	Fri Mar 24 22:01:48 2006
@@ -112,6 +112,8 @@
     }
 }
 
+$m->comp( '/RTIR/Create.html:ProcessAttachments', %ARGS );
+
 if ( $SubmitTicket ) {
     foreach my $id( @SelectedTickets ) {
         my $Ticket = RT::Ticket->new( $session{'CurrentUser'} );
@@ -124,6 +126,7 @@
         my $oldstate = RT::IR::Ticket::FirstCustomFieldValue( $Ticket, '_RTIR_State' );
 
         my @tempresults;
+        $ARGS{'UpdateAttachments'} = delete $session{'Attachments'} if $session{'Attachments'};
         push @tempresults, ProcessUpdateMessage( TicketObj => $Ticket, ARGSRef => \%ARGS );
 
         unless ( RT::IR::Ticket::IsLinkedToActiveIncidents( $Ticket, $IncidentObj ) ) {

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Split.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Split.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Split.html	Fri Mar 24 22:01:48 2006
@@ -22,42 +22,44 @@
 %# 
 %# 
 %# END LICENSE BLOCK
+
 <& /RTIR/Create.html, 
-    Split            => 1,
-    Incident         => $Incident,
-    QuoteTransaction => $QuoteTransaction,
     Queue            => $TicketObj->QueueObj->Name,
     Subject          => $TicketObj->Subject,
     Requestors       => $TicketObj->RequestorAddresses,
     Cc               => $TicketObj->CcAddresses,
     AdminCc          => $TicketObj->AdminCcAddresses,
-    TicketObj        => $TicketObj,
     Status           => $TicketObj->Status,
     Owner            => $TicketObj->Owner,
     InitialPriority  => $TicketObj->InitialPriority,
     FinalPriority    => $TicketObj->FinalPriority,
+
+    %ARGS,
+
+    Split            => 1,
+    TicketObj        => $TicketObj,
+    Incident         => $Incident,
 &>
 
 <%INIT>
-my $TicketObj = LoadTicket($Ticket);
+my $TicketObj = LoadTicket( $Ticket );
 
-my ($Type) = $m->comp('Elements/Type', Ticket => $TicketObj->Id);
-if ($Type eq 'Incident') {
-    $m->comp("/RTIR/Incident/Split.html", %ARGS);
-    $m->abort;
+my ($Type) = $m->comp('Elements/Type', TicketObj => $TicketObj );
+if ( $m->comp_exists("/RTIR/$Type/Split.html") ) {
+    return $m->comp( "/RTIR/$Type/Split.html", %ARGS );
 }
 
 my $query = "Queue = 'Incidents' AND HasMember = " . $TicketObj->Id;
-my $incidents = new RT::Tickets($session{'CurrentUser'});
+my $incidents = new RT::Tickets( $session{'CurrentUser'} );
 $incidents->FromSQL( $query );
-my $obj = $incidents->First;
-my $Incident;
-$Incident = $obj->Id if $obj && $obj->Id;
 
+my $Incident;
+if ( my $obj = $incidents->First ) {
+    $Incident = $obj->Id;
+}
 
 </%INIT>
 <%ARGS>
-$MemberOf => undef
 $QuoteTransaction => undef
 $Ticket => undef
 </%ARGS>

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Tools/ScriptedAction.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Tools/ScriptedAction.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Tools/ScriptedAction.html	Fri Mar 24 22:01:48 2006
@@ -423,7 +423,7 @@
 
     # the content will be part of the template, if desired
     $ARGS{'UpdateContent'} = " ";
-    $ARGS{UpdateAttachments} = $session{'Attachments'};
+    $ARGS{UpdateAttachments} = delete $session{'Attachments'};
     push @updateresults, ProcessUpdateMessage( ARGSRef => \%ARGS,
                                                TicketObj=>$Ticket );
 

Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Update.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Update.html	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Update.html	Fri Mar 24 22:01:48 2006
@@ -114,7 +114,6 @@
     $name = $Type;
 }
 
-
 $DefaultStatus ||= $ARGS{'Status'} || $Ticket->Status;
 $DefaultStatus = 'open' if $DefaultStatus eq 'new';
 
@@ -165,38 +164,7 @@
                      $Ticket->CurrentUserHasRight('ModifyTicket') ); 
 
 
-# {{{ deal with deleting uploaded attachments
-foreach my $key (keys %ARGS) {
-    if ($key =~ m/^DeleteAttach-(.+)$/) {
-        delete $session{'Attachments'}{$1};
-    }
-    $session{'Attachments'} = { %{$session{'Attachments'} || {}} };
-}
-
-# {{{ store the uploaded attachment in session
-if ($ARGS{'Attach'}) { # attachment?
-    $session{'Attachments'} = {} unless defined $session{'Attachments'};
-
-    # strip leading directories
-    $ARGS{'Attach'} =~ s#^.*[\\/]##;
-
-    my $attachment = MakeMIMEEntity(
-        Subject             => "$ARGS{'Attach'}",
-        Body                => "",
-        AttachmentFieldName => 'Attach'
-    );
-    $session{'Attachments'} = {
-        %{$session{'Attachments'} || {}},
-        $ARGS{'Attach'} => $attachment,
-    };
-}
-# }}}
-
-# delete temporary storage entry to make WebUI clean
-unless (keys %{$session{'Attachments'}} and $ARGS{'UpdateAttach'}) {
-    delete $session{'Attachments'};
-}
-# }}}
+$m->comp( '/RTIR/Create.html:ProcessAttachments', %ARGS );
 
 if ( exists $ARGS{SubmitTicket} ) {
     $m->comp('/RTIR/Display.html', %ARGS);


More information about the Rt-commit mailing list