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

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

Implemented uploadify as upload tool

File size: 4.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                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}
Note: See TracBrowser for help on using the repository browser.