|
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 } |