Bug 9757: Make staff client list contents view more like search results
This patch revises the staff client list contents view to better match staff client search results, showing more information and offering more ways to interact with the contents than before. - List contents output has been modified so that the staff client can use XSLT-formatted data just as the OPAC can. As in the OPAC it depends on XSLTResultsDisplay being enabled. - A "toolbar" has been added which is similar to that in search results, offering the option to add items to a Cart, add them to a different list, place multiple holds, remove items from the list, or merge records. - This toolbar has been made to float on scroll like the one on the MARC edit page. - Library and shelving location have been added to the display of call numbers. Call numbers are linked to a search as they are in search results. - Edit links are included just as they are in search results. - Automatic focus on the add by barcode form has been removed so that the page doesn't jump to the bottom unnecessarily. - basket.js's "addMultiple" function has been modified so that it receives an array of checkboxes rather than looking for checkboxes in a specific form. This helps abstract its functionality for use on both search results and lists. results.tt is modified accordingly. - The page layout has been widened to make room for the increased amount of information on the page. - A new "merge" icon has been added to the default Bootstrap sprite. To test: - View both public and private lists in the staff client. - View lists with and without contents. - Test the functionality of options in the toolbar: Add to cart, add to lists, place multiple holds, remove items, merge items. - Test with users with and without cataloging privileges to confirm that catalog-related controls are correctly shown or hidden. - Test with XSLTResultsDisplay set both to "default" and empty. - Since the staff client and OPAC use some of the same code, test that lists in the OPAC have not broken. - Since JavaScript was modified which affects both lists and search results, confirm that adding items to the Cart and Lists from search results hasn't been broken by this patch. Revision corrects conditional display of hold link, hiding it in cases where there are no items or the record's itemtype is not for loan. Also corrected is the behavior of the Cart/List "save" button in order to prevent it from submitting the "remove items" action which is the default for the form. Signed-off-by: jmbroust <jean-manuel.broust@univ-lyon2.fr> Edit: Patch rebased against current master and hard-coded paths to /prog/ corrected. Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This commit is contained in:
parent
114ad0015b
commit
640124829a
7 changed files with 232 additions and 81 deletions
|
@ -237,7 +237,10 @@ sub shelfpage {
|
|||
# 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)) {
|
||||
|
@ -259,9 +262,11 @@ sub shelfpage {
|
|||
for my $this_item (@$items) {
|
||||
my $biblionumber = $this_item->{'biblionumber'};
|
||||
my $record = GetMarcBiblio($biblionumber);
|
||||
$this_item->{XSLTBloc} =
|
||||
XSLTParse4Display($biblionumber, $record, "OPACXSLTResultsDisplay")
|
||||
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
|
||||
|
@ -292,6 +297,17 @@ sub shelfpage {
|
|||
}
|
||||
|
||||
}
|
||||
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;
|
||||
|
|
|
@ -139,12 +139,6 @@ a.tagnum {
|
|||
.yui-gf .yui-u {
|
||||
width: 79.2%;
|
||||
}
|
||||
/* Class to be added to toolbar when it starts being fixed at the top of the screen*/
|
||||
.floating {
|
||||
-webkit-box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .5);
|
||||
box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .5);
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
tr.active td {
|
||||
background-color: #FFFFCC;
|
||||
|
|
|
@ -2411,6 +2411,10 @@ video {
|
|||
background-position:-3px -166px;
|
||||
}
|
||||
|
||||
.icon-merge {
|
||||
background-position:-48px -166px;
|
||||
}
|
||||
|
||||
#toolbar .btn,
|
||||
#toolbar .dropdown-menu {
|
||||
font-size: 13px;
|
||||
|
@ -2545,6 +2549,7 @@ a.disabled {
|
|||
.modal-header .closebtn{margin-top:2px;}
|
||||
.closebtn{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.closebtn:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);}
|
||||
button.closebtn{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}
|
||||
|
||||
.btn-group label,
|
||||
.btn-group select {
|
||||
font-size: 13px;
|
||||
|
@ -2570,4 +2575,10 @@ fieldset.rows table.mceListBox {
|
|||
font-size: 140%;
|
||||
font-family : monospace;
|
||||
padding : .3em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Class to be added to toolbar when it starts being fixed at the top of the screen*/
|
||||
.floating {
|
||||
-webkit-box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .5);
|
||||
box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .5);
|
||||
}
|
||||
|
|
|
@ -153,17 +153,17 @@ function SelectAll(){
|
|||
}
|
||||
}
|
||||
|
||||
function addMultiple(){
|
||||
function addMultiple(biblist){
|
||||
var c_value = "";
|
||||
if(document.bookbag_form.biblionumber.length > 0) {
|
||||
for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
|
||||
if (document.bookbag_form.biblionumber[i].checked) {
|
||||
c_value = c_value + document.bookbag_form.biblionumber[i].value + "/";
|
||||
if(biblist.length > 0) {
|
||||
for (var i=0; i < biblist.length; i++) {
|
||||
if (biblist[i].checked) {
|
||||
c_value = c_value + biblist[i].value + "/";
|
||||
}
|
||||
}
|
||||
addSelRecords(c_value);
|
||||
} else {
|
||||
c_value = c_value + document.bookbag_form.biblionumber.value + "/";
|
||||
c_value = c_value + biblist.value + "/";
|
||||
addSelRecords(c_value);
|
||||
}
|
||||
}
|
||||
|
@ -403,19 +403,19 @@ function addSelToShelf() {
|
|||
|
||||
/// vShelfAdd() builds url string for multiple-biblio adds.
|
||||
|
||||
function vShelfAdd() {
|
||||
bibs= new Array;
|
||||
if(document.bookbag_form.biblionumber.length > 0) {
|
||||
for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
|
||||
if (document.bookbag_form.biblionumber[i].checked) {
|
||||
bibs.push("biblionumber=" + document.bookbag_form.biblionumber[i].value);
|
||||
function vShelfAdd(biblist) {
|
||||
bibs = new Array();
|
||||
if(biblist.length > 0) {
|
||||
for (var i=0; i < biblist.length; i++) {
|
||||
if (biblist[i].checked) {
|
||||
bibs.push("biblionumber=" + biblist[i].value);
|
||||
}
|
||||
}
|
||||
if (bibs.length == 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
|
||||
if (bibs.length == 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
|
||||
return bibs.join("&");
|
||||
} else {
|
||||
if (document.bookbag_form.biblionumber.checked) {
|
||||
return "biblionumber=" + document.bookbag_form.biblionumber.value;
|
||||
if (biblist.checked) {
|
||||
return "biblionumber=" + biblist.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,25 +30,27 @@ function Dopop(link) {
|
|||
newin=window.open(link,'popup','width=500,height=500,toolbar=false,scrollbars=yes,resizeable=yes');
|
||||
}
|
||||
function cartList(){
|
||||
var checkboxes = $("#searchresults").find(":checkbox");
|
||||
var vshelf = vShelfAdd(checkboxes);
|
||||
if($("#addto").find("option:selected").attr("value") == "addtolist"){
|
||||
var shelfnumber = $("#addto").find("option:selected").attr("id").replace("s","");
|
||||
if (vShelfAdd()) {
|
||||
Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?shelfnumber='+shelfnumber+'&confirm=1&' + vShelfAdd());
|
||||
if (vshelf) {
|
||||
Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?shelfnumber='+shelfnumber+'&confirm=1&' + vshelf);
|
||||
}
|
||||
return false;
|
||||
} else if($("#addto").find("option:selected").attr("value") == "newlist"){
|
||||
if (vShelfAdd()) {
|
||||
Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?newshelf=1&' + vShelfAdd());
|
||||
if (vshelf) {
|
||||
Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?newshelf=1&' + vshelf);
|
||||
}
|
||||
return false;
|
||||
} else if($("#addto").find("option:selected").attr("value") == "morelists"){
|
||||
if (vShelfAdd()) {
|
||||
Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?' + vShelfAdd());
|
||||
if (vshelf) {
|
||||
Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?' + vshelf);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if($("#addto").find("option:selected").attr("value") == "addtocart"){
|
||||
addMultiple();
|
||||
addMultiple(checkboxes);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
[% INCLUDE 'doc-head-open.inc' %]
|
||||
<title>Koha › [% IF ( viewshelf ) %]Lists › Contents of [% shelfname | html %][% ELSE %]Lists[% END %][% IF ( shelves ) %] › Create new list[% END %][% IF ( edit ) %] › Edit list [% shelfname | html %][% END %]</title>
|
||||
[% INCLUDE 'doc-head-close.inc' %]
|
||||
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
|
||||
[% IF ( viewshelf ) %]
|
||||
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
|
||||
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
|
||||
[% END %]
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
|
||||
var MSG_NO_ITEM_SELECTED = _("Nothing is selected.");
|
||||
var MSG_REMOVE_FROM_LIST = _("Are you sure you want to remove these records from the shelf?");
|
||||
var MSG_CONFIRM_DELETE_LIST = _("Are you sure you want to remove this list?");
|
||||
|
||||
[% IF ( viewshelf ) %]
|
||||
$(document).ready(function(){
|
||||
$("#addbarcode").focus();
|
||||
[% IF ( itemsloop ) %]$('#searchheader').fixFloat();[% END %]
|
||||
$("span.clearall").html("<a id=\"CheckNone\" href=\"/cgi-bin/koha/shelves.pl\">"+_("Clear all")+"<\/a>");
|
||||
$("span.checkall").html("<a id=\"CheckAll\" href=\"/cgi-bin/koha/shelves.pl\">"+_("Select all")+"<\/a>");
|
||||
$("#CheckAll").click(function(){
|
||||
|
@ -21,8 +24,70 @@ $(document).ready(function(){
|
|||
$(".checkboxed").unCheckCheckboxes();
|
||||
return false;
|
||||
});
|
||||
$("#placehold").show();
|
||||
$(".placehold").on("click",function(e){
|
||||
placeHold();
|
||||
e.preventDefault();
|
||||
});
|
||||
$(".addtocart").show();
|
||||
var param1 = "| <label for=\"addto\">"+_("Add to:")+"<\/label><select name=\"addto\" id=\"addto\"><option value=\"\"><\/option>";
|
||||
[% IF ( intranetbookbag ) %]
|
||||
param1 += "<option value=\"addtocart\">"+_("Cart")+"<\/option>";
|
||||
[% END %]
|
||||
[% IF ( virtualshelves ) %]
|
||||
[% IF ( addbarshelves ) %]
|
||||
param1 += "<optgroup label=\""+_("Your lists:")+"\">";
|
||||
[% FOREACH addbarshelvesloo IN addbarshelvesloop %]
|
||||
[% IF ( shelfnumber != addbarshelvesloo.shelfnumber ) %]
|
||||
param1 += "<option id=\"s[% addbarshelvesloo.shelfnumber %]\" value=\"addtolist\">[% addbarshelvesloo.shelfname |html %]<\/option>";
|
||||
[% END %]
|
||||
[% END %]
|
||||
param1 += "<\/optgroup>";
|
||||
[% END %]
|
||||
[% IF ( addpubshelves ) %]
|
||||
param1 += "<optgroup label=\""+_("Public lists:")+"\">";
|
||||
[% FOREACH addpubshelvesloo IN addpubshelvesloop %]
|
||||
[% IF ( shelfnumber != addpubshelvesloo.shelfnumber ) %]
|
||||
param1 += "<option id=\"s[% addpubshelvesloo.shelfnumber %]\" value=\"addtolist\">[% addpubshelvesloo.shelfname |html %]<\/option>";
|
||||
[% END %]
|
||||
[% END %]
|
||||
param1 += "<\/optgroup>";
|
||||
[% END %]
|
||||
[% IF ( ( addbarshelvesloop && addbarshelvesloop.size > 9 ) || (addpubshelvesloop && addpubshelvesloop.size > 9 )) %]
|
||||
param1 += "<option value=\"morelists\">[ "+_("More lists")+" ]<\/option>";
|
||||
[% END %]
|
||||
param1 +="<option value=\"newlist\">"+_("[ New list ]")+"<\/option>"
|
||||
[% END %]
|
||||
param1 += "<\/select> <button id=\"cartsubmit\" type=\"submit\" class=\"btn btn-mini\">"+_("Save")+"</button>";
|
||||
$("span.addto").html(param1);
|
||||
$("#cartsubmit").on("click",function(e){
|
||||
cartList();
|
||||
e.preventDefault();
|
||||
});
|
||||
$("#addto").change(function(){
|
||||
cartList();
|
||||
});
|
||||
$(".addto").find("input:submit").click(function(e){
|
||||
e.preventDefault();
|
||||
cartList();
|
||||
});
|
||||
$("#selection_ops").show();
|
||||
$(".merge-items").on("click",function(e){
|
||||
e.preventDefault();
|
||||
MergeItems();
|
||||
});
|
||||
$("#listform").on("submit",function(e){
|
||||
|
||||
});
|
||||
$(".list-remove").on("click",function(e){
|
||||
if($(".selection").filter(":checked").length > 0){
|
||||
return confirm(MSG_REMOVE_FROM_LIST);
|
||||
} else {
|
||||
alert(MSG_NO_ITEM_SELECTED);
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
});
|
||||
[% END %]
|
||||
|
||||
function confirmDelete(message){
|
||||
if (window.confirm(message)) {
|
||||
|
@ -75,7 +140,7 @@ $(document).ready(function(){
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function placeHold () {
|
||||
var checkedItems = $(".selection:checked");
|
||||
if ($(checkedItems).size() == 0) {
|
||||
|
@ -98,7 +163,7 @@ function placeHold () {
|
|||
var alertString2;
|
||||
|
||||
if($("#shelfname").val() == ""){
|
||||
_alertString += _("- You must enter a List Name") + "\n";
|
||||
_alertString += "- "+_("You must enter a List Name") + "\n";
|
||||
}
|
||||
|
||||
if (_alertString.length==0) {
|
||||
|
@ -110,6 +175,31 @@ function placeHold () {
|
|||
alert(alertString2);
|
||||
}
|
||||
}
|
||||
function cartList(){
|
||||
var checkboxes = $("#searchresults").find(":checkbox");
|
||||
var vshelf = vShelfAdd(checkboxes);
|
||||
if($("#addto").find("option:selected").attr("value") == "addtolist"){
|
||||
var shelfnumber = $("#addto").find("option:selected").attr("id").replace("s","");
|
||||
if (vshelf) {
|
||||
openWindow('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?shelfnumber='+shelfnumber+'&confirm=1&' + vshelf,'popup',500,500);
|
||||
}
|
||||
return false;
|
||||
} else if($("#addto").find("option:selected").attr("value") == "newlist"){
|
||||
if (vshelf) {
|
||||
openWindow('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?newshelf=1&' + vshelf,'popup',500,500);
|
||||
}
|
||||
return false;
|
||||
} else if($("#addto").find("option:selected").attr("value") == "morelists"){
|
||||
if (vshelf) {
|
||||
openWindow('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?' + vshelf,'popup',500,500);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if($("#addto").find("option:selected").attr("value") == "addtocart"){
|
||||
addMultiple(checkboxes);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
|
@ -147,7 +237,7 @@ function placeHold () {
|
|||
|
||||
[% IF ( viewshelf ) %]› Contents of <i>[% shelfname | html %]</i>[% END %][% IF ( shelves ) %] › Create new list[% END %][% IF ( edit ) %] › Edit list <i>[% shelfname | html %]</i>[% END %]</div>
|
||||
|
||||
<div id="doc" class="yui-t7">
|
||||
<div id="doc2" class="yui-t7">
|
||||
<div id="bd">
|
||||
<div id="yui-main">
|
||||
<div class="yui-g">[% INCLUDE 'virtualshelves-toolbar.inc' %]
|
||||
|
@ -193,56 +283,67 @@ function placeHold () {
|
|||
<div class="yui-g">
|
||||
[% IF ( itemsloop ) %]
|
||||
|
||||
<form action="/cgi-bin/koha/virtualshelves/shelves.pl" method="post" class="checkboxed">
|
||||
<h3>Contents of <i>[% shelfname | html %]</i></h3>
|
||||
<div class="pages">[% pagination_bar %]</div>
|
||||
<form action="/cgi-bin/koha/virtualshelves/shelves.pl" id="listform" method="post" class="checkboxed">
|
||||
<input type="hidden" name="viewshelf" value="[% shelfnumber %]" />
|
||||
<input type="hidden" name="modifyshelfcontents" value="1" />
|
||||
<fieldset>
|
||||
<legend>Contents of <i>[% shelfname | html %]</i></legend>
|
||||
|
||||
[% IF ( itemsloop ) %]
|
||||
<p><span class="checkall"></span> |
|
||||
<span class="clearall"></span></p>
|
||||
[% END %]
|
||||
|
||||
[% IF direction == 'asc' %]
|
||||
[% SET new_direction = 'desc' %]
|
||||
[% ELSE %]
|
||||
[% SET direction = 'desc' %]
|
||||
[% SET new_direction = 'asc' %]
|
||||
[% END %]
|
||||
|
||||
<div class="pages">[% pagination_bar %]</div>
|
||||
<table>
|
||||
[% IF direction == 'asc' %]
|
||||
[% SET new_direction = 'desc' %]
|
||||
[% ELSE %]
|
||||
[% SET direction = 'desc' %]
|
||||
[% SET new_direction = 'asc' %]
|
||||
[% END %]
|
||||
|
||||
<div id="searchheader">
|
||||
[% IF ( itemsloop ) %]
|
||||
<div id="selection_ops"><span class="checkall"></span> |
|
||||
<span class="clearall"></span>
|
||||
|
||||
<span class="addto">| </span>
|
||||
|
||||
[% IF ( CAN_user_reserveforothers && DisplayMultiPlaceHold ) %]
|
||||
<div class="btn-group"><button class="btn btn-mini placehold"><i class="icon-hold"></i> Place hold</button></div>
|
||||
[% END %]
|
||||
[% IF ( allowremovingitems ) %]
|
||||
<div class="btn-group"><button type="submit" class="btn btn-mini list-remove"><i class="icon-remove-sign"></i> Remove selected</button></div>
|
||||
[% END %]
|
||||
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]<div class="btn-group"><button type="submit" class="btn btn-mini merge-items"><i class="icon-merge"></i> Merge selected</button></div>[% END %]
|
||||
</div>
|
||||
[% END %]
|
||||
</div>
|
||||
|
||||
<table id="searchresults">
|
||||
<tr>
|
||||
[% IF ( itemsloop ) %]<th class="checkall"> </th>[% END %]
|
||||
|
||||
[% UNLESS ( item_level_itypes ) %]<th>Item type</th>[% END %]
|
||||
<th>
|
||||
<a href="/cgi-bin/koha/virtualshelves/shelves.pl?viewshelf=[% shelfnumber %]&sort=title&direction=[% IF sort != 'title' %]asc[% ELSE %][% new_direction %][% END %]">Title</a>
|
||||
<a href="/cgi-bin/koha/virtualshelves/shelves.pl?viewshelf=[% shelfnumber %]&sort=title&direction=[% IF sort != 'title' %]asc[% ELSE %][% new_direction %][% END %]">Title</a>
|
||||
[% IF sort == 'title' %]
|
||||
<img src="[% interface %]/[% theme %]/img/[% direction %].gif" />
|
||||
<img src="[% interface %]/[% theme %]/img/[% direction %].gif" alt="[% direction %] sort" />
|
||||
[% ELSE %]
|
||||
<img src="[% interface %]/[% theme %]/img/ascdesc.gif" />
|
||||
<img src="[% interface %]/[% theme %]/img/ascdesc.gif" alt="" />
|
||||
[% END %]
|
||||
</th>
|
||||
<th>
|
||||
<a href="/cgi-bin/koha/virtualshelves/shelves.pl?viewshelf=[% shelfnumber %]&sort=author&direction=[% IF sort != 'author' %]asc[% ELSE %][% new_direction %][% END %]">Author</a>
|
||||
<a href="/cgi-bin/koha/virtualshelves/shelves.pl?viewshelf=[% shelfnumber %]&sort=author&direction=[% IF sort != 'author' %]asc[% ELSE %][% new_direction %][% END %]">Author</a>
|
||||
[% IF sort == 'author' %]
|
||||
<img src="[% interface %]/[% theme %]/img/[% direction %].gif" />
|
||||
<img src="[% interface %]/[% theme %]/img/[% direction %].gif" alt="[% direction %] sort" />
|
||||
[% ELSE %]
|
||||
<img src="[% interface %]/[% theme %]/img/ascdesc.gif" />
|
||||
<img src="[% interface %]/[% theme %]/img/ascdesc.gif" alt="" />
|
||||
[% END %]
|
||||
</th>
|
||||
<th>Date added</th>
|
||||
<th>
|
||||
<a href="/cgi-bin/koha/virtualshelves/shelves.pl?viewshelf=[% shelfnumber %]&sort=itemcallnumber&direction=[% IF sort != 'itemcallnumber' %]asc[% ELSE %][% new_direction %][% END %]">Call number</a>
|
||||
<a href="/cgi-bin/koha/virtualshelves/shelves.pl?viewshelf=[% shelfnumber %]&sort=itemcallnumber&direction=[% IF sort != 'itemcallnumber' %]asc[% ELSE %][% new_direction %][% END %]">Call number</a>
|
||||
[% IF sort == 'itemcallnumber' %]
|
||||
<img src="[% interface %]/[% theme %]/img/[% direction %].gif" />
|
||||
<img src="[% interface %]/[% theme %]/img/[% direction %].gif" alt="[% direction %] sort" />
|
||||
[% ELSE %]
|
||||
<img src="[% interface %]/[% theme %]/img/ascdesc.gif" />
|
||||
<img src="[% interface %]/[% theme %]/img/ascdesc.gif" alt="" />
|
||||
[% END %]
|
||||
</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
[% FOREACH itemsloo IN itemsloop %]
|
||||
[% UNLESS ( loop.odd ) %]
|
||||
|
@ -264,31 +365,58 @@ function placeHold () {
|
|||
[% UNLESS ( noItemTypeImages || !itemsloo.imageurl ) %]<img src="[% itemsloo.imageurl %]" alt="[% itemsloo.description %]" title="[% itemsloo.description %]" />[% END %][% itemsloo.description %]
|
||||
</td>[% END %]
|
||||
<td>
|
||||
[% INCLUDE 'biblio-default-view.inc' biblionumber = itemsloo.biblionumber %]
|
||||
[% itemsloo.title |html %][% FOREACH subtitl IN itemsloo.subtitle %] [% subtitl.subfield %][% END %]</a>
|
||||
[% IF ( itemsloo.XSLTBloc ) %]
|
||||
[% itemsloo.XSLTBloc %]
|
||||
[% ELSE %]
|
||||
[% INCLUDE 'biblio-default-view.inc' biblionumber = itemsloo.biblionumber %]
|
||||
[% itemsloo.title |html %][% FOREACH subtitl IN itemsloo.subtitle %] [% subtitl.subfield %][% END %]</a>
|
||||
[% END %]
|
||||
<p class="hold">
|
||||
[% IF ( itemsloo.notforloan ) %]
|
||||
<span class="noholdstext">No holds allowed</span>
|
||||
[% ELSE %]
|
||||
[% IF ( itemsloo.ITEM_RESULTS.size ) %]
|
||||
<a id="reserve_[% itemsloo.biblionumber %]" href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% itemsloo.biblionumber %]">Holds</a>
|
||||
[% IF ( holdfor ) %] <span class="holdforlink">| <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% itemsloo.biblionumber %]&findborrower=[% holdfor_cardnumber %]">Place hold for [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])</a></span>[% END %]
|
||||
[% ELSE %]
|
||||
<span class="noholdstext">No holds allowed</span>
|
||||
[% END %]
|
||||
[% END %]
|
||||
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
|
||||
| <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% itemsloo.biblionumber %]">Edit record</a>
|
||||
[% END %]
|
||||
[% IF ( CAN_user_editcatalogue_edit_items ) %]
|
||||
| <a href="/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% itemsloo.biblionumber %]">Edit items</a>
|
||||
[% END %]
|
||||
</p>
|
||||
</td>
|
||||
<td>[% itemsloo.author %]</td>
|
||||
<td>[% itemsloo.dateadded %]</td>
|
||||
<td>
|
||||
[% FOREACH result IN itemsloo.ITEM_RESULTS %][% result.itemcallnumber %][% UNLESS loop.last %], [% END %][% END %]
|
||||
<ul>
|
||||
[% FOREACH result IN itemsloo.ITEM_RESULTS %]
|
||||
<li>[% result.holdingbranch %] [% IF ( result.location_intranet ) %] ([% result.location_intranet %]) [% END %]
|
||||
[% IF ( result.itemcallnumber ) %]
|
||||
[<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&q=[% result.itemcallnumber |url %]">[% result.itemcallnumber %]</a>]
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
[% UNLESS ( itemsloo.notforloan ) %]
|
||||
<a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% itemsloo.biblionumber %]">Holds</a>
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]<!-- /itemsloop -->
|
||||
</table><fieldset class="action">
|
||||
</table>
|
||||
<div class="pages">[% pagination_bar %]</div>
|
||||
<fieldset class="action">
|
||||
[% IF ( itemsloop ) %]
|
||||
<input type="button" id="placehold" style="display:none" onclick="placeHold(); return false;" value="Place holds" />
|
||||
[% IF ( allowremovingitems ) %]<input type="submit" value="Remove selected records" onclick="return confirm(MSG_REMOVE_FROM_LIST);" />[% END %]
|
||||
<input type="submit" value="Merge selected records" onclick="return MergeItems();" />
|
||||
[% IF ( CAN_user_reserveforothers && DisplayMultiPlaceHold ) %]<input type="button" class="placehold" value="Place hold" />[% END %]
|
||||
[% IF ( allowremovingitems ) %]<input type="submit" value="Remove selected records" class="
|
||||
list-remove" />[% END %]
|
||||
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]<input type="submit" value="Merge selected records" class="merge-items" />[% END %]
|
||||
[% END %]
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
|
||||
[% END %]
|
||||
</div>
|
||||
[% END %]<!-- /viewshelf -->
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
Loading…
Reference in a new issue