@@ -, +, @@
browser
- On a detail biblio page, click on a "Browse shelf" link.
- Play with the next and previous links.
- Deactivate Javascript (using NoScript for example) and check that you
get the same behavior (but the page is reloaded).
- Launch the unit tests: prove t/db_dependent/ShelfBrowser.t
---
koha-tmpl/opac-tmpl/bootstrap/css/opac.css | 44 +++++
.../bootstrap/en/includes/shelfbrowser.inc | 86 +++++++++
.../opac-tmpl/bootstrap/en/modules/opac-detail.tt | 195 ++++++--------------
.../bootstrap/en/modules/svc/shelfbrowser.tt | 2 +
koha-tmpl/opac-tmpl/bootstrap/less/opac.less | 46 +++++
5 files changed, 238 insertions(+), 135 deletions(-)
create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/includes/shelfbrowser.inc
create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/modules/svc/shelfbrowser.tt
--- a/koha-tmpl/opac-tmpl/bootstrap/css/opac.css
+++ a/koha-tmpl/opac-tmpl/bootstrap/css/opac.css
@@ -2146,6 +2146,50 @@ td img {
display: block;
overflow: auto;
}
+#shelfbrowser table {
+ margin: 0;
+}
+#shelfbrowser table,
+#shelfbrowser td,
+#shelfbrowser th {
+ border: 0;
+ font-size: 90%;
+ text-align: center;
+}
+#shelfbrowser td,
+#shelfbrowser th {
+ padding: 3px 5px;
+ width: 20%;
+}
+#shelfbrowser a {
+ display: block;
+ font-size: 110%;
+ font-weight: bold;
+ text-decoration: none;
+}
+#shelfbrowser #browser_next,
+#shelfbrowser #browser_previous {
+ background-image: url("../images/sprite.png");
+ background-repeat: no-repeat;
+ width: 16px;
+}
+#shelfbrowser #browser_next a,
+#shelfbrowser #browser_previous a {
+ cursor: pointer;
+ display: block;
+ height: 0 !important;
+ margin: 0;
+ overflow: hidden;
+ padding: 50px 0 0;
+ text-decoration: none;
+ width: 16px;
+}
+#shelfbrowser #browser_previous {
+ background-position: -9px -1007px;
+}
+#shelfbrowser #browser_next {
+ background-position: -9px -1057px;
+}
.shadowed {
-webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.2);
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/shelfbrowser.inc
+++ a/koha-tmpl/opac-tmpl/bootstrap/en/includes/shelfbrowser.inc
@@ -0,0 +1,86 @@
+[% BLOCK shelfbrowser %]
+ [% IF OpenOPACShelfBrowser %]
+
+
+ [% IF ( starting_homebranch ) %]Browsing [% starting_homebranch %] Shelves[% END %]
+ [% IF ( starting_location ) %], Shelving location: [% starting_location %][% END %]
+ [% IF ( starting_ccode ) %], Collection code: [% starting_ccode %][% END %]
+ Close shelf browser
+
+
+
+
+ [% END # /IF OpenOPACShelfBrowser %]
+[% END # end of shelfbrowser block %]
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
+++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
@@ -647,7 +647,7 @@
No physical items for this record
[% END %]
[% END # IF itemloop.size %]
-
+ [% PROCESS 'shelfbrowser.inc' %]
[% INCLUDE shelfbrowser tab='holdings' %]
@@ -1170,7 +1170,11 @@
[% IF ( ITEM_RESULT.itemcallnumber ) %]
[% ITEM_RESULT.itemcallnumber %]
[% IF ( OPACShelfBrowser ) %]
- (Browse shelf)
+ [% IF ( ITEM_RESULT.itemnumber == starting_itemnumber ) %]
+ (Browse shelf)
+ [% ELSE %]
+ (Browse shelf)
+ [% END %]
[% END %]
[% END %]
@@ -1227,139 +1231,6 @@
[% END %][%# end of items_table block %]
-[% BLOCK shelfbrowser %]
- [% IF ( OpenOPACShelfBrowser and shelfbrowser_tab == tab) %]
-
-
- [% IF ( starting_homebranch ) %]Browsing [% starting_homebranch %] Shelves[% END %]
- [% IF ( starting_location ) %], Shelving location: [% starting_location %][% END %]
- [% IF ( starting_ccode ) %], Collection code: [% starting_ccode %][% END %]
- Close shelf browser
-
-
-
-
- [% END %]
-[% END # end of shelfbrowser block %]
[% BLOCK jsinclude %]
[% INCLUDE 'datatables.inc' %]
[% IF ( SocialNetworks ) %]
@@ -1514,7 +1385,61 @@
navigation.hide();
});
[% END %]
+[% IF ( OPACShelfBrowser ) %]
+
+ (function prepareShelfBrowser(){
+
+ $(".main").on("click",".close_shelf",function(e){
+ e.preventDefault();
+ $("#shelfbrowser").toggle();
+ });
+ $(".main").on("click", "#browser_previous a", function(e){
+ e.preventDefault();
+ $.ajax({
+ url: "/cgi-bin/koha/svc/shelfbrowser.pl",
+ type: "POST",
+ data: {
+ "shelfbrowse_itemnumber": $("#browser_previous a").data( "prev-itemnumber" )
+ },
+ success: function(data){
+ $("#shelfbrowser").replaceWith(data);
+ [% IF ( GoogleJackets ) %]
+ KOHA.Google.GetCoverFromIsbn([% covernewwindow %]);
+ [% END %]
+ [% IF OpenLibraryCovers %]
+ KOHA.OpenLibrary.GetCoverFromIsbn();
+ [% END %]
+ [% IF OPACLocalCoverImages %]
+ KOHA.LocalCover.GetCoverFromBibnumber(true);
+ [% END %]
+ }
+ });
+ });
+ $(".main").on("click", "#browser_next a", function(e){
+ e.preventDefault();
+ $.ajax({
+ url: "/cgi-bin/koha/svc/shelfbrowser.pl",
+ type: "POST",
+ data: {
+ "shelfbrowse_itemnumber": $("#browser_next a").data( "next-itemnumber" )
+ },
+ success: function(data){
+ $("#shelfbrowser").replaceWith(data);
+ [% IF ( GoogleJackets ) %]
+ KOHA.Google.GetCoverFromIsbn([% covernewwindow %]);
+ [% END %]
+ [% IF OpenLibraryCovers %]
+ KOHA.OpenLibrary.GetCoverFromIsbn();
+ [% END %]
+ [% IF OPACLocalCoverImages %]
+ KOHA.LocalCover.GetCoverFromBibnumber(true);
+ [% END %]
+ }
+ });
+ });
+ }());
+[% END %]
[% IF ( OpacStarRatings != 'disable' ) %]
// -----------------------------------------------------
// star-ratings code
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/svc/shelfbrowser.tt
+++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/svc/shelfbrowser.tt
@@ -0,0 +1,2 @@
+[% PROCESS 'shelfbrowser.inc' %]
+[% INCLUDE shelfbrowser %]
--- a/koha-tmpl/opac-tmpl/bootstrap/less/opac.less
+++ a/koha-tmpl/opac-tmpl/bootstrap/less/opac.less
@@ -2173,4 +2173,50 @@ td img {
overflow: auto;
}
+#shelfbrowser {
+ table {
+ margin : 0;
+ }
+ table,
+ td,
+ th {
+ border : 0;
+ font-size : 90%;
+ text-align : center;
+ }
+ td,
+ th {
+ padding: 3px 5px;
+ width : 20%;
+ }
+ a {
+ display : block;
+ font-size : 110%;
+ font-weight : bold;
+ text-decoration : none;
+ }
+ #browser_next,
+ #browser_previous {
+ background-image : url("../images/sprite.png");
+ background-repeat: no-repeat;
+ width : 16px;
+ a {
+ cursor: pointer;
+ display : block;
+ height: 0 !important;
+ margin: 0;
+ overflow: hidden;
+ padding: 50px 0 0;
+ text-decoration: none;
+ width: 16px;
+ }
+ }
+ #browser_previous {
+ background-position: -9px -1007px;
+ }
+ #browser_next {
+ background-position: -9px -1057px;
+ }
+}
+
@import "responsive.less";
--