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 | out << '<div class="uploadContainer" id="uploadcontainer_' + attrs.name + '">' |
---|
18 | out << '<div class="files">' |
---|
19 | out << '<div id="' + attrs.name + 'Example" class="upload_info"></div>'; |
---|
20 | 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>'; |
---|
21 | 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>'; |
---|
22 | out << '</div>' |
---|
23 | out << '<input type="file" name="ajaxupload_' + attrs.name + '" id="upload_field_' + attrs.name + '" />' |
---|
24 | out << '<script type="text/javascript">'; |
---|
25 | out << ' $(function() { '; |
---|
26 | out << ' var filename = "' + ( attrs.value ?: '' ) + '";'; |
---|
27 | out << ' fileUploadField( "' + attrs.name + '", ' + ( multiple ? 'true' : 'false' ) + ( attrs.onUpload ? ', function(params) { ' + attrs.onUpload + '(params); }' : '' ) + ( attrs.onDelete ? ', function(params) { ' + attrs.onDelete + '(params); }' : '' ) + ');'; |
---|
28 | out << ' if( filename != "" ) {'; |
---|
29 | out << ' $("#' + attrs.name + 'DeleteExisting").show();'; |
---|
30 | out << ' $("#' + attrs.name + 'Example").html("Current file: " + createFileHTML( filename ) );'; |
---|
31 | out << ' $("#uploadcontainer_' + attrs.name + ' .files").show();'; |
---|
32 | out << ' }'; |
---|
33 | out << ' } );'; |
---|
34 | out << "</script>\n"; |
---|
35 | |
---|
36 | // Show a custom list when uploading multiple files |
---|
37 | if( multiple ) { |
---|
38 | out << '<ul class="files"></ul>'; |
---|
39 | } else { |
---|
40 | out << '<input type="hidden" name="' + attrs.name + '" id="' + attrs.name + '" value="' + attrs.value + '">'; |
---|
41 | } |
---|
42 | |
---|
43 | out << '</div>'; |
---|
44 | |
---|
45 | } |
---|
46 | |
---|
47 | // def fileUpload = { attrs -> |
---|
48 | // def multiple = attrs.multiple ?: false; |
---|
49 | // |
---|
50 | // out << '<div id="upload_field_container_' + attrs.name + '" class="upload_field_container upload_field_container_' + ( multiple ? 'multiple' : 'single' ) + '">'; |
---|
51 | // out << '<div id="upload_field_' + attrs.name + '" class="upload_field"></div>'; |
---|
52 | // out << '<div id="' + attrs.name + 'Example" class="upload_info"></div>'; |
---|
53 | // 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>'; |
---|
54 | // 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>'; |
---|
55 | // out << '<script type="text/javascript">'; |
---|
56 | // out << ' $(document).ready( function() { '; |
---|
57 | // out << ' var filename = "' + ( attrs.value ?: '' ) + '";'; |
---|
58 | // out << ' fileUploadField( "' + attrs.name + '", ' + ( multiple ? 'true' : 'false' ) + ( attrs.onUpload ? ', function(params) { ' + attrs.onUpload + '(params); }' : '' ) + ( attrs.onDelete ? ', function(params) { ' + attrs.onDelete + '(params); }' : '' ) + ');'; |
---|
59 | // out << ' if( filename != "" ) {'; |
---|
60 | // out << ' $("#' + attrs.name + 'DeleteExisting").show();'; |
---|
61 | // out << ' $("#' + attrs.name + 'Example").html("Current file: " + createFileHTML( filename ) )'; |
---|
62 | // out << ' }'; |
---|
63 | // out << ' } );'; |
---|
64 | // out << "</script>\n"; |
---|
65 | // |
---|
66 | // // Show a custom list when uploading multiple files |
---|
67 | // if( multiple ) { |
---|
68 | // out << '<ul class="multipleFiles"></ul>'; |
---|
69 | // } else { |
---|
70 | // out << '<input type="hidden" name="' + attrs.name + '" id="' + attrs.name + '" value="' + attrs.value + '">'; |
---|
71 | // } |
---|
72 | // |
---|
73 | // out << '</div>'; |
---|
74 | // } |
---|
75 | |
---|
76 | /** |
---|
77 | * Shows the contents of a file upload field |
---|
78 | * |
---|
79 | * Depends on jQuery and ajax upload scripts |
---|
80 | * |
---|
81 | * @attr value Current filename in this field |
---|
82 | */ |
---|
83 | def uploadedFile = { attrs -> |
---|
84 | if( attrs.value != null ) |
---|
85 | out << '<span class="uploadedFile">' + attrs.value + '</span>' |
---|
86 | } |
---|
87 | } |
---|