diff options
author | matthew <matthew> | 2008-03-29 03:03:34 +0000 |
---|---|---|
committer | matthew <matthew> | 2008-03-29 03:03:34 +0000 |
commit | 193f3360a151178afb0df56e2bbf9430f63228bb (patch) | |
tree | f557f0ddf60dc394a6c0a778acc0fd3d81763785 /web/js.js | |
parent | 673715797876711db8eadd510610655e991d66cf (diff) |
Photo uploading for updates, and progress bar when uploading photos on
FixMyStreet (using swfupload). Needs more testing and error handling code
yet.
Diffstat (limited to 'web/js.js')
-rw-r--r-- | web/js.js | 89 |
1 files changed, 89 insertions, 0 deletions
@@ -56,6 +56,10 @@ YAHOO.util.Event.onContentReady('mapForm', function() { } this.x.value = x + 2; this.y.value = y + 2; + if (swfu && swfu.getStats().files_queued > 0) { + swfu.startUpload(); + return false; + } return true; } }); @@ -110,6 +114,91 @@ YAHOO.util.Event.onContentReady('email_alert_box', function() { }); }); +/* File upload */ +function doSubmit(e) { + e = e || window.event; + if (e.stopPropagation) e.stopPropagation(); + e.cancelBubble = true; + try { + if (swfu.getStats().files_queued > 0) + swfu.startUpload(); + else + return true; + } catch (e) {} + return false; +} + +function uploadDone() { + var m = document.getElementById('mapForm'); + if (m) { + m.submit(); + } else { + document.getElementById('fieldset').submit(); + } +} + +var swfu; +var swfu_settings = { + upload_url : "http://matthew.bci.mysociety.org/upload.cgi", + flash_url : "http://matthew.bci.mysociety.org/jslib/swfupload/swfupload_f9.swf", + file_size_limit : "10240", + file_types : "*.jpg;*.jpeg;*.pjpeg", + file_types_description : "JPEG files", + file_upload_limit : "0", + + swfupload_loaded_handler : function() { + var d = document.getElementById("fieldset"); + if (d) d.onsubmit = doSubmit; + }, + file_queued_handler : function(obj) { + document.getElementById('txtfilename').value = obj.name; + }, +//file_queue_error_handler : fileQueueError, + // file_dialog_complete_handler : fileDialogComplete, +//upload_start_handler : uploadStartEventHandler, + upload_progress_handler : function(obj, bytesLoaded, bytesTotal) { + var percent = Math.ceil((bytesLoaded / bytesTotal) * 100); + obj.id = "singlefile"; + var progress = new FileProgress(obj, this.customSettings.progress_target); + progress.setProgress(percent); + progress.setStatus("Uploading..."); + }, + upload_success_handler : function(obj, server_data) { + obj.id = "singlefile"; + var progress = new FileProgress(obj, this.customSettings.progress_target); + progress.setComplete(); + progress.setStatus("Complete!"); + if (server_data == ' ') { + this.customSettings.upload_successful = false; + } else { + this.customSettings.upload_successful = true; + document.getElementById('upload_fileid').value = server_data; + } + }, + upload_complete_handler : function(obj) { + if (this.customSettings.upload_successful) { + var d = document.getElementById('update_post'); + if (d) d.disabled = 'true'; + uploadDone(); + } else { + obj.id = 'singlefile'; + var progress = new FileProgress(obj, this.customSettings.progress_target); + progress.setError(); + progress.setStatus("File rejected"); + document.getElementById('txtfilename').value = ''; + } + + }, +//upload_error_handler : uploadError, + + swfupload_element_id : "fileupload_flashUI", + degraded_element_id : "fileupload_normalUI", + custom_settings : { + upload_successful : false, + progress_target : 'fileupload_flashUI' + } +}; + // I love the global var tile_x = 0; var tile_y = 0; |