Bug 6390: Implement 'see mine/my branches/all baskets'-syspref

Code written by Edgar Fuß <ef@math.uni-bonn.de>,
Mathematisches Institut der Uniersität Bonn

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
- rebased on current master, fixed a conflict in booksellers.pl
- reworked permission checks to account for general acq permissions and
  superlibrarian permission
- rephrased text of system preference (Thx to Jared Camins-Esakov)

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This commit is contained in:
Jonathan Druart 2011-08-05 10:13:20 +02:00 committed by Chris Cormack
parent 5938eb306a
commit 8f75c19afd
4 changed files with 29 additions and 8 deletions

View File

@ -59,6 +59,7 @@ use CGI;
use C4::Dates qw/format_date/;
use C4::Bookseller qw/ GetBookSellerFromId GetBookSeller /;
use C4::Members qw/GetMember/;
use C4::Context;
my $query = CGI->new;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
@ -95,6 +96,11 @@ if ($loggedinuser) {
$uid = GetMember( borrowernumber => $loggedinuser )->{userid};
}
my $userenv = C4::Context::userenv;
my $viewbaskets = C4::Context->preference('AcqViewBaskets');
my $userbranch = $userenv->{branch};
#build result page
my $loop_suppliers = [];
@ -102,19 +108,25 @@ for my $vendor (@suppliers) {
my $baskets = get_vendors_baskets( $vendor->{id} );
my $loop_basket = [];
for my $basket ( @{$baskets} ) {
if (( $basket->{authorisedby}
&& $basket->{authorisedby} eq $loggedinuser
)
|| haspermission( $uid, { acquisition => q{*} } )
) {
my $authorisedby = $basket->{authorisedby};
my $basketbranch = GetMember( borrowernumber => $authorisedby )->{branchcode};
if ($userenv->{'flags'} & 1 || #user is superlibrarian
(haspermission( $uid, { acquisition => q{*} } ) && #user has acq permissions and
($viewbaskets eq 'all' || #user is allowed to see all baskets
($viewbaskets eq 'branch' && $authorisedby && $userbranch eq $basketbranch) || #basket belongs to user's branch
($basket->{authorisedby} && $viewbaskets == 'user' && $authorisedby == $loggedinuser) #user created this basket
)
)
) {
for my $date_field (qw( creationdate closedate)) {
if ( $basket->{$date_field} ) {
$basket->{$date_field} =
format_date( $basket->{$date_field} );
$basket->{$date_field} = format_date( $basket->{$date_field} );
}
}
push @{$loop_basket}, $basket;
push @{$loop_basket}, $basket;
}
}

View File

@ -76,6 +76,7 @@ my %tabsysprefs;
$tabsysprefs{AcqCreateItem}="Acquisitions";
$tabsysprefs{OrderPdfFormat}="Acquisitions";
$tabsysprefs{CurrencyFormat}="Acquisitions";
$tabsysprefs{AcqViewBaskets}="Acquisitions";
# Admin
$tabsysprefs{singleBranchMode} = "Admin";

View File

@ -1,3 +1,4 @@
INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('AcqViewBaskets','user','user|branch|all','Define which baskets a user is allowed to view: his own only, any within his branch or all','Choice');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('advancedMARCeditor',0,"If ON, the MARC editor won't display field/subfield descriptions",'','YesNo');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('AllowHoldDateInFuture','0','If set a date field is displayed on the Hold screen of the Staff Interface, allowing the hold date to be set in the future.','','YesNo');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OPACAllowHoldDateInFuture','0','If set, along with the AllowHoldDateInFuture system preference, OPAC users can set the date of a hold to be in the future.','','YesNo');

View File

@ -15,6 +15,13 @@ Acquisitions:
choices:
1: always ask for confirmation.
2: do not ask for confirmation.
-
- Show baskets
- pref: AcqViewBaskets
choices:
user: created by staff member.
branch: from staff member's branch.
all: in system, regardless of owner.
-
- Display currencies using the following format
- pref: CurrencyFormat