[Rt-devel] Re: [PATCH] forwarding attachments on web UI for RT3.4.2, 3.4.3

akos.torok at docca.hu akos.torok at docca.hu
Sun Aug 14 19:23:09 EDT 2005


Sorry... change this file, and the patch-package suits 3.4.3 already.

Ákos

akos.torok at docca.hu wrote:

> Hi All,
>
> I'm very new in this area, so be patiens if I make mistakes, please.
>
> I made a patch for forwarding attechment, I hope someone'll find it 
> useful. I'm not a perl master, and this is just my second day of 
> seeing the RT's code, so probably there is more elegant way to 
> complete this job. The next one will be better.
>
> Regards,
>
> Ákos
>
>
> Readme.txt
>
> This is a patch package for www.bestpractical.com's RT.
> By: Akos Torok (akos dot torok at docca dot hu)
> Date: 2005.08.14.
>
> Mission:
> ========
> Making possible forwarding attachments directly from a ticket
> on the Web UI, without saving+browsing+attaching that attachments.
>
>
> Applying these patch files:
> ===========================
> This is my first time doing anything on RT. This is my first time of
> making patch files. I hope they are O.K. Just use them on the standard 
> way.
>
>
> Usage:
> ======
> Attach:
> You can find all the ticket attachments at the bottom of the
> "Update ticket" page. Check the boxes + save changes for attach.
>
> Remove:
> Same as the normal attachments: check the boxes and click "Add More
> Files" or "Save changes" button.
>
>

-------------- next part --------------
--- ./Web.pm	2005-07-12 18:22:01.000000000 +0200
+++ ./Web.pm	2005-08-15 00:46:29.000000000 +0200
@@ -446,6 +446,7 @@
     #Make the update content have no 'weird' newlines in it
     if (   $args{ARGSRef}->{'UpdateTimeWorked'}
         || $args{ARGSRef}->{'UpdateContent'}
+        || $args{ARGSRef}->{'UpdateForwardAttachments'}
         || $args{ARGSRef}->{'UpdateAttachments'} )
     {
 
@@ -495,6 +496,12 @@
           foreach values %{ $args{ARGSRef}->{'UpdateAttachments'} };
     }
 
+    if ( $args{ARGSRef}->{'UpdateForwardAttachments'} ) {
+        $Message->make_multipart;
+        $Message->add_part($_)
+          foreach values %{ $args{ARGSRef}->{'UpdateForwardAttachments'} };
+    }
+
     ## TODO: Implement public comments
     if ( $args{ARGSRef}->{'UpdateType'} =~ /^(private|public)$/ ) {
         my ( $Transaction, $Description, $Object ) = $args{TicketObj}->Comment(
@@ -548,6 +555,7 @@
         Cc                  => undef,
         Body                => undef,
         AttachmentFieldName => undef,
+        ForwardAttachment   => undef,
 #        map Encode::encode_utf8($_), @_,
         @_,
     );
@@ -614,6 +622,48 @@
 
     }
 
+
+
+    # FORWARDING
+    
+    # If there is anything to forward...
+    if ($args{'ForwardAttachment'}) {
+    # Load the original attachment
+     my $AttachmentObj = new RT::Attachment($session{'CurrentUser'});
+     my $trans;
+     my $attach;
+     if ($args{'ForwardAttachment'} =~ '^(\d+)/(\d+)') { $trans = $1; $attach = $2; }
+     $AttachmentObj->Load($attach) || Abort(loc("Attachment '[_1]' could not be loaded", $attach));
+     unless ($AttachmentObj->id) { Abort(loc("Attachment '[_1]' could not be loaded", $attach)); }
+     unless ($AttachmentObj->TransactionId() == $trans ) { Abort(loc("Attachment '[_1]' could not be loaded", $attach)); }
+     
+    #Save the original attachment into a temporary file on a new name: Sent-$original_name
+    use File::Temp qw(tempfile tempdir);
+    my ( $fh, $temp_file );
+    for ( 1 .. 10 ) {
+        # on NFS and NTFS, it is possible that tempfile() conflicts
+        # with other processes, causing a race condition. we try to
+        # accommodate this by pausing and retrying.
+        last if ($fh, $temp_file) = eval { tempfile( UNLINK => 1) };
+        sleep 1;
+    }
+    binmode $fh;    #thank you, windows
+    print $fh $AttachmentObj->Content;
+    my $filename= "Sent-".$AttachmentObj->Filename;
+
+    #Create the MIME attachment
+    $Message->attach(
+        Path     => $temp_file,
+        Filename => $filename,
+        Type     => $AttachmentObj->ContentType
+    );
+    close($fh);
+    }
+
+    # END OF FORWARDING
+    
+    
+
     $Message->make_singlepart();
     RT::I18N::SetMIMEEntityToUTF8($Message); # convert text parts into utf-8
 


More information about the Rt-devel mailing list