]> git.p6c8.net - jirafeau_mojo42.git/blobdiff - lib/functions.js.php
[BUGFIX] Limit upload chunk size to a reasonable value
[jirafeau_mojo42.git] / lib / functions.js.php
index ced2fa7b5e6bdbd06bfad4c0046c71c92779fb53..c1a81d8045c16bc2ecbb5c2346d3f2188404f676 100644 (file)
@@ -182,16 +182,17 @@ function show_link (reference, delete_code, crypt_key, date)
         }
 
         // Test if content can be previewed
         }
 
         // Test if content can be previewed
-         type = document.getElementById('file_select').files[0].type;
-         if (type.indexOf("image") > -1 ||
-             type.indexOf("audio") > -1 ||
-             type.indexOf("text") > -1 ||
-             type.indexOf("video") > -1)
-         {
+        type = document.getElementById('file_select').files[0].type;
+        if ((type.startsWith('image/')
+                || type.startsWith('audio')
+                || type.startsWith('text/plain')
+                || type.startsWith('video/'))
+            && !type.includes('image/svg+xml'))
+        {
             document.getElementById('preview_link').href = preview_link_href;
             document.getElementById('preview_link_text').innerHTML = web_root + preview_link_href;
             document.getElementById('upload_finished_preview').style.display = '';
             document.getElementById('preview_link').href = preview_link_href;
             document.getElementById('preview_link_text').innerHTML = web_root + preview_link_href;
             document.getElementById('upload_finished_preview').style.display = '';
-         }
+        }
     }
 
     // Direct download link
     }
 
     // Direct download link
@@ -273,12 +274,18 @@ function control_selected_file_size(max_size, error_str)
     }
 }
 
     }
 }
 
+function XHRErrorHandler(e)
+{
+    var text = "${e.type}: ${e.loaded} bytes transferred"
+    console.log(text)
+}
+
 function pop_failure (e)
 {
 function pop_failure (e)
 {
-    var text = "An error occured";
+    var text = "<p>An error occured";
     if (typeof e !== 'undefined')
     if (typeof e !== 'undefined')
-        text = e;
-    text = "<p>" + text + "</p>";
+        text += ": " + e;
+    text += "</p>";
     document.getElementById('error_pop').innerHTML = e;
 
     document.getElementById('uploading').style.display = 'none';
     document.getElementById('error_pop').innerHTML = e;
 
     document.getElementById('uploading').style.display = 'none';
@@ -314,6 +321,11 @@ function add_time_string_to_date(d, time)
         d.setSeconds (d.getSeconds() + 604800);
         return true;
     }
         d.setSeconds (d.getSeconds() + 604800);
         return true;
     }
+    if (time == 'fortnight')
+    {
+        d.setSeconds (d.getSeconds() + 1209600);
+        return true;
+    }
     if (time == 'month')
     {
                d.setSeconds (d.getSeconds() + 2592000);
     if (time == 'month')
     {
                d.setSeconds (d.getSeconds() + 2592000);
@@ -339,8 +351,8 @@ function classic_upload (file, time, password, one_time, upload_password)
 
     var req = new XMLHttpRequest ();
     req.upload.addEventListener ("progress", upload_progress, false);
 
     var req = new XMLHttpRequest ();
     req.upload.addEventListener ("progress", upload_progress, false);
-    req.addEventListener ("error", pop_failure, false);
-    req.addEventListener ("abort", pop_failure, false);
+    req.addEventListener ("error", XHRErrorHandler, false);
+    req.addEventListener ("abort", XHRErrorHandler, false);
     req.onreadystatechange = function ()
     {
         if (req.readyState == 4 && req.status == 200)
     req.onreadystatechange = function ()
     {
         if (req.readyState == 4 && req.status == 200)
@@ -412,8 +424,8 @@ function async_upload_start (max_size, file, time, password, one_time, upload_pa
     async_global_time = time;
 
     var req = new XMLHttpRequest ();
     async_global_time = time;
 
     var req = new XMLHttpRequest ();
-    req.addEventListener ("error", pop_failure, false);
-    req.addEventListener ("abort", pop_failure, false);
+    req.addEventListener ("error", XHRErrorHandler, false);
+    req.addEventListener ("abort", XHRErrorHandler, false);
     req.onreadystatechange = function ()
     {
         if (req.readyState == 4 && req.status == 200)
     req.onreadystatechange = function ()
     {
         if (req.readyState == 4 && req.status == 200)
@@ -484,8 +496,8 @@ function async_upload_push (code)
     }
     var req = new XMLHttpRequest ();
     req.upload.addEventListener ("progress", async_upload_progress, false);
     }
     var req = new XMLHttpRequest ();
     req.upload.addEventListener ("progress", async_upload_progress, false);
-    req.addEventListener ("error", pop_failure, false);
-    req.addEventListener ("abort", pop_failure, false);
+    req.addEventListener ("error", XHRErrorHandler, false);
+    req.addEventListener ("abort", XHRErrorHandler, false);
     req.onreadystatechange = function ()
     {
         if (req.readyState == 4)
     req.onreadystatechange = function ()
     {
         if (req.readyState == 4)
@@ -546,8 +558,8 @@ function async_upload_push (code)
 function async_upload_end (code)
 {
     var req = new XMLHttpRequest ();
 function async_upload_end (code)
 {
     var req = new XMLHttpRequest ();
-    req.addEventListener ("error", pop_failure, false);
-    req.addEventListener ("abort", pop_failure, false);
+    req.addEventListener ("error", XHRErrorHandler, false);
+    req.addEventListener ("abort", XHRErrorHandler, false);
     req.onreadystatechange = function ()
     {
         if (req.readyState == 4 && req.status == 200)
     req.onreadystatechange = function ()
     {
         if (req.readyState == 4 && req.status == 200)
@@ -584,14 +596,14 @@ function async_upload_end (code)
     req.send (form);
 }
 
     req.send (form);
 }
 
-function upload (max_size)
+function upload (max_chunk_size)
 {
     var one_time_checkbox = document.getElementById('one_time_download');
     var one_time = one_time_checkbox !== null ? one_time_checkbox.checked : false;
     if (check_html5_file_api ())
     {
         async_upload_start (
 {
     var one_time_checkbox = document.getElementById('one_time_download');
     var one_time = one_time_checkbox !== null ? one_time_checkbox.checked : false;
     if (check_html5_file_api ())
     {
         async_upload_start (
-            max_size,
+            max_chunk_size,
             document.getElementById('file_select').files[0],
             document.getElementById('select_time').value,
             document.getElementById('input_key').value,
             document.getElementById('file_select').files[0],
             document.getElementById('select_time').value,
             document.getElementById('input_key').value,

patrick-canterino.de