use CGI qw/-utf8/;
use JSON;
-use C4::Auth;
-use C4::Output;
-use Koha::UploadedFile;
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_html_with_http_headers );
use Koha::UploadedFiles;
+use constant ERR_READING => 'UPLERR_FILE_NOT_READ';
+use constant ALERT_DELETED => 'UPL_FILE_DELETED'; # alert, no error
+use constant ERR_NOT_DELETED => 'UPLERR_FILE_NOT_DELETED';
+
my $input = CGI::->new;
my $op = $input->param('op') // 'new';
my $plugin = $input->param('plugin');
my $term = $input->param('term');
my $id = $input->param('id');
my $msg = $input->param('msg');
+my $browsecategory = $input->param('browsecategory');
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{ template_name => "tools/upload.tt",
query => $input,
type => "intranet",
- authnotrequired => 0,
flagsrequired => { tools => 'upload_general_files' },
}
);
index => $index,
owner => $loggedinuser,
plugin => $plugin,
+ uploadcategories => Koha::UploadedFiles->getCategories,
);
if ( $op eq 'new' ) {
$template->param(
mode => 'new',
- uploadcategories => Koha::UploadedFile->getCategories,
+ );
+ output_html_with_http_headers $input, $cookie, $template->output;
+
+} elsif ( $op eq 'browse' ) {
+ my $uploads;
+ if ($browsecategory){
+ $uploads = Koha::UploadedFiles->search({
+ uploadcategorycode => $browsecategory,
+ $plugin? ( public => 1 ): (),
+ })->unblessed;
+ }
+
+ $template->param(
+ mode => 'report',
+ msg => $msg,
+ uploads => $uploads,
+ browsecategory => $browsecategory,
);
output_html_with_http_headers $input, $cookie, $template->output;
} elsif ( $op eq 'search' ) {
my $uploads;
- if( $id ) {
- my $rec = Koha::UploadedFiles->search({
- id => $id,
- $plugin? ( public => 1 ) : (),
- })->next;
- push @$uploads, $rec->unblessed if $rec;
+ if( $id ) { # might be a comma separated list
+ my @id = split /,/, $id;
+ foreach my $recid (@id) {
+ my $rec = Koha::UploadedFiles->find( $recid );
+ push @$uploads, $rec->unblessed
+ if $rec && ( $rec->public || !$plugin );
+ # Do not show private uploads in the plugin mode (:editor)
+ }
} else {
$uploads = Koha::UploadedFiles->search_term({
term => $term,
} elsif ( $op eq 'delete' ) {
# delete only takes the id parameter
- my $upload = $plugin?
- Koha::UploadedFiles->search({ public => 1, id => $id })->next:
- Koha::UploadedFiles->find($id);
- my $fn = $upload? $upload->delete: undef;
+ my $rec = Koha::UploadedFiles->find($id);
+ undef $rec if $rec && $plugin && !$rec->public;
+ my $fn = $rec ? $rec->filename : '';
+ my $delete = $rec ? $rec->delete : undef;
#TODO Improve error handling
- my $msg = $fn?
- JSON::to_json({ $fn => 6 }):
- JSON::to_json({
- $upload? $upload->filename: ( $id? "id $id": '[No id]' ), 7,
- });
+ my $msg = $delete
+ ? JSON::to_json({ $fn => { code => ALERT_DELETED }})
+ : $id
+ ? JSON::to_json({ $fn || $id, { code => ERR_NOT_DELETED }})
+ : '';
$template->param(
mode => 'deleted',
msg => $msg,
- uploadcategories => Koha::UploadedFile->getCategories,
);
output_html_with_http_headers $input, $cookie, $template->output;
} elsif ( $op eq 'download' ) {
- my $rec = Koha::UploadedFiles->search({
- id => $id,
- $plugin? ( public => 1 ) : (),
- })->next;
+ my $rec = Koha::UploadedFiles->find( $id );
+ undef $rec if $rec && $plugin && !$rec->public;
my $fh = $rec? $rec->file_handle: undef;
if ( !$rec || !$fh ) {
$template->param(
mode => 'new',
- msg => JSON::to_json( { $id => 5 } ),
- uploadcategories => Koha::UploadedFile->getCategories,
+ msg => JSON::to_json({ $id => { code => ERR_READING }}),
);
output_html_with_http_headers $input, $cookie, $template->output;
} else {