Main Koha release repository https://koha-community.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

432 lines
15 KiB

[% USE raw %]
[% USE Asset %]
[% USE Koha %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
[% IF plugin %]
<title>Upload plugin</title>
[% ELSE %]
<title>Koha &rsaquo; Tools &rsaquo; Upload</title>
[% END %]
[% INCLUDE 'doc-head-close.inc' %]
[% BLOCK plugin_pars %]
[% IF plugin %]
<input type="hidden" name="plugin" value="1" />
<input type="hidden" name="index" value="[% index | html %]" />
[% END %]
[% END %]
[% BLOCK breadcrumbs %]
<div id="breadcrumbs">
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
&rsaquo;
<a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a>
&rsaquo;
<a href="/cgi-bin/koha/tools/upload.pl">Upload</a>
&rsaquo;
<span id="lastbreadcrumb">
[% IF mode=='new' || mode =='deleted'%]
Add new upload or search
[% ELSE %]
Results
[% END %]
</span>
</div>
[% END %]
[% BLOCK form_new %]
<form method="post" action="/cgi-bin/koha/tools/upload.pl" id="uploadfile" enctype="multipart/form-data">
[% PROCESS plugin_pars %]
<fieldset class="rows" id="uploadform">
<legend>Upload new files</legend>
<ol>
<li>
<div id="fileuploadform">
<label for="fileToUpload">Select files: </label>
<input type="file" id="fileToUpload" name="fileToUpload" multiple/>
</div>
</li>
[% IF uploadcategories %]
<li>
<label for="uploadcategory">Category: </label>
<select id="uploadcategory" name="uploadcategory">
[% IF !plugin %]
<option value=""></option>
[% END %]
[% FOREACH cat IN uploadcategories %]
<option value="[% cat.code | html %]">[% cat.name | html %]</option>
[% END %]
</select>
</li>
[% END %]
[% IF !plugin %]
<li>
[% IF uploadcategories %]
<div class="hint">Note: For temporary uploads do not select a category.</div>
[% ELSE %]
<div class="hint">Note: No upload categories are defined. Add values to the UPLOAD authorized value category otherwise all uploads will be marked as temporary.</div>
[% END %]
</li>
[% END %]
<li>
[% IF plugin %]
<input type="hidden" id="public" name="public" value="1"/>
[% ELSE %]
<label id="public_cb">Allow public downloads:</label>
<input type="checkbox" id="public" name="public" />
[% END %]
</li>
</ol>
<fieldset class="action">
<button id="fileuploadbutton">Upload</button>
<button id="fileuploadcancel">Cancel</button>
</fieldset>
</fieldset>
<div id="fileuploadpanel">
<div id="fileuploadstatus" class="progress_panel">Upload progress:
<progress id="fileuploadprogress" max="100" value="0">
</progress>
<span class="fileuploadpercent">0</span>%
</div>
<div id="fileuploadfailed"></div>
</div>
</form>
[% END %]
[% BLOCK form_search %]
<form method="post" id="searchfile" action="/cgi-bin/koha/tools/upload.pl" enctype="multipart/form-data">
[% PROCESS plugin_pars %]
<input type="hidden" name="op" value="search"/>
<fieldset class="rows">
<legend>Search uploads by name or hashvalue</legend>
<ol>
<li>
<label for="term">Search term: </label>
<input type="text" id="term" name="term" value=""/>
</li>
</ol>
<fieldset class="action">
<button id="searchbutton" class="submit">Search</button>
</fieldset>
</fieldset>
</form>
[% END %]
[% BLOCK submitter %]
<form id="submitter" style="display:none;" method="post">
[% PROCESS plugin_pars %]
<input type="hidden" name="op" id="op" value=""/>
<input type="hidden" name="id" id="id" value="" />
<input type="hidden" name="msg" id="msg" value="" />
</form>
[% END %]
[% BLOCK closer %]
[% IF plugin %]
<div id="closewindow"><a class="btn btn-default btn-default close" href="#">Close</a></div>
[% END %]
[% END %]
[% BLOCK back %]
[% IF !plugin %]
<form id="back">
<fieldset class="action">
<button class="submit">Back</button>
</fieldset>
</form>
[% END %]
[% END %]
[% BLOCK newsearch %]
<form id="newsearch">
<fieldset class="action">
<button id="new_search">New search</button>
</fieldset>
</form>
[% IF plugin %]
<div id="closewindow"><a class="btn btn-default btn-default close" href="#">Close</a></div>
[% END %]
[% END %]
[% BLOCK table_results %]
<table id="uploadresults">
<thead>
<tr>
<th>Filename</th>
<th>Size</th>
<th>Hashvalue</th>
<th>Category</th>
[% IF !plugin %]<th>Public</th>[% END %]
[% IF !plugin %]<th>Temporary</th>[% END %]
<th class="nosort">Actions</th>
</tr>
</thead>
<tbody>
[% FOREACH record IN uploads %]
<tr>
<td>[% record.filename | html %]</td>
<td>[% record.filesize | html %]</td>
<td>[% record.hashvalue | html %]</td>
<td>[% record.uploadcategorycode | html %]</td>
[% IF !plugin %]
<td>[% IF record.public %]Yes[% ELSE %]No[% END %]</td>
<td>[% IF record.permanent %]No[% ELSE %]Yes[% END %]</td>
[% END %]
<td class="actions">
[% IF plugin %]
<button class="btn btn-default btn-xs choose_entry" data-record-hashvalue="[% record.hashvalue | html %]"><i class="fa fa-plus"></i> Choose</button>
[% END %]
<button class="btn btn-default btn-xs download_entry" data-record-id="[% record.id | html %]"><i class="fa fa-download"></i> Download</button>
[% IF record.owner == owner || CAN_user_tools_upload_manage %]
<button class="btn btn-default btn-xs delete_entry" data-record-id="[% record.id | html %]"><i class="fa fa-trash"></i> Delete</button>
[% END %]
</td>
</tr>
[% END %]
</tbody>
</table>
[% END %]
<style>
#fileuploadstatus,#fileuploadfailed { display : none; }
#fileuploadstatus { margin:.4em; }
#fileuploadprogress { width:150px;height:10px;border:1px solid #666;background:url('[% interface | html %]/[% theme | html %]/img/progress.png') -300px 0px no-repeat; }
</style>
</head>
[% IF ( plugin ) %]
<body id="tools_upload" class="tools">
<div class="main container-fluid">
<div class="row">
<div class="col-sm-12">
<main>
[% ELSE %]
<body id="tools_upload" class="tools">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
[% PROCESS breadcrumbs %]
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
[% END %]
<h1>Upload</h1>
<div class="dialog alert" id="myalerts" style="display:none;"></div>
[% PROCESS submitter %]
[% IF mode == 'new' || mode == 'deleted' %]
[% PROCESS form_new %]
[% PROCESS form_search %]
[% PROCESS closer %]
[% ELSIF mode == 'report' %]
[% IF uploads %]
<h3>Your request gave the following results:</h3>
[% PROCESS table_results %]
[% PROCESS closer %]
[% PROCESS back %]
[% ELSE %]
<h4>Sorry, your request had no results.</h4>
[% PROCESS newsearch %]
[% END %]
[% END %]
[% IF !plugin %]
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
[% INCLUDE 'tools-menu.inc' %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% ELSE %]
</main>
</div> <!-- .col-sm-12 -->
</div> <!-- /.row -->
[% END %]
[% MACRO jsinclude BLOCK %]
[% Asset.js("js/tools-menu.js") | $raw %]
[% INCLUDE 'datatables.inc' %]
[% Asset.js("js/file-upload.js") | $raw %]
<script>
function StartUpload() {
if( $('#fileToUpload').prop('files').length == 0 ) return;
$('#fileToUpload').prop('disabled',true);
$('#fileuploadbutton').hide();
$("#fileuploadcancel").show();
$("#fileuploadfailed").html('');
$("#myalerts").hide('');
$("#myalerts").html('');
$("#fileuploadstatus").show();
$("#uploadedfileid").val('');
$("#searchfile").hide();
$("#lastbreadcrumb").text( _("Add a new upload") );
var cat, xtra='';
if( $("#uploadcategory").val() )
cat = encodeURIComponent( $("#uploadcategory").val() );
if( cat ) xtra= 'category=' + cat + '&';
[% IF plugin %]
xtra = xtra + 'public=1&temp=0';
[% ELSE %]
if( !cat ) xtra = 'temp=1&';
if( $('#public').prop('checked') ) xtra = xtra + 'public=1';
[% END %]
xhr= AjaxUpload( $('#fileToUpload'), $('#fileuploadprogress'), xtra, cbUpload );
}
function CancelUpload() {
if( xhr ) xhr.abort();
$("#fileuploadstatus").hide();
$('#fileToUpload').prop('disabled', false);
$('#fileuploadbutton').show();
$("#fileuploadcancel").hide();
$("#fileuploadfailed").show();
$("#fileuploadfailed").text( _("Upload status: Cancelled ") );
}
function cbUpload( status, fileid, err ) {
$('#fileToUpload').prop('disabled', false);
if( status=='done' ) {
var e = err? JSON.stringify(err): '';
SubmitMe( 'search', fileid, e );
} else {
$('#fileuploadbutton').show();
$("#fileuploadcancel").hide();
$("#fileuploadstatus").hide();
$("#fileuploadfailed").show();
$("#fileuploadfailed").html( _("Upload status: ") +
( status=='failed'? _("Failed"):
( status=='denied'? _("Denied"): status ))
);
ShowAlerts( err );
}
}
function ShowAlerts(err) {
var str = '';
for( var file in err ) {
str= str + '<p>' + file + ': ' +
errMESSAGES( err[file].code ) + '</p>';
}
if( str ) {
$('#myalerts').html(str);
$('#myalerts').show();
}
}
function errMESSAGES(code) {
var rv;
switch(code) {
case 'UPLERR_ALREADY_EXISTS':
rv = _("This file already exists (in this category).");
break;
case 'UPLERR_CANNOT_WRITE':
rv = _("File could not be created. Check permissions.");
break;
case 'UPLERR_NO_ROOT_DIR':
rv = _("Your koha-conf.xml does not contain a valid upload_path.");
break;
case 'UPLERR_NO_TEMP_DIR':
rv = _("No temporary directory found.");
break;
case 'UPLERR_FILE_NOT_READ':
rv = _("File could not be read.");
break;
case 'UPL_FILE_DELETED': // An alert, no error
rv = _("File has been deleted.");
break;
case 'UPLERR_FILE_NOT_DELETED':
rv = _("File or upload record could not be deleted.");
break;
default:
rv = code;
}
return rv;
}
function CheckSearch() {
if( $("#term").val()=="" ) {
alert( _("Please enter a search term.") );
return false;
}
return true;
}
function SubmitMe(op, id, msg ) {
$("#submitter #op").val( op );
$("#submitter #id").val( id );
$("#submitter #msg").val( msg );
$("#submitter").submit();
}
function DeleteEntry(id) {
if( !confirm( _("Do you really want to delete this upload?") ))
return false;
ClearField();
SubmitMe( 'delete', id );
}
function ClearField() {
[% IF plugin %]
$(window.opener.document).find('#[% index | html %]').val( '' );
[% END %]
}
function Choose(hashval) {
var res = '[% Koha.Preference('OPACBaseURL') | html %]';
res = res.replace( /\/$/, '');
res = res + '/cgi-bin/koha/opac-retrieve-file.pl?id=' + hashval;
[% IF index %]
$(window.opener.document).find('#[% index | html %]').val( res );
[% END %]
window.close();
}
$(document).ready(function() {
$("#uploadresults").dataTable($.extend(true, {}, dataTablesDefaults, {
"aoColumnDefs": [
{ 'bSortable': false, 'aTargets': [ 'nosort' ] }
],
"sPaginationType": "full"
}));
[% IF msg %]
ShowAlerts( [% msg | html %] );
[% END %]
$("#fileuploadcancel").hide();
$("#public_cb").click(function() {
$("#public").click();
});
$("#fileuploadbutton").on("click",function(e){
e.preventDefault();
StartUpload();
});
$("#fileuploadcancel").on("click",function(e){
e.preventDefault();
CancelUpload();
});
$("#searchbutton").on("click",function(){
return CheckSearch();
});
$(".choose_entry").on("click",function(e){
e.preventDefault();
var record_hashvalue = $(this).data("record-hashvalue");
Choose( record_hashvalue );
});
$(".download_entry").on("click",function(e){
e.preventDefault();
var record_id = $(this).data("record-id");
SubmitMe( 'download', record_id );
});
$(".delete_entry").on("click",function(e){
e.preventDefault();
var record_id = $(this).data("record-id");
DeleteEntry( record_id );
});
$("#new_search").on("click",function(e){
e.preventDefault();
SubmitMe('new');
});
});
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]