Kyle M Hall
fdf3e77e01
When adding an item to a list from catalogue/detail.pl, we can see the latest 10 public lists. If all those lists are set as "staff only" for "Allow changes to contents from" they will not show up in the addbybiblionumber.pl popup. This is because the query in the popup does not look for "staff only" lists while the "Add to list" button does. Test plan: 1) Create 11 "staff only" lists as staff member A 2) Log in as staff member B 3) Find a record, click the "Add to list" button, note you can see lists 2 through 11 here 4) In the pulldown, choose the "More lists" option 5) Note those lists are not visible in the "Choose list" pulldown under "Select an existing list" 6) Apply this patch 7) Restart all the things! 8) Click the "More lists" option again 9) Those lists should now be in the pulldown! Signed-off-by: sabrina <kiehl@mpis.mpg.de> Signed-off-by: Mikko Liimatainen <mikko.liimatainen@turku.fi> Signed-off-by: Julian Maurice <julian.maurice@biblibre.com> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de> (cherry picked from commit5961e5c2a3
) Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com> (cherry picked from commit39b75d3da0
) Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
208 lines
5.9 KiB
Perl
Executable file
208 lines
5.9 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# Copyright 2000-2002 Katipo Communications
|
|
# Copyright 2016 Koha Development Team
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
|
|
=head1 NAME
|
|
|
|
addbybiblionumber.pl
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
This script allow to add a virtual in a virtual shelf from a biblionumber.
|
|
|
|
=head1 CGI PARAMETERS
|
|
|
|
=over 4
|
|
|
|
=item biblionumber
|
|
|
|
The biblionumber
|
|
|
|
=item shelfnumber
|
|
|
|
the shelfnumber where to add the virtual.
|
|
|
|
=item newvirtualshelf
|
|
|
|
if this parameter exists, then it must be equals to the name of the shelf
|
|
to add.
|
|
|
|
=item public
|
|
|
|
if this script has to add a shelf, it adds one with this 'public' setting.
|
|
|
|
=item newshelf
|
|
|
|
if this parameter exists, then we create a new shelf
|
|
|
|
=back
|
|
|
|
=cut
|
|
|
|
use Modern::Perl;
|
|
|
|
use CGI qw ( -utf8 );
|
|
use C4::Output qw( output_html_with_http_headers );
|
|
use C4::Auth qw( get_template_and_user );
|
|
|
|
use Koha::Biblios;
|
|
use Koha::Virtualshelves;
|
|
|
|
my $query = CGI->new;
|
|
my $shelfnumber = $query->param('shelfnumber');
|
|
my $newvirtualshelf = $query->param('newvirtualshelf');
|
|
my $newshelf = $query->param('newshelf');
|
|
my $public = $query->param('public');
|
|
my $sortfield = $query->param('sortfield');
|
|
my $confirmed = $query->param('confirmed') || 0;
|
|
my ( $errcode, $authorized ) = ( 0, 1 );
|
|
my @biblionumbers = $query->multi_param('biblionumber');
|
|
|
|
if ( @biblionumbers == 0 && $query->param('biblionumbers') ) {
|
|
my $str = $query->param('biblionumbers');
|
|
@biblionumbers = split '/', $str;
|
|
} elsif ( @biblionumbers == 1 && $biblionumbers[0] =~ /\// ) {
|
|
@biblionumbers = split '/', $biblionumbers[0];
|
|
}
|
|
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{ template_name => "virtualshelves/addbybiblionumber.tt",
|
|
query => $query,
|
|
type => "intranet",
|
|
flagsrequired => { catalogue => 1 },
|
|
}
|
|
);
|
|
|
|
if ($newvirtualshelf) {
|
|
my $shelf = eval {
|
|
Koha::Virtualshelf->new(
|
|
{
|
|
shelfname => $newvirtualshelf,
|
|
public => $public,
|
|
sortfield => $sortfield,
|
|
owner => $loggedinuser,
|
|
}
|
|
)->store;
|
|
};
|
|
if ( $@ or not $shelf ) {
|
|
$errcode = 1;
|
|
$authorized = 0;
|
|
} else {
|
|
|
|
for my $biblionumber (@biblionumbers) {
|
|
$shelf->add_biblio( $biblionumber, $loggedinuser );
|
|
}
|
|
|
|
#Reload the page where you came from
|
|
print $query->header;
|
|
print "<html><meta http-equiv=\"refresh\" content=\"0\" /><body onload=\"window.opener.location.reload(true);self.close();\"></body></html>";
|
|
exit;
|
|
}
|
|
|
|
} elsif ( $shelfnumber && $confirmed ) {
|
|
my $shelf = Koha::Virtualshelves->find($shelfnumber);
|
|
if ( $shelf->can_biblios_be_added($loggedinuser) ) {
|
|
for my $biblionumber (@biblionumbers) {
|
|
$shelf->add_biblio( $biblionumber, $loggedinuser );
|
|
}
|
|
|
|
#Close this page and return
|
|
print $query->header;
|
|
print "<html><meta http-equiv=\"refresh\" content=\"0\" /><body onload=\"self.close();\"></body></html>";
|
|
exit;
|
|
} else {
|
|
$errcode = 2; #no perm
|
|
$authorized = 0;
|
|
}
|
|
|
|
} elsif ($shelfnumber) { #still needs confirmation
|
|
my $shelf = Koha::Virtualshelves->find($shelfnumber);
|
|
if ( $shelf->can_biblios_be_added($loggedinuser) ) {
|
|
|
|
#confirm adding to specific shelf
|
|
$template->param(
|
|
singleshelf => 1,
|
|
shelfnumber => $shelf->shelfnumber,
|
|
shelfname => $shelf->shelfname,
|
|
);
|
|
} else {
|
|
$authorized = 0;
|
|
$errcode = 2; #no perm
|
|
}
|
|
|
|
} else {
|
|
my $private_shelves = Koha::Virtualshelves->search(
|
|
{ public => 0,
|
|
owner => $loggedinuser,
|
|
allow_change_from_owner => 1,
|
|
},
|
|
{ order_by => 'shelfname' }
|
|
);
|
|
my $shelves_shared_with_me = Koha::Virtualshelves->search(
|
|
{ public => 0,
|
|
'virtualshelfshares.borrowernumber' => $loggedinuser,
|
|
allow_change_from_others => 1,
|
|
},
|
|
{ join => 'virtualshelfshares', }
|
|
);
|
|
my $public_shelves = Koha::Virtualshelves->search(
|
|
{ public => 1,
|
|
-or => [
|
|
-and => {
|
|
allow_change_from_owner => 1,
|
|
owner => $loggedinuser,
|
|
},
|
|
allow_change_from_others => 1,
|
|
allow_change_from_staff => 1,
|
|
],
|
|
},
|
|
{ order_by => 'shelfname' }
|
|
);
|
|
$template->param(
|
|
private_shelves => $private_shelves,
|
|
private_shelves_shared_with_me => $shelves_shared_with_me,
|
|
public_shelves => $public_shelves,
|
|
);
|
|
|
|
}
|
|
|
|
my @biblios;
|
|
for my $biblionumber (@biblionumbers) {
|
|
my $biblio = Koha::Biblios->find( $biblionumber );
|
|
push(
|
|
@biblios,
|
|
{ biblionumber => $biblionumber,
|
|
title => $biblio->title,
|
|
author => $biblio->author,
|
|
}
|
|
);
|
|
}
|
|
$template->param(
|
|
multiple => ( scalar(@biblios) > 1 ),
|
|
total => scalar @biblios,
|
|
biblios => \@biblios,
|
|
);
|
|
|
|
$template->param(
|
|
newshelf => $newshelf || 0,
|
|
authorized => $authorized,
|
|
errcode => $errcode,
|
|
);
|
|
output_html_with_http_headers $query, $cookie, $template->output;
|