swfupload.queue.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /*
  2. [Discuz!] (C)2001-2099 Comsenz Inc.
  3. This is NOT a freeware, use is subject to license terms
  4. $Id: swfupload.queue.js 23838 2011-08-11 06:51:58Z monkey $
  5. */
  6. var SWFUpload;
  7. if (typeof(SWFUpload) === "function") {
  8. SWFUpload.queue = {};
  9. SWFUpload.prototype.initSettings = (function (oldInitSettings) {
  10. return function (userSettings) {
  11. if (typeof(oldInitSettings) === "function") {
  12. oldInitSettings.call(this, userSettings);
  13. }
  14. this.queueSettings = {};
  15. this.queueSettings.queue_cancelled_flag = false;
  16. this.queueSettings.queue_upload_count = 0;
  17. this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
  18. this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
  19. this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
  20. this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
  21. this.settings.queue_complete_handler = userSettings.queue_complete_handler || null;
  22. };
  23. })(SWFUpload.prototype.initSettings);
  24. SWFUpload.prototype.startUpload = function (fileID) {
  25. this.queueSettings.queue_cancelled_flag = false;
  26. this.callFlash("StartUpload", [fileID]);
  27. };
  28. SWFUpload.prototype.cancelQueue = function () {
  29. this.queueSettings.queue_cancelled_flag = true;
  30. this.stopUpload();
  31. var stats = this.getStats();
  32. while (stats.files_queued > 0) {
  33. this.cancelUpload();
  34. stats = this.getStats();
  35. }
  36. };
  37. SWFUpload.queue.uploadStartHandler = function (file) {
  38. var returnValue;
  39. if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
  40. returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
  41. }
  42. returnValue = (returnValue === false) ? false : true;
  43. this.queueSettings.queue_cancelled_flag = !returnValue;
  44. return returnValue;
  45. };
  46. SWFUpload.queue.uploadCompleteHandler = function (file) {
  47. var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
  48. var continueUpload;
  49. if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
  50. this.queueSettings.queue_upload_count++;
  51. }
  52. if (typeof(user_upload_complete_handler) === "function") {
  53. continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
  54. } else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
  55. continueUpload = false;
  56. } else {
  57. continueUpload = true;
  58. }
  59. if (continueUpload) {
  60. var stats = this.getStats();
  61. if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
  62. this.startUpload();
  63. } else if (this.queueSettings.queue_cancelled_flag === false) {
  64. this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
  65. this.queueSettings.queue_upload_count = 0;
  66. } else {
  67. this.queueSettings.queue_cancelled_flag = false;
  68. this.queueSettings.queue_upload_count = 0;
  69. }
  70. }
  71. };
  72. }