]> git.p6c8.net - jirafeau_project.git/blobdiff - lib/functions.js.php
[BUGFIX] retry on communication error with server
[jirafeau_project.git] / lib / functions.js.php
index 241a8e4c86ec2b985e414ad747507d5f32e282b7..5b4ad60c6c2d86f88172b283a15c4473ea7da9f4 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  *  Jirafeau, your web file repository
- *  Copyright (C) 2015  Jerome Jutteau <j.jutteau@gmail.com>
+ *  Copyright (C) 2015  Jerome Jutteau <jerome@jutteau.fr>
  *  Copyright (C) 2015  Nicola Spanti (RyDroid) <dev@nicola-spanti.info>
  *
  *  This program is free software: you can redistribute it and/or modify
@@ -145,11 +145,11 @@ function show_link (reference, delete_code, crypt_key, date)
 
     // Email link
     var filename = document.getElementById('file_select').files[0].name;
-    var b = encodeURIComponent("<?php echo t("DL"); ?> \"" + filename + "\":") + "%0D";
-    b += encodeURIComponent(web_root + download_link_href) + "%0D";
+    var b = encodeURIComponent("<?php echo t("DL"); ?> \"" + filename + "\":") + "%0D" + "%0A";
+    b += encodeURIComponent(web_root + download_link_href) + "%0D" + "%0A";
     if (false == isEmpty(date))
     {
-        b += "%0D" + encodeURIComponent("<?php echo t("VALID_UNTIL"); ?>: " + date.format('YYYY-MM-DD hh:mm (GMT O)')) + "%0D";
+        b += "%0D" + "%0A" + encodeURIComponent("<?php echo t("VALID_UNTIL"); ?>: " + date.format('YYYY-MM-DD hh:mm (GMT O)')) + "%0D" + "%0A";
         document.getElementById('upload_link_email').href = "mailto:?body=" + b + "&subject=" + encodeURIComponent(filename);
     }
 
@@ -316,17 +316,17 @@ function add_time_string_to_date(d, time)
     }
     if (time == 'month')
     {
-        d.setSeconds (d.getSeconds() + 2419200);
+               d.setSeconds (d.getSeconds() + 2592000);
         return true;
     }
     if (time == 'quarter')
     {
-        d.setSeconds (d.getSeconds() + 7257600);
+               d.setSeconds (d.getSeconds() + 7776000);
         return true;
     }
     if (time == 'year')
     {
-        d.setSeconds (d.getSeconds() + 29030400);
+               d.setSeconds (d.getSeconds() + 31536000);
         return true;
     }
     return false;
@@ -398,6 +398,7 @@ var async_global_ref = '';
 var async_global_max_size = 0;
 var async_global_time;
 var async_global_transfering = 0;
+var async_global_last_code;
 
 function async_upload_start (max_size, file, time, password, one_time, upload_password)
 {
@@ -470,6 +471,7 @@ function async_upload_progress (e)
 
 function async_upload_push (code)
 {
+    async_global_last_code = code;
     if (async_global_transfered == async_global_file.size)
     {
         hide_upload_progression ();
@@ -482,27 +484,38 @@ function async_upload_push (code)
     req.addEventListener ("abort", pop_failure, false);
     req.onreadystatechange = function ()
     {
-        if (req.readyState == 4 && req.status == 200)
+        if (req.readyState == 4)
         {
-            var res = req.responseText;
+            if (req.status == 200)
+            {
+                var res = req.responseText;
 
-            if (/^Error/.test(res))
+                if (/^Error/.test(res))
+                {
+                    pop_failure (res);
+                    return;
+                }
+
+                res = res.split ("\n");
+                var code = res[0]
+                async_global_transfered = async_global_transfering;
+                async_upload_push (code);
+            }
+            else
             {
-                pop_failure (res);
-                return;
+                if (req.status == 413) // Request Entity Too Large
+                {
+                    // lower async_global_max_size and retry
+                    async_global_max_size = parseInt (async_global_max_size * 0.8);
+                }
+                async_upload_push (async_global_last_code);
             }
-
-            res = res.split ("\n");
-            var code = res[0]
-            async_global_transfered = async_global_transfering;
-            async_upload_push (code);
         }
     }
     req.open ("POST", 'script.php?push_async' , true);
 
-    var chunk_size = parseInt (async_global_max_size * 0.50);
     var start = async_global_transfered;
-    var end = start + chunk_size;
+    var end = start + async_global_max_size;
     if (end >= async_global_file.size)
         end = async_global_file.size;
     var blob = async_global_file.slice (start, end);
@@ -558,6 +571,8 @@ function async_upload_end (code)
 
 function upload (max_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 ()
         && document.getElementById('file_select').files[0].size >= max_size)
     {
@@ -566,7 +581,7 @@ function upload (max_size)
             document.getElementById('file_select').files[0],
             document.getElementById('select_time').value,
             document.getElementById('input_key').value,
-            document.getElementById('one_time_download').checked,
+            one_time,
             document.getElementById('upload_password').value
             );
     }
@@ -576,7 +591,7 @@ function upload (max_size)
             document.getElementById('file_select').files[0],
             document.getElementById('select_time').value,
             document.getElementById('input_key').value,
-            document.getElementById('one_time_download').checked,
+            one_time,
             document.getElementById('upload_password').value
             );
     }
@@ -621,17 +636,17 @@ function upload_time_estimation_speed_string()
     if (s <= 1000)
     {
         res = s.toString();
-        scale = "Bit/s";
+        scale = "B/s";
     }
     else if (s < 1000000)
     {
         res = Math.floor(s/100) / 10;
-        scale = "KBit/s";
+        scale = "KB/s";
     }
     else
     {
         res = Math.floor(s/100000) / 10;
-        scale = "Mbit/s";
+        scale = "MB/s";
     }
     if (res == 0)
         return '';
@@ -742,8 +757,10 @@ function copyLinkToClipboard(link_id) {
 }
 
 function addCopyListener(button_id, link_id) {
-    document.getElementById(button_id)
+    if(document.getElementById(button_id)){
+        document.getElementById(button_id)
             .addEventListener("click", function() {
                 copyLinkToClipboard(link_id);});
+    }
 }
 // @license-end

patrick-canterino.de