diff --git a/common/js/plugins/jquery.fileupload/js/main.js b/common/js/plugins/jquery.fileupload/js/main.js index 5f0b47e5d..696ab7569 100644 --- a/common/js/plugins/jquery.fileupload/js/main.js +++ b/common/js/plugins/jquery.fileupload/js/main.js @@ -52,6 +52,7 @@ var self = this; var $container = containerEl; var data = $container.data(); + var lastUploadTime = 0; $.extend(data, { files: {}, @@ -93,15 +94,16 @@ }, submit: function(e, item) { item.formData = defaultFormData; - item.formData.nonce = "T" + new Date().getTime() + "." + Math.random(); chunkStatus = true; }, chunksend: function(e, res) { + lastUploadTime = Date.now(); if (!chunkStatus) { return false; } }, chunkdone: function(e, res) { + lastUploadTime = Date.now(); if (res.result) { if (res.result.error != 0) { if (res.result.message) { @@ -117,16 +119,22 @@ } }, chunkfail: function(e, res) { + lastUploadTime = Date.now(); if (chunkStatus) { alert(window.xe.msg_file_upload_error + " (Type 3)" + "
\n" + res.errorThrown + "
\n" + res.textStatus); return chunkStatus = false; } }, done: function(e, res) { + lastUploadTime = Date.now(); data.settings.progressbarGraph.width('100%'); data.settings.progressPercent.text('100%'); - data.settings.progressbar.delay(1000).slideUp(); - data.settings.progressStatus.delay(1000).slideUp(); + setTimeout(function() { + if (lastUploadTime < Date.now() - 800) { + data.settings.progressbar.slideUp(); + data.settings.progressStatus.slideUp(); + } + }, 1000); var result = res.response().result; var temp_code = ''; if (!result) { @@ -159,22 +167,30 @@ } }, fail: function(e, res) { - data.settings.progressbar.delay(1000).slideUp(); - data.settings.progressStatus.delay(1000).slideUp(); + lastUploadTime = Date.now(); + setTimeout(function() { + if (lastUploadTime < Date.now() - 800) { + data.settings.progressbar.slideUp(); + data.settings.progressStatus.slideUp(); + } + }, 1000); if (chunkStatus) { alert(window.xe.msg_file_upload_error + " (Type 7)" + "
\n" + res.errorThrown + "
\n" + res.textStatus); return false; } }, stop: function() { + lastUploadTime = Date.now(); self.loadFilelist($container); }, start: function() { + lastUploadTime = Date.now(); data.settings.progressbarGraph.width(0); data.settings.progressStatus.show(); data.settings.progressbar.show(); }, progressall: function (e, res) { + lastUploadTime = Date.now(); var progress = Math.round(res.loaded / res.total * 999) / 10; data.settings.progressbarGraph.width(progress+'%'); data.settings.progressPercent.text(progress+'%'); diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index d9887391e..0ede76230 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -69,8 +69,7 @@ class fileController extends file $this->add('chunk_uploaded_size', $chunk_start); // Check existing chunks - $nonce = Context::get('nonce'); - $temp_key = hash_hmac('sha1', sprintf('%d:%d:%d:%s:%s', $editor_sequence, $upload_target_srl, $module_srl, $file_info['name'], $nonce), config('crypto.authentication_key')); + $temp_key = hash_hmac('sha1', sprintf('%d:%d:%d:%s:%s', $editor_sequence, $upload_target_srl, $module_srl, $file_info['name'], session_id()), config('crypto.authentication_key')); $temp_filename = RX_BASEDIR . 'files/attach/chunks/' . $temp_key; if ($chunk_start == 0 && Rhymix\Framework\Storage::isFile($temp_filename)) {