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