root / src / gr / grnet / pithos / web / public / swfupload / handlers.js @ 0c665202
History | View | Annotate | Download (6.3 kB)
1 |
/* Demo Note: This demo uses a FileProgress class that handles the UI for displaying the file name and percent complete.
|
---|---|
2 |
The FileProgress class is not part of SWFUpload.
|
3 |
*/
|
4 |
|
5 |
|
6 |
/* **********************
|
7 |
Event Handlers
|
8 |
These are my custom event handlers to make my
|
9 |
web application behave the way I went when SWFUpload
|
10 |
completes different tasks. These aren't part of the SWFUpload
|
11 |
package. They are part of my application. Without these none
|
12 |
of the actions SWFUpload makes will show up in my application.
|
13 |
********************** */
|
14 |
function fileQueued(file) { |
15 |
try {
|
16 |
var progress = new FileProgress(file, this.customSettings.progressTarget); |
17 |
progress.setStatus("Pending...");
|
18 |
progress.toggleCancel(true, this); |
19 |
|
20 |
} catch (ex) {
|
21 |
this.debug(ex);
|
22 |
} |
23 |
|
24 |
} |
25 |
|
26 |
function fileQueueError(file, errorCode, message) { |
27 |
try {
|
28 |
if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
|
29 |
alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file."))); |
30 |
return;
|
31 |
} |
32 |
|
33 |
var progress = new FileProgress(file, this.customSettings.progressTarget); |
34 |
progress.setError(); |
35 |
progress.toggleCancel(false);
|
36 |
|
37 |
switch (errorCode) {
|
38 |
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
|
39 |
progress.setStatus("File is too big.");
|
40 |
this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); |
41 |
break;
|
42 |
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
|
43 |
progress.setStatus("Cannot upload Zero Byte files.");
|
44 |
this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); |
45 |
break;
|
46 |
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
|
47 |
progress.setStatus("Invalid File Type.");
|
48 |
this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); |
49 |
break;
|
50 |
default:
|
51 |
if (file !== null) { |
52 |
progress.setStatus("Unhandled Error");
|
53 |
} |
54 |
this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message); |
55 |
break;
|
56 |
} |
57 |
} catch (ex) {
|
58 |
this.debug(ex);
|
59 |
} |
60 |
} |
61 |
|
62 |
function fileDialogComplete(numFilesSelected, numFilesQueued) { |
63 |
try {
|
64 |
if (numFilesSelected > 0) { |
65 |
document.getElementById(this.customSettings.cancelButtonId).disabled = false; |
66 |
} |
67 |
|
68 |
/* I want auto start the upload and I can do that here */
|
69 |
this.startUpload();
|
70 |
} catch (ex) {
|
71 |
this.debug(ex);
|
72 |
} |
73 |
} |
74 |
|
75 |
function uploadStart(file) { |
76 |
try {
|
77 |
/* I don't want to do any file validation or anything, I'll just update the UI and
|
78 |
return true to indicate that the upload should start.
|
79 |
It's important to update the UI here because in Linux no uploadProgress events are called. The best
|
80 |
we can do is say we are uploading.
|
81 |
*/
|
82 |
var progress = new FileProgress(file, this.customSettings.progressTarget); |
83 |
progress.setStatus("Uploading...");
|
84 |
progress.toggleCancel(true, this); |
85 |
} |
86 |
catch (ex) {}
|
87 |
|
88 |
return true; |
89 |
} |
90 |
|
91 |
function uploadProgress(file, bytesLoaded, bytesTotal) { |
92 |
try {
|
93 |
var percent = Math.ceil((bytesLoaded / bytesTotal) * 100); |
94 |
|
95 |
var progress = new FileProgress(file, this.customSettings.progressTarget); |
96 |
progress.setProgress(percent); |
97 |
progress.setStatus("Uploading...");
|
98 |
} catch (ex) {
|
99 |
this.debug(ex);
|
100 |
} |
101 |
} |
102 |
|
103 |
function uploadSuccess(file, serverData) { |
104 |
try {
|
105 |
var progress = new FileProgress(file, this.customSettings.progressTarget); |
106 |
progress.setComplete(); |
107 |
progress.setStatus("Complete.");
|
108 |
progress.toggleCancel(false);
|
109 |
|
110 |
} catch (ex) {
|
111 |
this.debug(ex);
|
112 |
} |
113 |
} |
114 |
|
115 |
function uploadError(file, errorCode, message) { |
116 |
try {
|
117 |
var progress = new FileProgress(file, this.customSettings.progressTarget); |
118 |
progress.setError(); |
119 |
progress.toggleCancel(false);
|
120 |
|
121 |
switch (errorCode) {
|
122 |
case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
|
123 |
progress.setStatus("Upload Error: " + message);
|
124 |
this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message); |
125 |
break;
|
126 |
case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
|
127 |
progress.setStatus("Upload Failed.");
|
128 |
this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); |
129 |
break;
|
130 |
case SWFUpload.UPLOAD_ERROR.IO_ERROR:
|
131 |
progress.setStatus("Server (IO) Error");
|
132 |
this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message); |
133 |
break;
|
134 |
case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
|
135 |
progress.setStatus("Security Error");
|
136 |
this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message); |
137 |
break;
|
138 |
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
|
139 |
progress.setStatus("Upload limit exceeded.");
|
140 |
this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); |
141 |
break;
|
142 |
case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
|
143 |
progress.setStatus("Failed Validation. Upload skipped.");
|
144 |
this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); |
145 |
break;
|
146 |
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
|
147 |
// If there aren't any files left (they were all cancelled) disable the cancel button
|
148 |
if (this.getStats().files_queued === 0) { |
149 |
document.getElementById(this.customSettings.cancelButtonId).disabled = true; |
150 |
} |
151 |
progress.setStatus("Cancelled");
|
152 |
progress.setCancelled(); |
153 |
break;
|
154 |
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
|
155 |
progress.setStatus("Stopped");
|
156 |
break;
|
157 |
default:
|
158 |
progress.setStatus("Unhandled Error: " + errorCode);
|
159 |
this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message); |
160 |
break;
|
161 |
} |
162 |
} catch (ex) {
|
163 |
this.debug(ex);
|
164 |
} |
165 |
} |
166 |
|
167 |
function uploadComplete(file) { |
168 |
if (this.getStats().files_queued === 0) { |
169 |
document.getElementById(this.customSettings.cancelButtonId).disabled = true; |
170 |
} |
171 |
} |
172 |
|
173 |
// This event comes from the Queue Plugin
|
174 |
function queueComplete(numFilesUploaded) { |
175 |
var status = document.getElementById("divStatus"); |
176 |
status.innerHTML = numFilesUploaded + " file" + (numFilesUploaded === 1 ? "" : "s") + " uploaded."; |
177 |
} |