1 | package nl.tno.metagenomics |
---|
2 | |
---|
3 | |
---|
4 | class UploadTagLib { |
---|
5 | /** |
---|
6 | * Shows a file input field |
---|
7 | * |
---|
8 | * Depends on jQuery and ajax upload scripts |
---|
9 | * |
---|
10 | * @attr name Name of the upload field |
---|
11 | * @attr value Current filename in this field |
---|
12 | * @attr onUpload Javascript callback to be executed after uploading a file. |
---|
13 | * |
---|
14 | */ |
---|
15 | def fileUpload = { attrs -> |
---|
16 | def multiple = attrs.multiple ?: false; |
---|
17 | |
---|
18 | out << '<div id="upload_field_container_' + attrs.name + '" class="upload_field_container upload_field_container_' + ( multiple ? 'multiple' : 'single' ) + '">'; |
---|
19 | out << '<div id="upload_field_' + attrs.name + '" class="upload_field"></div>'; |
---|
20 | out << '<div id="' + attrs.name + 'Example" class="upload_info"></div>'; |
---|
21 | out << '<a id="' + attrs.name + 'DeleteExisting" class="upload_del" href="#" onClick="if( confirm( \'Are you sure to delete this file?\' ) ) { deleteFileExisting( \'' + attrs.name + '\' ); } return false;"><img src="' + resource( dir: 'images/icons', file: 'delete.png', plugin: 'famfamfam' ) + '"></a>'; |
---|
22 | out << '<a id="' + attrs.name + 'DeleteUploaded" class="upload_del" href="#" onClick="if( confirm( \'Are you sure to delete this file?\' ) ) { deleteFileUploaded( \'' + attrs.name + '\' ); } return false;"><img src="' + resource( dir: 'images/icons', file: 'delete.png', plugin: 'famfamfam' ) + '"></a>'; |
---|
23 | out << '<script type="text/javascript">'; |
---|
24 | out << ' $(document).ready( function() { '; |
---|
25 | out << ' var filename = "' + ( attrs.value ?: '' ) + '";'; |
---|
26 | out << ' fileUploadField( "' + attrs.name + '", ' + ( multiple ? 'true' : 'false' ) + ( attrs.onUpload ? ', function(params) { ' + attrs.onUpload + '(params); }' : '' ) + ( attrs.onDelete ? ', function(params) { ' + attrs.onDelete + '(params); }' : '' ) + ');'; |
---|
27 | out << ' if( filename != "" ) {'; |
---|
28 | out << ' $("#' + attrs.name + 'Delete").show();'; |
---|
29 | out << ' $("#' + attrs.name + 'Example").html("Current file: " + createFileHTML( filename ) )'; |
---|
30 | out << ' }'; |
---|
31 | out << ' } );'; |
---|
32 | out << "</script>\n"; |
---|
33 | |
---|
34 | // Show a custom list when uploading multiple files |
---|
35 | if( multiple ) { |
---|
36 | out << '<ul class="multipleFiles"></ul>'; |
---|
37 | } else { |
---|
38 | out << '<input type="hidden" name="' + attrs.name + '" id="' + attrs.name + '" value="' + attrs.value + '">'; |
---|
39 | } |
---|
40 | |
---|
41 | out << '</div>'; |
---|
42 | } |
---|
43 | |
---|
44 | /** |
---|
45 | * Shows the contents of a file upload field |
---|
46 | * |
---|
47 | * Depends on jQuery and ajax upload scripts |
---|
48 | * |
---|
49 | * @attr value Current filename in this field |
---|
50 | */ |
---|
51 | def uploadedFile = { attrs -> |
---|
52 | if( attrs.value != null ) |
---|
53 | out << '<span class="uploadedFile">' + attrs.value + '</span>' |
---|
54 | } |
---|
55 | } |
---|