From 85d85ef8b4202a395e3580ebce9e8abacb9353f5 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Wed, 27 Aug 2014 10:48:41 -0500
Subject: [PATCH] forms: Add localized error messages to the file upload

---
 include/client/header.inc.php |  2 +-
 include/staff/header.inc.php  |  2 +-
 js/filedrop.field.js          | 32 +++++++++++++++++++++++++-------
 3 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/include/client/header.inc.php b/include/client/header.inc.php
index d15783238..97085a7cb 100644
--- a/include/client/header.inc.php
+++ b/include/client/header.inc.php
@@ -35,8 +35,8 @@ if (($lang = Internationalization::getCurrentLanguage())
     <link type="text/css" rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/rtl.css"/>
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/jquery-1.8.3.min.js"></script>
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/jquery-ui-1.10.3.custom.min.js"></script>
-    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/filedrop.field.js"></script>
     <script src="<?php echo ROOT_PATH; ?>js/osticket.js"></script>
+    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/filedrop.field.js"></script>
     <script src="<?php echo ROOT_PATH; ?>scp/js/bootstrap-typeahead.js"></script>
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/redactor.min.js"></script>
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/redactor-osticket.js"></script>
diff --git a/include/staff/header.inc.php b/include/staff/header.inc.php
index cf832ae2a..238f65853 100644
--- a/include/staff/header.inc.php
+++ b/include/staff/header.inc.php
@@ -20,6 +20,7 @@ if (($lang = Internationalization::getCurrentLanguage())
     <![endif]-->
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/jquery-1.8.3.min.js"></script>
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/jquery-ui-1.10.3.custom.min.js"></script>
+    <script type="text/javascript" src="./js/scp.js"></script>
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/jquery.pjax.js"></script>
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/filedrop.field.js"></script>
     <script type="text/javascript" src="./js/tips.js"></script>
@@ -27,7 +28,6 @@ if (($lang = Internationalization::getCurrentLanguage())
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/redactor-osticket.js"></script>
     <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/redactor-fonts.js"></script>
     <script type="text/javascript" src="./js/bootstrap-typeahead.js"></script>
-    <script type="text/javascript" src="./js/scp.js"></script>
     <link rel="stylesheet" href="<?php echo ROOT_PATH ?>css/thread.css" media="all">
     <link rel="stylesheet" href="./css/scp.css" media="all">
     <link rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/redactor.css" media="screen">
diff --git a/js/filedrop.field.js b/js/filedrop.field.js
index 5edf17c99..d63316235 100644
--- a/js/filedrop.field.js
+++ b/js/filedrop.field.js
@@ -178,6 +178,13 @@
         node.data('xhr').abort();
         return this.deleteNode(node, false);
       }
+    },
+    handleError: function(err, i, file, status) {
+      var message = $.fn.filedropbox.messages[err];
+      if (file instanceof File) {
+        message = '<b>' + file.name + '</b><br/>' + message;
+      }
+      $.sysAlert(__('File Upload Error'), message);
     }
   };
 
@@ -197,6 +204,17 @@
     shim: !window.FileReader
   };
 
+  $.fn.filedropbox.messages = {
+    'BrowserNotSupported': __('Your browser is not supported'),
+    'TooManyFiles': __('You are trying to upload too many files'),
+    'FileTooLarge': __('File is too large'),
+    'FileTypeNotAllowed': __('This type of file is not allowed'),
+    'FileExtensionNotAllowed': __('This type of file is not allowed'),
+    'NotFound': __('Could not find or read this file'),
+    'NotReadable': __('Could not find or read this file'),
+    'AbortError': __('Could not find or read this file')
+  };
+
   $.fn.filedropbox.Constructor = FileDropbox;
 
 }(jQuery);
@@ -416,7 +434,7 @@
       if (opts.allowedfiletypes.push && opts.allowedfiletypes.length) {
         for(var fileIndex = files.length;fileIndex--;) {
           if(!files[fileIndex].type || $.inArray(files[fileIndex].type, opts.allowedfiletypes) < 0) {
-            opts.error(errors[3], files[fileIndex]);
+            opts.error(errors[3], files[fileIndex], fileIndex);
             return false;
           }
         }
@@ -433,7 +451,7 @@
             }
           }
           if (!allowedextension){
-            opts.error(errors[8], files[fileIndex]);
+            opts.error(errors[8], files[fileIndex], fileIndex);
             return false;
           }
         }
@@ -509,16 +527,16 @@
             reader.onerror = function(e) {
                 switch(e.target.error.code) {
                     case e.target.error.NOT_FOUND_ERR:
-                        opts.error(errors[4]);
+                        opts.error(errors[4], files[fileIndex], fileIndex);
                         return false;
                     case e.target.error.NOT_READABLE_ERR:
-                        opts.error(errors[5]);
+                        opts.error(errors[5], files[fileIndex], fileIndex);
                         return false;
                     case e.target.error.ABORT_ERR:
-                        opts.error(errors[6]);
+                        opts.error(errors[6], files[fileIndex], fileIndex);
                         return false;
                     default:
-                        opts.error(errors[7]);
+                        opts.error(errors[7], files[fileIndex], fileIndex);
                         return false;
                 };
             };
@@ -541,7 +559,7 @@
               processingQueue.splice(key, 1);
             }
           });
-          opts.error(errors[0]);
+          opts.error(errors[0], files[fileIndex], fileIndex, err);
           return false;
         }
 
-- 
GitLab