Bug 9617 - Replace YUI menu on catalog pages with Bootstrap

This patch converts the toolbar include file used by catalog detail
pages (detail.pl, MARCdetail.pl, etc.) replacing YUI button and menu
code with Bootstrap.

Minor change to staff client CSS fixes issue with language footer.
Minor change to doc-head-close.inc corrects error in logic for handling
cart and lists js discovered in testing.

To test, view any page which uses cat-toolbar.inc. Buttons and menus
should look correct and work correctly. Functions to test include:

New record
New item
New subscription
New child record

Edit record
Edit items
Edit items in a batch
Delete items in a batch
Attach item
Edit as new (duplicate)
Replace record via Z39.50
Delete record
Delete all items

Save (various formats)

Add to cart
Add to list

Print

Place hold (including with search-to-hold active).

Testing should be done by users with varying permissions including with
and without:

CAN_user_serials_create_subscription
CAN_user_editcatalogue_edit_catalogue
CAN_user_editcatalogue_edit_items
CAN_user_tools_items_batchmod
CAN_user_tools_items_batchdel

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>

Comment: All buttons tested. Works as described. No Errors.
Looks good.

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
This commit is contained in:
Owen Leonard 2013-01-30 12:25:21 -05:00 committed by Jared Camins-Esakov
parent 4fc65c47a1
commit cb6d604e91
3 changed files with 142 additions and 179 deletions

View file

@ -48,7 +48,7 @@ a.popup {
body {
text-align : left;
padding:0 0 2.5em 0;
padding:0 0 4em 0;
font-family: arial, verdana, helvetica, sans-serif;
}

View file

@ -1,5 +1,3 @@
<div id="toolbar">
<script type="text/javascript">
//<![CDATA[
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
@ -74,186 +72,152 @@
}
}
[% END %]
// prepare DOM for YUI Toolbar
$(document).ready(function() {
[% IF ( CAN_user_editcatalogue_edit_items ) %]$("#edititems").parent().remove();
$("#newitem").parent().remove();[% END %]
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]$("#duplicatebiblio").parent().remove();
$("#deletebiblio").parent().remove();
$("#z3950searchc").empty();[% END %]
[% IF ( CAN_user_serials_create_subscription ) %]$("#newsub").parent().remove();[% END %]
$("#newbiblio").parent().remove();
$("#editbiblio").parent().remove();
$("#addtoshelf").parent().remove();
$("#printbiblio").parent().remove();
$("#placehold").parent().remove();
$("#export").remove();
$("#z3950copy").click(function(){
PopupZ3950();
return false;
});
YAHOO.util.Event.onContentReady("cattoolbar", function () {
// Menu for new record, new item, new subscription
var newmenu = [
[% IF CAN_user_editcatalogue_edit_catalogue %]
{text: _("New record"), url: "/cgi-bin/koha/cataloguing/addbiblio.pl" },
[% END %]
[% IF ( CAN_user_editcatalogue_edit_items ) %]
{text: _("New item"), url: "/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% biblionumber %]#additema" },
[% END %]
[% IF ( CAN_user_serials_create_subscription ) %]
{text: _("New subscription"), url: "/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=[% biblionumber %]"},
[% END %]
[% IF ( EasyAnalyticalRecords && CAN_user_editcatalogue_edit_catalogue ) %]
{text: _("Analyze items"), url: "/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber %]&analyze=1" },
[% END %]
[% IF CAN_user_editcatalogue_edit_catalogue %]
{text: _("New child record"), url: "/cgi-bin/koha/cataloguing/addbiblio.pl?parentbiblionumber=[% biblionumber %]" },
[% END %]
];
if(newmenu.length){
new YAHOO.widget.Button({
type: "menu",
label: _("New"),
id: "newmenuc",
name: "newmenubutton",
menu: newmenu,
container: this
$("#deletebiblio").click(function(){
confirm_deletion();
return false;
});
}
var editmenu = [
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]{ text: _("Edit record"), url: "/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumber %]&amp;frameworkcode=&amp;op=" },[% END %]
[% IF ( CAN_user_editcatalogue_edit_items ) %]{ text: _("Edit items"), url: "/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% biblionumber %]" },[% END %]
[% IF ( CAN_user_tools_items_batchmod ) %]{ text: _("Edit items in batch"), url: "/cgi-bin/koha/tools/batchMod.pl?op=show&biblionumber=[% biblionumber %]&src=CATALOGUING" },[% END %]
[% IF ( CAN_user_tools_items_batchdel ) %]{ text: _("Delete items in batch"), url: "/cgi-bin/koha/tools/batchMod.pl?del=1&op=show&biblionumber=[% biblionumber %]&src=CATALOGUING" },[% END %]
[% IF ( CAN_user_editcatalogue_edit_items ) %]{ text: _("Attach item"), url: "/cgi-bin/koha/cataloguing/moveitem.pl?biblionumber=[% biblionumber %]" },[% END %]
[% IF ( EasyAnalyticalRecords ) %][% IF ( CAN_user_editcatalogue_edit_items ) %]{ text: _("Link to host item"), url: "/cgi-bin/koha/cataloguing/linkitem.pl?biblionumber=[% biblionumber %]" },[% END %][% END %]
[% IF ( LocalCoverImages || OPACLocalCoverImages) %][% IF ( CAN_user_tools_upload_local_cover_images ) %]{ text: _("Upload image"), url: "/cgi-bin/koha/tools/upload-cover-image.pl?biblionumber=[% biblionumber %]&filetype=image" },[% END %][% END %]
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]{ text: _("Edit as new (duplicate)"), url: "/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumber %]&amp;frameworkcode=&amp;op=duplicate" },[% END %]
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]{ text: _("Replace record via Z39.50"), onclick: {fn: PopupZ3950 } },[% END %]
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]{ text: _("Delete record"), onclick: {fn: confirm_deletion }[% IF ( count || holdcount ) %],id:'disabled'[% END %] },[% END %]
[% IF ( CAN_user_editcatalogue_edit_items ) %]{ text: _("Delete all items"), onclick: {fn: confirm_items_deletion }[% IF ( count < 1 || holdcount ) %],id:'disabled2'[% END %] },[% END %]
];
if(editmenu.length){
new YAHOO.widget.Button({
type: "menu",
label: _("Edit"),
id: "editmenuc",
name: "editmenubutton",
menu: editmenu,
container: this
$("#deleteallitems").click(function(){
confirm_items_deletion();
return false;
});
}
var savemenu = [
{ text: _("MODS (XML)"), url: "/cgi-bin/koha/catalogue/export.pl?format=mods&op=export&bib=[% biblionumber %]" },
{ text: _("Dublin Core (XML)"), url: "/cgi-bin/koha/catalogue/export.pl?format=dc&op=export&bib=[% biblionumber %]" },
{ text: _("MARCXML"), url: "/cgi-bin/koha/catalogue/export.pl?format=marcxml&op=export&bib=[% biblionumber %]" },
{ text: _("MARC (non-Unicode/MARC-8)"), url: "/cgi-bin/koha/catalogue/export.pl?format=marc8&op=export&bib=[% biblionumber %]" },
{ text: _("MARC (Unicode/UTF-8)"), url: "/cgi-bin/koha/catalogue/export.pl?format=utf8&op=export&bib=[% biblionumber %]" },
{ text: _("MARC (Unicode/UTF-8, Standard)"), url: "/cgi-bin/koha/catalogue/export.pl?format=marcstd&op=export&bib=[% biblionumber %]" }
];
new YAHOO.widget.Button({
type: "menu",
label: _("Save"),
id: "savemenuc",
name: "savemenubutton",
menu: savemenu,
container: this
$("#printbiblio").click(function(){
printBiblio();
return false;
});
var addtomenu = [
{ text: _("Cart"), onclick: { fn: addToCart } },
{ text: _("List"), onclick: { fn: addToShelf } }
];
new YAHOO.widget.Button({
type: "menu",
label: _("Add to"),
name: "addtomenubutton",
menu: addtomenu,
container: this
$("#addtocart").click(function(){
addToCart();
$(".btn-group").removeClass("open");
return false;
});
new YAHOO.widget.Button({
id: "printbiblio",
type: "button",
label: _("Print"),
container: this,
onclick: {fn: printBiblio }
$("#addtoshelf").click(function(){
addToShelf();
$(".btn-group").removeClass("open");
return false;
});
[% IF ( CAN_user_reserveforothers ) %][% UNLESS ( norequests ) %]
[% IF ( holdfor ) %]
// Create an array of YAHOO.widget.MenuItem configuration properties
var onButtonClick = function () {
location.href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]";
}
var HoldForButtonMenu = [
{ text: _("Place hold"), url: "/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]" },
{ text: _("Place hold for")+ " [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])", url: "/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]&findborrower=[% holdfor_cardnumber %]" }
];
// Instantiate a Split Button using the array of YAHOO.widget.MenuItem
// configuration properties as the value for the "menu"
// configuration attribute.
var HoldForButton = new YAHOO.widget.Button({
id: "holdfor",
type: "split",
label: _("Place hold"),
name: "holdfor",
menu: HoldForButtonMenu,
container: this,
onclick: { fn: onButtonClick }
});
[% ELSE %]
new YAHOO.widget.Button({
id: "placehold",
type: "link",
label: _("Place hold"),
container: this,
href: "/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]"
});
[% END %]
[% END %][% END %]
$("#export").remove(); // Hide embedded export form if JS menus available
});
//]]>
</script>
<div id="toolbar" class="btn-toolbar">
<form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
<ul class="toolbar" id="cattoolbar">
[% IF ( CAN_user_editcatalogue_edit_catalogue || CAN_user_editcatalogue_edit_items ||
CAN_user_serials_create_subscription ) %]
<div class="btn-group">
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown"><i class="icon-plus"></i> New <span class="caret"></span></button>
<ul class="dropdown-menu">
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
<li><a id="newbiblio" href="/cgi-bin/koha/cataloguing/addbiblio.pl">New record</a></li>
[% END %]
[% IF ( CAN_user_editcatalogue_edit_items ) %]
<li><a id="newitem" href="/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% biblionumber %]">New item</a></li>
<li><a id="newitem" href="/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% biblionumber %]#additema">New item</a></li>
[% END %]
[% IF ( CAN_user_serials_create_subscription ) %]
<li><a id="newsub" href="/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=[% biblionumber %]">New subscription</a></li>
[% END %]
[% IF ( EasyAnalyticalRecords && CAN_user_editcatalogue_edit_catalogue ) %]
<li><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber %]&amp;analyze=1">Analyze items</a></li>
[% END %]
[% IF CAN_user_editcatalogue_edit_catalogue %]
<li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?parentbiblionumber=[% biblionumber %]">New child record</a></li>
[% END %]
</ul>
</div>
[% END %]
<div class="btn-group">
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown"><i class="icon-pencil"></i> Edit <span class="caret"></span></button>
<ul class="dropdown-menu">
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
<li><a id="editbiblio" href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumber %]&amp;frameworkcode=[% current_framework %]&amp;op=">Edit record</a></li>
[% END %]
[% IF ( CAN_user_editcatalogue_edit_items ) %]
<li><a id="edititems" href="/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% biblionumber %]">Edit items</a></li>
[% END %]
[% IF ( CAN_user_tools_items_batchmod ) %]<li><a href="/cgi-bin/koha/tools/batchMod.pl?op=show&amp;biblionumber=[% biblionumber %]&amp;src=CATALOGUING">Edit items in batch</a></li>[% END %]
[% IF ( CAN_user_tools_items_batchdel ) %]<li><a href="/cgi-bin/koha/tools/batchMod.pl?del=1&amp;op=show&amp;biblionumber=[% biblionumber %]&amp;src=CATALOGUING">Delete items in a batch</a></li>[% END %]
[% IF ( CAN_user_editcatalogue_edit_items ) %]<li><a href="/cgi-bin/koha/cataloguing/moveitem.pl?biblionumber=[% biblionumber %]">Attach item</a></li>[% END %]
[% IF ( EasyAnalyticalRecords ) %][% IF ( CAN_user_editcatalogue_edit_items ) %]<li><a href="/cgi-bin/koha/cataloguing/linkitem.pl?biblionumber=[% biblionumber %]">Link to host item</a>[% END %][% END %]
[% IF ( LocalCoverImages || OPACLocalCoverImages) %][% IF ( CAN_user_tools_upload_local_cover_images ) %]<li><a href="/cgi-bin/koha/tools/upload-cover-image.pl?biblionumber=[% biblionumber %]&amp;filetype=image">Upload image</a>[% END %][% END %]
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
<li><a id="duplicatebiblio" href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumber %]&amp;frameworkcode=[% current_framework %]&amp;op=duplicate">Duplicate record</a></li>
[% END %]
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
<li><a id="deletebiblio" href="/cgi-bin/koha/cataloguing/addbiblio.pl?op=delete&amp;biblionumber=[% biblionumber %]">Delete</a></li>
<li><a id="duplicatebiblio" href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumber %]&amp;frameworkcode=[% current_framework %]&amp;op=duplicate">Edit as new (duplicate)</a></li>
<li><a href="#" id="z3950copy">Replace record via Z39.50</a></li>
[% IF ( count ) %]<li class="disabled">[% ELSE %]<li>[% END %]
<a id="deletebiblio" href="/cgi-bin/koha/cataloguing/addbiblio.pl?op=delete&amp;biblionumber=[% biblionumber %]">Delete record</a></li>
[% END %]
<li><a id="addtoshelf" href="/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?biblionumber=[% biblionumber %]">Add to shelf</a></li>
<li><span id="printbiblio"></span></li>
[% IF ( CAN_user_reserveforothers ) %]
[% UNLESS ( norequests ) %]<li><a id="placehold" href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]">Place hold</a></li>[% END %]
[% IF ( CAN_user_editcatalogue_edit_items ) %]
[% UNLESS ( count ) %]<li class="disabled">[% ELSE %]<li>[% END %]<li>
<a href="#" id="deleteallitems">Delete all items</a></li>
[% END %]
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]<li id="z3950searchc"><input type="button" id="z3950search" value="Z39.50 Search" onclick="PopupZ3950Confirmed(); return false;" /></li>[% END %]
</ul>
</div>
<div class="btn-group">
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown"><i class="icon-download-alt"></i> Save <span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href="/cgi-bin/koha/catalogue/export.pl?format=mods&amp;op=export&amp;bib=[% biblionumber %]">MODS (XML)</a></li>
<li><a href="/cgi-bin/koha/catalogue/export.pl?format=dc&amp;op=export&amp;bib=[% biblionumber %]
">Dublic Core (XML)</a></li>
<li><a href="/cgi-bin/koha/catalogue/export.pl?format=marcxml&amp;op=export&amp;bib=[% biblionumber %]">MARCXML</a></li>
<li><a href="/cgi-bin/koha/catalogue/export.pl?format=marc8&amp;op=export&amp;bib=[% biblionumber %]">MARC (non-Unicode/MARC-8)</a></li>
<li><a href="/cgi-bin/koha/catalogue/export.pl?format=utf8&amp;op=export&amp;bib=[% biblionumber %]">MARC (Unicode/UTF-8</a></li>
<li><a href="/cgi-bin/koha/catalogue/export.pl?format=marcstd&amp;op=export&amp;bib=[% biblionumber %]">MARC (Unicode/UTF-8, Standard)</a></li>
</ul>
</div>
[% IF ( virtualshelves && intranetbookbag ) %]
<div class="btn-group">
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown">Add to <span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href="#" id="addtocart">Cart</a></li>
<li><a id="addtoshelf" href="/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?biblionumber=[% biblionumber %]">List</a></li>
</ul>
</div>
[% ELSIF ( virtualshelves ) %]
<div class="btn-group"><a id="addtoshelf" class="btn btn-small" href="/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?biblionumber=[% biblionumber %]"><i class="icon-list"></i> Add to list</a> </div>
[% ELSIF ( intranetbookbag ) %]
<div class="btn-group"><a id="addtocart" class="btn btn-small"><i class="icon-shopping-cart"></i> Add to cart</a> </div>
[% END %]
<div class="btn-group"><a id="printbiblio" class="btn btn-small"><i class="icon-print"></i> Print</a></div>
[% IF ( CAN_user_reserveforothers ) %]
[% UNLESS ( norequests ) %]
[% IF ( holdfor ) %]
<div class="btn-group">
<button class="btn btn-small"><i class="icon-hold"></i> Place hold</button>
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]">Place hold</a></li>
<li><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]&amp;findborrower=[% holdfor_cardnumber %]">Place hold for [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])</a></li>
</ul>
</div>
[% ELSE %]
<div class="btn-group"><a id="placehold" class="btn btn-small" href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]"><i class="icon-hold"></i> Place hold</a></div>
[% END %]
[% END %]
[% END %]
</form>
</div>

View file

@ -43,9 +43,10 @@
//]]>
</script>
[% END %]
[% IF ( virtualshelves || intranetbookbag ) %]
<script type="text/javascript">
//<![CDATA[
[% IF ( intranetbookbag ) %]var MSG_BASKET_EMPTY = _("Your cart is currently empty");
var MSG_BASKET_EMPTY = _("Your cart is currently empty");
var MSG_RECORD_IN_BASKET = _("This item is already in your cart");
var MSG_RECORD_ADDED = _("This item has been added to your cart");
var MSG_NRECORDS_ADDED = _(" item(s) added to your cart");
@ -56,10 +57,8 @@
var MSG_CONFIRM_DEL_RECORDS = _("Are you sure you want to remove the selected items?");
var MSG_IN_YOUR_CART = _("Items in your cart: ");
var MSG_NON_RESERVES_SELECTED = _("One or more selected items cannot be reserved.");
[% END %]
//]]>
</script>
[% IF ( virtualshelves || intranetbookbag ) %]
<script type="text/javascript" src="[% themelang %]/js/basket.js"></script>
[% END %]
[% IF LocalCoverImages %]