source: trunk/grails-app/taglib/nl/tno/metagenomics/UploadTagLib.groovy @ 2

Last change on this file since 2 was 2, checked in by robert@…, 9 years ago

Initial import of basic functionality

File size: 2.5 KB
Line 
1package nl.tno.metagenomics
2
3
4class 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}
Note: See TracBrowser for help on using the repository browser.