Blame view

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