web/static/ldt/js/swfupload/swfupload.queue.js
author cavaliet
Fri, 29 Apr 2011 10:58:24 +0200
changeset 71 8a881c9593d0
permissions -rw-r--r--
Add swfupload for local upload to create content view, with progress bar and error management. Update language files.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
71
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     1
/*
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     2
	Queue Plug-in
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     3
	
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     4
	Features:
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     5
		*Adds a cancelQueue() method for cancelling the entire queue.
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     6
		*All queued files are uploaded when startUpload() is called.
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     7
		*If false is returned from uploadComplete then the queue upload is stopped.
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     8
		 If false is not returned (strict comparison) then the queue upload is continued.
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
     9
		*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    10
		 Set the event handler with the queue_complete_handler setting.
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    11
		
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    12
	*/
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    13
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    14
var SWFUpload;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    15
if (typeof(SWFUpload) === "function") {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    16
	SWFUpload.queue = {};
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    17
	
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    18
	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    19
		return function () {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    20
			if (typeof(oldInitSettings) === "function") {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    21
				oldInitSettings.call(this);
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    22
			}
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    23
			
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    24
			this.queueSettings = {};
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    25
			
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    26
			this.queueSettings.queue_cancelled_flag = false;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    27
			this.queueSettings.queue_upload_count = 0;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    28
			
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    29
			this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    30
			this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    31
			this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    32
			this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    33
			
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    34
			this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    35
		};
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    36
	})(SWFUpload.prototype.initSettings);
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    37
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    38
	SWFUpload.prototype.startUpload = function (fileID) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    39
		this.queueSettings.queue_cancelled_flag = false;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    40
		this.callFlash("StartUpload", [fileID]);
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    41
	};
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    42
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    43
	SWFUpload.prototype.cancelQueue = function () {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    44
		this.queueSettings.queue_cancelled_flag = true;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    45
		this.stopUpload();
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    46
		
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    47
		var stats = this.getStats();
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    48
		while (stats.files_queued > 0) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    49
			this.cancelUpload();
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    50
			stats = this.getStats();
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    51
		}
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    52
	};
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    53
	
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    54
	SWFUpload.queue.uploadStartHandler = function (file) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    55
		var returnValue;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    56
		if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    57
			returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    58
		}
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    59
		
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    60
		// To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    61
		returnValue = (returnValue === false) ? false : true;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    62
		
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    63
		this.queueSettings.queue_cancelled_flag = !returnValue;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    64
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    65
		return returnValue;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    66
	};
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    67
	
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    68
	SWFUpload.queue.uploadCompleteHandler = function (file) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    69
		var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    70
		var continueUpload;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    71
		
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    72
		if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    73
			this.queueSettings.queue_upload_count++;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    74
		}
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    75
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    76
		if (typeof(user_upload_complete_handler) === "function") {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    77
			continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    78
		} else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    79
			// If the file was stopped and re-queued don't restart the upload
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    80
			continueUpload = false;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    81
		} else {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    82
			continueUpload = true;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    83
		}
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    84
		
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    85
		if (continueUpload) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    86
			var stats = this.getStats();
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    87
			if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    88
				this.startUpload();
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    89
			} else if (this.queueSettings.queue_cancelled_flag === false) {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    90
				this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    91
				this.queueSettings.queue_upload_count = 0;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    92
			} else {
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    93
				this.queueSettings.queue_cancelled_flag = false;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    94
				this.queueSettings.queue_upload_count = 0;
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    95
			}
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    96
		}
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    97
	};
8a881c9593d0 Add swfupload for local upload to create content view, with progress bar and error management.
cavaliet
parents:
diff changeset
    98
}