<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body style="margin: 0pt; padding: 0pt;" bgcolor="#ffffff"
 text="#000000">
Thanks Eric for all your help.  Worked great.<br>
<br>
Karen<br>
<br>
Schultz, Eric wrote:
<blockquote
 cite="mid5613F89D78D2F545A40423EBA5535C3015697604@LAXEVS01.lax.corp.int.untd.com"
 type="cite">
  <blockquote type="cite">
    <blockquote type="cite">
      <pre wrap="">I would like to warn the user before dropping a large 
      </pre>
    </blockquote>
    <pre wrap="">attachment and 
    </pre>
    <blockquote type="cite">
      <pre wrap="">give them the opportunity to make a different selection.
I saw this in an earlier email (dated 2006-02-24 from Eric Shultz 
"TruncateLongAttachments .."), where he had modified the RT 
code to do 
just that.  I've been attempting to do the same thing in 
      </pre>
    </blockquote>
    <pre wrap="">Update.html, 
    </pre>
    <blockquote type="cite">
      <pre wrap="">but failing.  I can't seem to determine the filesize with the 
information at hand.  Can anyone point me in the right 
direction?  Or is 
Update.html not the place to be making these changes?
      </pre>
    </blockquote>
    <pre wrap="">Hi Karen.  Unfortunately, I've made a bunch of other changes to the
3.4.x code, so I can't easily provide you with just a simple patch.
What I can provide is the code I added for this 
functionality, however,
and at about what point in the file share/html/Ticket/Update.html.
Note, however, that I did not set TruncateLongAttachments in
RT_SiteConfig.pm, I set DropLongAttachments to 1.  Here are 
my changes:

#1:
-----------
  <& /Ticket/Elements/Tabs,
      Ticket => $TicketObj,
      Title=> $title &>

+ <& /Elements/ListActions, actions => \@Actions &>
+
  <FORM ACTION="Update.html" NAME="TicketUpdate"
        METHOD=POST enctype="multipart/form-data">
  <input type="hidden" name="QuoteTransaction" value="<%
$ARGS{QuoteTransaction} %>">
-----------

#2:
-----------
  <%INIT>
  my $CanRespond = 0;
  my $CanComment = 0;
  my $title;
+ my @Actions;

  my $TicketObj = LoadTicket($id);

-----------

#3:
-----------
      $session{'Attachments'} = { %{$session{'Attachments'} || {}},
                                $ARGS{'Attach'} => $attachment };
+
+     my $latest_attach = $ARGS{'Attach'};
+
+     # Check the length of all attachments put together, compensating
+     # for encoding overhead (* .75) like is done elsewhere in the
code.
+     my $total_length = 0;
+     foreach my $key (keys %{$session{'Attachments'}}) {
+       my $length = length(
${$session{'Attachments'}}{$key}->stringify_body );
+         $total_length += int($length * .75 / 1024);
+     }
+
+     # If the total of all attachments exceeds the RT config 
parameter,
+     # and we're told to drop long attachments, drop all of them.
+     # But still allow a message update.
+     my $maxsize = int($RT::MaxAttachmentSize * .75 / 1024);
+     if ($total_length > $maxsize and $RT::DropLongAttachments) {
+       $RT::Logger->warning( "Exceeded maximum attachment size. Total
length: ${total_length}k (max: ${maxsize}k)" );
+       push( @Actions, "Attachment '$latest_attach' not 
uploaded: total
size of all attachments (${total_length}k) would exceed limit
(${maxsize}k)" );
+       delete ${$session{'Attachments'}}{$latest_attach};  # remove
only the latest one that tipped the scales
+         delete $ARGS{SubmitTicket};  # don't go to the Display.html
page
+     }
  }
  # }}}

  # delete temporary storage entry to make WebUI clean
  unless (keys %{$session{'Attachments'}} and $ARGS{'UpdateAttach'}) {
      delete $session{'Attachments'};
-----------


Let me know how that works for you.

Eric Schultz
United Online, Inc.
    </pre>
  </blockquote>
  <pre wrap=""><!---->

I neglected to mention that I also do pretty much the same thing in
Create.html, so people can't make a ticket with too large of an
attachment.  The only difference is I have a commitme flag:

my $commitme = 1;

If the $total_length exceeds $maxsize, I set $commitme = 0, then later I
have this:

if ( $commitme and (!exists $ARGS{'AddMoreAttach'}) && ($ARGS{'id'} eq
'new')) {

So I don't go to Display.html yet (giving them another opportunity to
attach something smaller).


Eric Schultz
United Online, Inc.

  </pre>
</blockquote>
</body>
</html>