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))
{