Integrated uploader and upload dialog.
[scpubgit/stemmaweb.git] / root / js / uploader.js
1 function $upl(id) {
2         return document.getElementById(id);     
3 }
4
5 function limitFiles( up, files ) {
6     most_recent = files.slice(-1)[0];
7     file_ids = $.map(up.files, function (item) { return item.id; });
8     $.each(file_ids, function(index, file_id) {
9         if( file_id!=most_recent.id ) { uploader.removeFile( uploader.getFile(file_id) ) };
10     });
11     $('#filelist').empty().html( '<div class="uploadfile" id="' + most_recent.id + '"><span id="uploadfile_label">File selected:</span>&nbsp;' + most_recent.name.substring(0,17) + '&nbsp;<b></b></div>' );
12     $('#upload_button').button('enable');
13 }
14
15 function create_uploader(upload_url) {
16         uploader = new plupload.Uploader({
17         runtimes : 'html4',
18         browse_button : 'pick_uploadfile_button',
19         container: 'upload_container',
20         max_file_size : '10mb',
21         url : upload_url,
22         filters : [
23             {title : "Tradition files", extensions : "txt,xls,xlsx,csv,xml"},
24         ]
25     });
26
27     uploader.bind('BeforeUpload', function(up, file) {
28         var parameter_values = {};
29         $.each($('#new_tradition').serializeArray(), function(i, field) {
30             parameter_values[field.name] = field.value;
31         });    
32         up.settings.multipart_params = parameter_values;
33     });
34    
35     uploader.bind('Init', function(up, params) {
36         // $upl('filelist').innerHTML = "<div>Current runtime: " + params.runtime + "</div>";
37     });
38
39     uploader.bind('FilesAdded', function(up, files) {
40         //Needed because Pluploader needs some time to add the file to the queue.
41         setTimeout( function(){ limitFiles(up, files) }, 50 );
42     });
43
44     uploader.bind('UploadProgress', function(up, file) {
45         $upl(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
46     });
47
48     uploader.bind('FileUploaded', function(up, file, ret) {
49                    //token = ret.response;
50                    $('#upload-collation-dialog').dialog( 'option', 'buttons').cancel();
51     });
52             
53     uploader.init();
54
55 }