Bug 16538: Improve the style of progress bars
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / tools / upload.tt
1 [% INCLUDE 'doc-head-open.inc' %]
2 [% USE Koha %]
3 [% IF plugin %]
4     <title>Upload plugin</title>
5 [% ELSE %]
6     <title>Koha &rsaquo; Tools &rsaquo; Upload</title>
7 [% END %]
8 [% INCLUDE 'doc-head-close.inc' %]
9
10 [% BLOCK plugin_pars %]
11     [% IF plugin %]
12         <input type="hidden" name="plugin" value="1" />
13         <input type="hidden" name="index" value="[% index %]" />
14     [% END %]
15 [% END %]
16
17 [% BLOCK breadcrumbs %]
18     <div id="breadcrumbs">
19         <a href="/cgi-bin/koha/mainpage.pl">Home</a>
20         &rsaquo;
21         <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a>
22         &rsaquo;
23         <a href="/cgi-bin/koha/tools/upload.pl">Upload</a>
24         &rsaquo;
25         <span id="lastbreadcrumb">
26         [% IF mode=='new' || mode =='deleted'%]
27             Add new upload or search
28         [% ELSE %]
29             Results
30         [% END %]
31         </span>
32     </div>
33 [% END %]
34
35 [% BLOCK form_new %]
36     <form method="post" action="/cgi-bin/koha/tools/upload.pl" id="uploadfile" enctype="multipart/form-data">
37         [% PROCESS plugin_pars %]
38         <fieldset class="rows" id="uploadform">
39         <legend>Upload new files</legend>
40         <ol>
41         <li>
42         <div id="fileuploadform">
43             <label for="fileToUpload">Select files: </label>
44             <input type="file" id="fileToUpload" name="fileToUpload" multiple/>
45         </div>
46         </li>
47         [% IF uploadcategories %]
48             <li>
49                 <label for="uploadcategory">Category: </label>
50                 <select id="uploadcategory" name="uploadcategory">
51                 [% IF !plugin %]
52                     <option value=""></option>
53                 [% END %]
54                 [% FOREACH cat IN uploadcategories %]
55                     <option value="[% cat.code %]">[% cat.name %]</option>
56                 [% END %]
57                 </select>
58             </li>
59         [% END %]
60         [% IF !plugin %]
61             <li>
62             [% IF uploadcategories %]
63                 <div class="hint">Note: For temporary uploads do not select a category.</div>
64             [% ELSE %]
65                 <div class="hint">Note: No upload categories have been defined. All uploads will be marked as temporary.</div>
66             [% END %]
67             </li>
68         [% END %]
69         <li>
70             [% IF plugin %]
71                 <input type="hidden" id="public" name="public" value="1"/>
72             [% ELSE %]
73                 <label id="public_cb">Allow public downloads:</label>
74                 <input type="checkbox" id="public" name="public" />
75             [% END %]
76         </li>
77         </ol>
78         <fieldset class="action">
79             <button id="fileuploadbutton">Upload</button>
80             <button id="fileuploadcancel">Cancel</button>
81         </fieldset>
82         </fieldset>
83         <div id="fileuploadpanel">
84             <div id="fileuploadstatus" class="progress_panel">Upload progress:
85             <progress id="fileuploadprogress" max="100" value="0">
86             </progress>
87             <span class="fileuploadpercent">0</span>%
88             </div>
89             <div id="fileuploadfailed"></div>
90         </div>
91     </form>
92 [% END %]
93
94 [% BLOCK form_search %]
95     <form method="post" id="searchfile" action="/cgi-bin/koha/tools/upload.pl" enctype="multipart/form-data">
96         [% PROCESS plugin_pars %]
97         <input type="hidden" name="op" value="search"/>
98         <fieldset class="rows">
99         <legend>Search uploads by name or hashvalue</legend>
100         <ol>
101         <li>
102             <label for="term">Search term: </label>
103             <input type="text" id="term" name="term" value=""/>
104         </li>
105         </ol>
106         <fieldset class="action">
107             <button id="searchbutton" class="submit">Search</button>
108         </fieldset>
109         </fieldset>
110     </form>
111 [% END %]
112
113 [% BLOCK submitter %]
114     <form id="submitter" style="display:none;" method="post">
115         [% PROCESS plugin_pars %]
116         <input type="hidden" name="op" id="op" value=""/>
117         <input type="hidden" name="id" id="id" value="" />
118         <input type="hidden" name="msg" id="msg" value="" />
119     </form>
120 [% END %]
121
122 [% BLOCK closer %]
123     [% IF plugin %]
124         <div id="closewindow"><a class="btn btn-default close" href="#">Close</a></div>
125     [% END %]
126 [% END %]
127
128 [% BLOCK back %]
129     [% IF !plugin %]
130         <form id="back">
131             <fieldset class="action">
132                 <button class="submit">Back</button>
133             </fieldset>
134         </form>
135     [% END %]
136 [% END %]
137
138 [% BLOCK newsearch %]
139     <form id="newsearch">
140         <fieldset class="action">
141             <button onclick="SubmitMe('new'); return false;">New search</button>
142         </fieldset>
143     </form>
144     [% IF plugin %]
145         <div id="closewindow"><a class="btn btn-default close" href="#">Close</a></div>
146     [% END %]
147 [% END %]
148
149 [% BLOCK table_results %]
150     <table>
151     <thead>
152     <tr>
153         <th>Filename</th>
154         <th>Size</th>
155         <th>Hashvalue</th>
156         <th>Category</th>
157         [% IF !plugin %]<th>Public</th>[% END %]
158         [% IF !plugin %]<th>Temporary</th>[% END %]
159         <th>Actions</th>
160     </tr>
161     </thead>
162     <tbody>
163     [% FOREACH record IN uploads %]
164     <tr>
165         <td>[% record.name %]</td>
166         <td>[% record.filesize %]</td>
167         <td>[% record.hashvalue %]</td>
168         <td>[% record.uploadcategorycode %]</td>
169         [% IF !plugin %]
170             <td>[% IF record.public %]Yes[% ELSE %]No[% END %]</td>
171             <td>[% IF record.permanent %]No[% ELSE %]Yes[% END %]</td>
172         [% END %]
173         <td class="actions">
174             [% IF plugin %]
175                 <button class="btn btn-mini choose_entry" data-record-hashvalue="[% record.hashvalue %]"><i class="fa fa-plus"></i> Choose</button>
176             [% END %]
177             <button class="btn btn-mini download_entry" data-record-id="[% record.id %]"><i class="fa fa-download"></i> Download</button>
178             [% IF record.owner == owner || CAN_user_tools_upload_manage %]
179                 <button class="btn btn-mini delete_entry" data-record-id="[% record.id %]"><i class="fa fa-trash"></i> Delete</button>
180             [% END %]
181         </td>
182    </tr>
183    [% END %]
184    </tbody>
185    </table>
186 [% END %]
187
188 <style type="text/css">
189     #fileuploadstatus,#fileuploadfailed { display : none; }
190     #fileuploadstatus { margin:.4em; }
191     #fileuploadprogress { width:150px;height:10px;border:1px solid #666;background:url('[% interface %]/[% theme %]/img/progress.png') -300px 0px no-repeat; }
192 </style>
193
194 <script type="text/javascript">
195 //<![CDATA[
196     var errMESSAGES = [
197         "Error 0: Not in use",
198         _("This file already exists (in this category)."),
199         _("File could not be created. Check permissions."),
200         _("Your koha-conf.xml does not contain a valid upload_path."),
201         _("No temporary directory found."),
202         _("File could not be read."),
203         _("File has been deleted."),
204         _("File could not be deleted."),
205     ];
206 //]]>
207 </script>
208 <script type="text/javascript" src="[% interface %]/[% theme %]/js/file-upload.js"></script>
209 <script type="text/javascript">
210 //<![CDATA[
211 function StartUpload() {
212     if( $('#fileToUpload').prop('files').length == 0 ) return;
213     $('#fileToUpload').prop('disabled',true);
214     $('#fileuploadbutton').hide();
215     $("#fileuploadcancel").show();
216     $("#fileuploadfailed").html('');
217     $("#myalerts").hide('');
218     $("#myalerts").html('');
219     $("#fileuploadstatus").show();
220     $("#uploadedfileid").val('');
221     $("#searchfile").hide();
222     $("#lastbreadcrumb").text( _("Add a new upload") );
223
224     var cat, xtra='';
225     if( $("#uploadcategory").val() )
226         cat = encodeURIComponent( $("#uploadcategory").val() );
227     if( cat ) xtra= 'category=' + cat + '&';
228     [% IF plugin %]
229         xtra = xtra + 'public=1&temp=0';
230     [% ELSE %]
231         if( !cat ) xtra = 'temp=1&';
232         if( $('#public').prop('checked') ) xtra = xtra + 'public=1';
233     [% END %]
234     xhr= AjaxUpload( $('#fileToUpload'), $('#fileuploadprogress'), xtra, cbUpload );
235 }
236 function CancelUpload() {
237     if( xhr ) xhr.abort();
238     $("#fileuploadstatus").hide();
239     $('#fileToUpload').prop('disabled', false);
240     $('#fileuploadbutton').show();
241     $("#fileuploadcancel").hide();
242     $("#fileuploadfailed").show();
243     $("#fileuploadfailed").text( _("Upload status: Cancelled ") );
244 }
245 function cbUpload( status, fileid, err ) {
246     $('#fileToUpload').prop('disabled', false);
247     if( status=='done' ) {
248         var e = err? JSON.stringify(err): '';
249         SubmitMe( 'search', fileid, e );
250     } else {
251         $('#fileuploadbutton').show();
252         $("#fileuploadcancel").hide();
253         $("#fileuploadstatus").hide();
254         $("#fileuploadfailed").show();
255         $("#fileuploadfailed").html( _("Upload status: ") +
256             ( status=='failed'? _("Failed"):
257             ( status=='denied'? _("Denied"): status ))
258         );
259         ShowAlerts( err );
260     }
261 }
262 function ShowAlerts(err) {
263     var str = '';
264     for( var file in err ) {
265         str= str + '<p>' + file + ': ' +
266             errMESSAGES[ err[file] ] + '</p>';
267     }
268     if( str ) {
269         $('#myalerts').html(str);
270         $('#myalerts').show();
271     }
272 }
273 function CheckSearch() {
274     if( $("#term").val()=="" ) {
275         alert( _("Please enter a search term.") );
276         return false;
277     }
278     return true;
279 }
280 function SubmitMe(op, id, msg ) {
281     $("#submitter #op").val( op );
282     $("#submitter #id").val( id );
283     $("#submitter #msg").val( msg );
284     $("#submitter").submit();
285 }
286 function DeleteEntry(id) {
287     if( !confirm( _("Do you really want to delete this upload?") ))
288         return false;
289     ClearField();
290     SubmitMe( 'delete', id );
291 }
292 function ClearField() {
293     [% IF plugin %]
294         $(window.opener.document).find('#[% index %]').val( '' );
295     [% END %]
296 }
297 function Choose(hashval) {
298     var res = '[% Koha.Preference('OPACBaseURL') %]';
299     res = res.replace( /\/$/, '');
300     res = res + '/cgi-bin/koha/opac-retrieve-file.pl?id=' + hashval;
301     [% IF index %]
302         $(window.opener.document).find('#[% index %]').val( res );
303     [% END %]
304     window.close();
305 }
306 $(document).ready(function() {
307     [% IF msg %]
308         ShowAlerts( [% msg %] );
309     [% END %]
310     $("#fileuploadcancel").hide();
311     $("#public_cb").click(function() {
312         $("#public").click();
313     });
314     $("#fileuploadbutton").on("click",function(e){
315         e.preventDefault();
316         StartUpload();
317     });
318     $("#fileuploadcancel").on("click",function(e){
319         e.preventDefault();
320         CancelUpload();
321     });
322     $("#searchbutton").on("click",function(){
323         return CheckSearch();
324     });
325     $(".choose_entry").on("click",function(e){
326         e.preventDefault();
327         var record_hashvalue = $(this).data("record-hashvalue");
328         Choose( record_hashvalue );
329     });
330     $(".download_entry").on("click",function(e){
331         e.preventDefault();
332         var record_id = $(this).data("record-id");
333         SubmitMe( 'download', record_id );
334     });
335     $(".delete_entry").on("click",function(e){
336         e.preventDefault();
337         var record_id = $(this).data("record-id");
338         DeleteEntry( record_id );
339     });
340 });
341 //]]>
342 </script>
343 </head>
344
345 [% IF ( plugin ) %]
346     <body id="tools_upload" class="tools">
347         <div class="yui-t7">
348             <div id="bd">
349                 <div class="yui-g">
350 [% ELSE %]
351     <body id="tools_upload" class="tools">
352     [% INCLUDE 'header.inc' %]
353     [% INCLUDE 'cat-search.inc' %]
354     [% PROCESS breadcrumbs %]
355     <div id="doc3" class="yui-t2">
356         <div id="bd">
357             <div id="yui-main">
358                 <div class="yui-b">
359 [% END %]
360
361
362
363 <h1>Upload</h1>
364 <div class="dialog alert" id="myalerts" style="display:none;"></div>
365
366 [% PROCESS submitter %]
367 [% IF mode == 'new' || mode == 'deleted' %]
368     [% PROCESS form_new %]
369     [% PROCESS form_search %]
370     [% PROCESS closer %]
371 [% ELSIF mode == 'report' %]
372     [% IF uploads %]
373         <h3>Your request gave the following results:</h3>
374         [% PROCESS table_results %]
375         [% PROCESS closer %]
376         [% PROCESS back %]
377     [% ELSE %]
378         <h4>Sorry, your request had no results.</h4>
379         [% PROCESS newsearch %]
380     [% END %]
381 [% END %]
382
383 </div>
384
385 [% IF !plugin %]
386 </div>
387     <div class="yui-b noprint">
388         [% INCLUDE 'tools-menu.inc' %]
389     </div>
390 [% END %]
391
392 </div>
393 [% INCLUDE 'intranet-bottom.inc' %]