UX: acknowledge actions instead of silently redirecting
[freeside.git] / httemplate / edit / process / cust_main_attach.cgi
index 51eead0..20673dc 100644 (file)
@@ -4,13 +4,10 @@
 %} else {
 % my $act = 'added';
 % $act = 'updated' if ($attachnum);
+% $act = 'purged' if($attachnum and $purge);
 % $act = 'undeleted' if($attachnum and $undelete);
 % $act = 'deleted' if($attachnum and $delete);
-<% header('Attachment ' . $act ) %>
-    <SCRIPT TYPE="text/javascript">
-      window.top.location.reload();
-    </SCRIPT>
-    </BODY></HTML>
+<& /elements/popup-topreload.html, mt("Attachment $act") &>
 % }
 <%init>
 
@@ -23,18 +20,21 @@ $cgi->param('attachnum') =~ /^(\d*)$/
   or die "Illegal attachnum: ". $cgi->param('attachnum');
 my $attachnum = $1;
 
-my $otaker = $FS::CurrentUser::CurrentUser->name;
-$otaker = $FS::CurrentUser::CurrentUser->username
-  if ($otaker eq "User, Legacy");
+my $filename = $cgi->param('file');
+# strip directory names; thanks, IE7
+$filename =~ s!.*[\/\\]!!;
+
+my $curuser = $FS::CurrentUser::CurrentUser;
 
 my $delete = $cgi->param('delete');
 my $undelete = $cgi->param('undelete');
+my $purge = $cgi->param('purge');
 
 my $new = new FS::cust_attachment ( {
   attachnum => $attachnum,
   custnum   => $custnum,
   _date     => time,
-  otaker    => $otaker,
+  usernum   => $curuser->usernum,
   disabled  => '',
 });
 my $old;
@@ -44,11 +44,14 @@ if($attachnum) {
   if(!$old) {
     $error = "Attachnum '$attachnum' not found";
   }
+  elsif($purge) { # do nothing
+  }
   else {
     map { $new->$_($old->$_) } 
       ('_date', 'otaker', 'body', 'disabled');
-    $new->filename($cgi->param('filename') || $old->filename);
+    $new->filename($filename || $old->filename);
     $new->mime_type($cgi->param('mime_type') || $old->mime_type);
+    $new->title($cgi->param('title'));
     if($delete and not $old->disabled) {
       $new->disabled(time);
     }
@@ -59,10 +62,11 @@ if($attachnum) {
 }
 else { # This is a new attachment, so require a file.
 
-  my $filename = $cgi->param('file');
   if($filename) {
     $new->filename($filename);
-    $new->mime_type($cgi->uploadInfo($filename)->{'Content-Type'});
+    # use the original filename here, not the stripped form
+    $new->mime_type($cgi->uploadInfo($cgi->param('file'))->{'Content-Type'});
+    $new->title($cgi->param('title'));
     
     local $/;
     my $fh = $cgi->upload('file');
@@ -72,12 +76,19 @@ else { # This is a new attachment, so require a file.
     $error = 'No file uploaded';
   }
 }
-my $user = $FS::CurrentUser::CurrentUser;
+my $action = 'Add';
+$action = 'Edit' if $attachnum;
+$action = 'Delete' if $attachnum and $delete;
+$action = 'Undelete' if $attachnum and $undelete;
+$action = 'Purge' if $attachnum and $purge;
 
-$error = 'access denied' unless $user->access_right(($old ? 'Edit' : 'Add') . ' attachment');
+$error = 'access denied' unless $curuser->access_right($action . ' attachment');
 
 if(!$error) {
-  if($old) {
+  if($old and $old->disabled and $purge) {
+    $error = $old->delete;
+  }
+  elsif($old) {
     $error = $new->replace($old);
   }
   else {