diff --git a/code/AssetAdmin.php b/code/AssetAdmin.php
index 25df3daf..f508147a 100755
--- a/code/AssetAdmin.php
+++ b/code/AssetAdmin.php
@@ -132,7 +132,7 @@ class AssetAdmin extends LeftAndMain {
*/
function UploadForm() {
- return new Form($this,'UploadForm', new FieldSet(
+ $form = new Form($this,'UploadForm', new FieldSet(
new HiddenField("ID", "", $this->currentPageID()),
// needed because the button-action is triggered outside the iframe
new HiddenField("action_doUpload", "", "1"),
@@ -151,6 +151,11 @@ class AssetAdmin extends LeftAndMain {
")
), new FieldSet(
));
+
+ // Makes ajax easier
+ $form->disableSecurityToken();
+
+ return $form;
}
@@ -229,7 +234,7 @@ class AssetAdmin extends LeftAndMain {
$sFileIDs = implode(',', $fileIDs);
$sFileNames = implode(',', $fileNames);
-
+
echo <<
/* IDs: $sFileIDs */
diff --git a/javascript/CMSMain_upload.js b/javascript/CMSMain_upload.js
index d6dca3ee..5146011f 100644
--- a/javascript/CMSMain_upload.js
+++ b/javascript/CMSMain_upload.js
@@ -5,21 +5,24 @@
*/
CMSMain_upload = Class.create();
CMSMain_upload.prototype = {
- initialize: function() {
- // Due to a bug in the flash plugin on Linux and Mac, we need at least version 9.0.64 to use SWFUpload
- if(navigator.appVersion.indexOf("Mac") != -1 || navigator.appVersion.indexOf("X11") != -1 || navigator.appVersion.indexOf("Linux") != -1) {
- pv = getFlashPlayerVersion();
- if(pv.major < 9 || (pv.major == 9 && pv.minor == 0 && pv.rev < 64)) {
- return;
- }
+ initialize: function() {
+ // We require flash 9
+ pv = getFlashPlayerVersion();
+ if(pv.major < 9) return;
+
+ // Due to a bug in the flash plugin on Linux and Mac, we need at least version 9.0.64 to use SWFUpload
+ if(navigator.appVersion.indexOf("Mac") != -1 || navigator.appVersion.indexOf("X11") != -1 || navigator.appVersion.indexOf("Linux") != -1) {
+ if(pv.major == 9 && pv.minor == 0 && pv.rev < 64) return;
}
+
+ // If those 2 checks pass, we can provide upload capabilities to the user
this.iframe = window.top.document.getElementById('AssetAdmin_upload');
this.onLoad();
},
onLoad: function() {
this.upload = new Upload({
- fileUploadLimit : '6',
+ fileUploadLimit : '6',
securityID : $('SecurityID').value,
beginUploadOnQueue : false,
fileQueued : this.uploadFileQueuedCallback.bind(this),
@@ -175,7 +178,7 @@ CMSMain_upload.prototype = {
},
uploadQueueCompleteCallback: function() {
- eval(this.upload.getUploadMessage().replace('1',this.upload.getFilesUploaded()));
+ eval(this.upload.getUploadMessage().replace(/Uploaded 1 files/g,'Uploaded ' + this.upload.getFilesUploaded() + ' files'));
}
}
-window.top.document.CMSMain_upload = CMSMain_upload;
+window.top.document.CMSMain_upload = CMSMain_upload;
diff --git a/javascript/Upload.js b/javascript/Upload.js
index b1992b31..d67fe54b 100644
--- a/javascript/Upload.js
+++ b/javascript/Upload.js
@@ -29,7 +29,7 @@ Upload.prototype = {
if(typeof params.fileCancelled != 'undefined') this.fileCancelled = params.fileCancelled;
if(typeof params.fileComplete != 'undefined') this.fileComplete = params.fileComplete ;
if(typeof params.queueComplete != 'undefined') this.queueComplete = params.queueComplete;
- if(typeof params.buildUI != 'undefined') this.customBuildUI = params.buildUI;
+ if(typeof params.buildUI != 'undefined') this.customBuildUI = params.buildUI;
if(typeof params.securityID != 'undefined') this.securityID = params.securityID;
this.onLoad();
},
@@ -42,7 +42,7 @@ Upload.prototype = {
path = this.getBasePath();
sessId = this.getSessionId();//Because flash doesn't send proper cookies, we need to set session id in URL.
this.swfu = new SWFUpload({
- upload_target_url: path + '/assets/index/root?executeForm=UploadForm&SecurityID=' + this.securityID + '&PHPSESSID=' + sessId, // Relative to the SWF file
+ upload_url: path + 'admin/assets/index/root?executeForm=UploadForm&SecurityID=' + this.securityID + '&PHPSESSID=' + sessId, // Relative to the SWF file
file_post_name: 'Files',
file_size_limit : this.fileSizeLimit,
file_types : this.fileTypes,
@@ -53,15 +53,14 @@ Upload.prototype = {
validate_files: false,
file_queued_handler : this.uploadFileQueuedCallback.bind(this),
- file_complete_handler : this.uploadFileCompleteCallback.bind(this),
- file_progress_handler: this.uploadFileProgressCallback.bind(this),
- queue_complete_handler : this.uploadQueueCompleteCallback.bind(this),
+ upload_success_handler : this.uploadFileCompleteCallback.bind(this),
+ upload_progress_handler: this.uploadFileProgressCallback.bind(this),
error_handler : this.uploadErrorCallback.bind(this),
file_validation_handler : Prototype.emptyFunction,
file_cancelled_handler: Prototype.emptyFunction,
- flash_url : 'jsparty/SWFUpload/SWFUpload.swf', // Relative to this file
- ui_function: this.buildUI.bind(this),
+ flash_url : 'jsparty/SWFUpload/swfupload_f9.swf', // Relative to this file
+ swfupload_loaded_handler: this.buildUI.bind(this),
debug: false
});
},
@@ -73,8 +72,9 @@ Upload.prototype = {
getBasePath: function() {
var path = 'http://' + window.location.host + window.location.pathname;
- if(path[path.length-1] == '/') path = path.substring(0,path.length-1);
- return path;
+
+ if(path.match(/^(.*\/)admin/i)) return RegExp.$1;
+ else return path;
},
/**
@@ -117,14 +117,26 @@ Upload.prototype = {
* @param file object
* @param servedData string
*/
-
uploadFileCompleteCallback: function(file,serverData) {
this.filesUploaded++;
- var toEval = serverData.substr(serverData.indexOf('','');
- this.uploadMessage = toEval;
- this.fileComplete(file, serverData);
+ if(serverData) {
+ var toEval = serverData.substr(serverData.indexOf('','');
+ this.uploadMessage = toEval;
+ }
+
+ this.fileComplete(file, serverData);
+
+ // Run the next file in the queue, if there is one
+ if(this.swfu.getStats().files_queued > 0) this.startUpload();
+ // Otherwise indicate that the queue is finished
+ else {
+ this.queueComplete();
+ this.uploadInProgress = false;
+ this.filesUploaded = 0;
+ this.filesToUpload = 0;
+ }
},
/**
@@ -138,18 +150,7 @@ Upload.prototype = {
this.uploadInProgress = true;
this.fileProgress(file, bytes_complete);
},
-
- /**
- * Called when whole queue has been uploaded or cancelled.
- */
-
- uploadQueueCompleteCallback: function() {
- this.queueComplete();
- this.uploadInProgress = false;
- this.filesUploaded = 0;
- this.filesToUpload = 0;
- },
-
+
/**
* Called on error.
* @param error_code int
@@ -209,7 +210,7 @@ Upload.prototype = {
*/
browse: function() {
- this.swfu.browse();
+ this.swfu.selectFiles();
},
/**
@@ -252,4 +253,4 @@ Upload.prototype = {
isUploadInProgress: function() {
return this.uploadInProgress;
}
-}
+}