use vars qw($debug @EXPORT @ISA $VERSION);
BEGIN {
- $VERSION = 1.01;
+ $VERSION = 3.07.00.049;
@ISA = qw(Exporter);
@EXPORT = qw(&shelfpage);
$debug = $ENV{DEBUG} || 0;
last SWITCH;
}
my $shelf = {
- 'shelfname' => $query->param('shelfname'),
- 'sortfield' => $query->param('sortfield'),
+ shelfname => $query->param('shelfname'),
+ sortfield => $query->param('sortfield'),
+ allow_add => $query->param('allow_add'),
+ allow_delete_own => $query->param('allow_delete_own'),
+ allow_delete_other => $query->param('allow_delete_other'),
};
if($query->param('category')) { #optional
$shelf->{category}= $query->param('category');
}
#Editing a shelf
elsif ( $op eq 'modif' ) {
- my ( $shelfnumber2, $shelfname, $owner, $category, $sortfield ) = GetShelf($shelfnumber);
+ my ( $shelfnumber2, $shelfname, $owner, $category, $sortfield, $allow_add, $allow_delete_own, $allow_delete_other) = GetShelf($shelfnumber);
my $member = GetMember( 'borrowernumber' => $owner );
my $ownername = defined($member) ? $member->{firstname} . " " . $member->{surname} : '';
$edit = 1;
- $sortfield='' unless $sortfield;
$template->param(
edit => 1,
display => $displaymode,
ownername => $ownername,
"category$category" => 1,
category => $category,
- "sort_$sortfield" => 1,
+ sortfield => $sortfield,
+ allow_add => $allow_add,
+ allow_delete_own => $allow_delete_own,
+ allow_delete_other => $allow_delete_other,
);
}
last SWITCH;
# explicitly fetch this shelf
my ($shelfnumber2,$shelfname,$owner,$category,$sorton) = GetShelf($shelfnumber);
- $template->param( 'AllowOnShelfHolds' => C4::Context->preference('AllowOnShelfHolds') );
+ $template->param(
+ 'AllowOnShelfHolds' => C4::Context->preference('AllowOnShelfHolds'),
+ 'DisplayMultiPlaceHold' => C4::Context->preference('DisplayMultiPlaceHold'),
+ );
if (C4::Context->preference('TagsEnabled')) {
$template->param(TagsEnabled => 1);
foreach (qw(TagsShowOnList TagsInputOnList)) {
#check that the user can view the shelf
if ( ShelfPossibleAction( $loggedinuser, $shelfnumber, 'view' ) ) {
my $items;
- my $authorsort;
- my $yearsort;
my $tag_quantity;
- my $sortfield = ( $query->param('sortfield') ? $query->param('sortfield') : 'title' );
- if ( $sortfield eq 'author' ) {
- $authorsort = 'author';
- }
- if ( $sortfield eq 'year' ) {
- $yearsort = 'year';
- }
- ( $items, $totitems ) = GetShelfContents( $shelfnumber, $shelflimit, $shelfoffset );
+ my $sortfield = ( $sorton ? $sorton : 'title' );
+ $sortfield = $query->param('sort') || $sortfield; ## Passed in sorting overrides default sorting
+ my $direction = $query->param('direction') || 'asc';
+ $template->param(
+ sort => $sortfield,
+ direction => $direction,
+ );
+ ( $items, $totitems ) = GetShelfContents( $shelfnumber, $shelflimit, $shelfoffset, $sortfield, $direction );
for my $this_item (@$items) {
my $biblionumber = $this_item->{'biblionumber'};
my $record = GetMarcBiblio($biblionumber);
- $this_item->{XSLTBloc} =
- XSLTParse4Display($biblionumber, $record, 'Results', 'opac')
- if C4::Context->preference("OPACXSLTResultsDisplay") && $type eq 'opac';
+ if (C4::Context->preference("OPACXSLTResultsDisplay") && $type eq 'opac') {
+ $this_item->{XSLTBloc} = XSLTParse4Display($biblionumber, $record, "OPACXSLTResultsDisplay");
+ } elsif (C4::Context->preference("XSLTResultsDisplay") && $type eq 'intranet') {
+ $this_item->{XSLTBloc} = XSLTParse4Display($biblionumber, $record, "XSLTResultsDisplay");
+ }
# the virtualshelfcontents table does not store these columns nor are they retrieved from the items
# and itemtypes tables, so I'm commenting them out for now to quiet the log -crn
#$this_item->{imageurl} = $imgdir."/".$itemtypes->{ $this_item->{itemtype} }->{'imageurl'};
#$this_item->{'description'} = $itemtypes->{ $this_item->{itemtype} }->{'description'};
$this_item->{'dateadded'} = format_date( $this_item->{'dateadded'} );
- $this_item->{'imageurl'} = getitemtypeinfo( $this_item->{'itemtype'} )->{'imageurl'};
+ $this_item->{'imageurl'} = getitemtypeinfo( $this_item->{'itemtype'}, $type )->{'imageurl'};
$this_item->{'coins'} = GetCOinSBiblio( $record );
$this_item->{'subtitle'} = GetRecordValue('subtitle', $record, GetFrameworkCode($this_item->{'biblionumber'}));
$this_item->{'normalized_upc'} = GetNormalizedUPC( $record,$marcflavour);
$this_item->{'normalized_ean'} = GetNormalizedEAN( $record,$marcflavour);
$this_item->{'normalized_oclc'} = GetNormalizedOCLCNumber($record,$marcflavour);
$this_item->{'normalized_isbn'} = GetNormalizedISBN(undef,$record,$marcflavour);
+ if(!defined($this_item->{'size'})) { $this_item->{'size'} = "" }; #TT has problems with size
# Getting items infos for location display
my @items_infos = &GetItemsLocationInfo( $this_item->{'biblionumber'});
$this_item->{'itemsissued'} = CountItemsIssued( $this_item->{'biblionumber'} );
}
}
+ if($type eq 'intranet'){
+ # Build drop-down list for 'Add To:' menu...
+ my ($totalref, $pubshelves, $barshelves)=
+ C4::VirtualShelves::GetSomeShelfNames($loggedinuser,'COMBO',1);
+ $template->param(
+ addbarshelves => $totalref->{bartotal},
+ addbarshelvesloop => $barshelves,
+ addpubshelves => $totalref->{pubtotal},
+ addpubshelvesloop => $pubshelves,
+ );
+ }
push @paramsloop, { display => 'privateshelves' } if $category == 1;
$showadd = 1;
my $i = 0;
shelfname => $shelfname,
shelfnumber => $shelfnumber,
viewshelf => $shelfnumber,
- authorsort => $authorsort,
- yearsort => $yearsort,
+ sortfield => $sortfield,
manageshelf => $manageshelf,
allowremovingitems => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'delete'),
allowaddingitem => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'add'),
my $shelfnumber = AddShelf( {
shelfname => $newshelf,
sortfield => $query->param('sortfield'),
- category => $query->param('category') },
+ category => $query->param('category'),
+ allow_add => $query->param('allow_add'),
+ allow_delete_own => $query->param('allow_delete_own'),
+ allow_delete_other => $query->param('allow_delete_other'),
+ },
$query->param('owner') );
$stay = 1;
if ( $shelfnumber == -1 ) { #shelf already exists.
my $category = $shelflist->{$element}->{'category'};
my $owner = $shelflist->{$element}->{'owner'}||0;
my $canmanage = ShelfPossibleAction( $loggedinuser, $element, 'manage' );
- my $sortfield = $shelflist->{$element}->{'sortfield'};
- if ( $sortfield ){
- if ( $sortfield eq 'author' ) {
- $shelflist->{$element}->{"authorsort"} = 'author';
- } elsif ( $sortfield eq 'year' ) {
- $shelflist->{$element}->{"yearsort"} = 'year';
- }
- }
$shelflist->{$element}->{"viewcategory$category"} = 1;
$shelflist->{$element}->{manageshelf} = $canmanage;
if($canmanage || ($loggedinuser && $owner==$loggedinuser)) {
my $url = $type eq 'opac' ? "/cgi-bin/koha/opac-shelves.pl" : "/cgi-bin/koha/virtualshelves/shelves.pl";
my %qhash = ();
- foreach (qw(display viewshelf sortfield)) {
+ foreach (qw(display viewshelf sortfield sort direction)) {
$qhash{$_} = $query->param($_) if $query->param($_);
}
( scalar keys %qhash ) and $url .= '?' . join '&', map { "$_=$qhash{$_}" } keys %qhash;
shelvesloopall => [ ( @shelvesloop, @shelveslooppriv ) ],
numberCanManage => $numberCanManage,
"BiblioDefaultView" . C4::Context->preference("BiblioDefaultView") => 1,
- csv_profiles => GetCsvProfilesLoop()
+ csv_profiles => GetCsvProfilesLoop('marc')
);
if ( $shelfnumber
or $shelves
$edit
) {
$template->param( seflag => 1 );
+ #This hack is just another argument for refactoring this script one day
+ #At this point you are adding or editing a list; if you add, then you add a private list (by default) with permissions as below; if you edit, do not pass these permissions, they must come from the database
+ $template->param( allow_add => 0, allow_delete_own => 1, allow_delete_other => 0) unless $shelfnumber;
}
#Next call updates the shelves for the Lists button.