Hi Nicholas:

Slick display! 

Perhaps someone else has already raised the idea, but might you consider
filing a bug in Bugzilla where you can provide the perl, template, css, and
images? That'll make it easier to share with others :).

http://bugs.koha-community.org/bugzilla3/


David Cook
Systems Librarian
Prosentient Systems P/L
ABN 31 078 409 168
72/330 Wattle St, 
Ultimo NSW 2007
tel: 02 92120899
fax: 02 92120885
dc...@prosentient.com.au



-----Original Message-----
From: koha-devel-boun...@lists.koha-community.org
[mailto:koha-devel-boun...@lists.koha-community.org] On Behalf Of
koha-devel-requ...@lists.koha-community.org
Sent: Thursday, 2 May 2013 3:06 PM
To: koha-devel@lists.koha-community.org
Subject: Koha-devel Digest, Vol 90, Issue 4

Send Koha-devel mailing list submissions to
        koha-devel@lists.koha-community.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel
or, via email, send a message with subject or body 'help' to
        koha-devel-requ...@lists.koha-community.org

You can reach the person managing the list at
        koha-devel-ow...@lists.koha-community.org

When replying, please edit your Subject line so it is more specific than
"Re: Contents of Koha-devel digest..."


Today's Topics:

   1. Re: New books display for koha
      (Nicholas van Rheede van Oudtshoorn)


----------------------------------------------------------------------

Message: 1
Date: Thu, 2 May 2013 13:05:51 +0800
From: Nicholas van Rheede van Oudtshoorn <vano...@gmail.com>
To: koha-devel@lists.koha-community.org
Subject: Re: [Koha-devel] New books display for koha
Message-ID:
        <caj1edorer-nzutqwpp05byfg3caakhq+8qjadw91qg34v79...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

I should also mention that it can be seen running live at
http://library.pbc.wa.edu.au/

:-)
Nick


On Thu, May 2, 2013 at 12:58 PM, Nicholas van Rheede van Oudtshoorn <
vano...@gmail.com> wrote:

> Oh, and of course one needs some css to make things look pretty! :-)
>
> /* Book Cover Display */
> div#newbooks {
>         background-color: rgba(69, 34, 17, 0.8);
>         background-image: -webkit-repeating-linear-gradient(left , 
> rgba(0, 0, 0, 0.1), transparent 30px), 
> -webkit-repeating-linear-gradient(left,
> rgba(0, 0, 0, 0.1), transparent 50px), 
> -webkit-repeating-linear-gradient(right, rgba(0, 0, 0, 0.1), 
> transparent 70px), url(/noise.png) !important;
>         background-image: -moz-repeating-linear-gradient(left, rgba(0, 
> 0, 0, 0.1), transparent 30px), -moz-repeating-linear-gradient(left, 
> rgba(0, 0, 0, 0.1), transparent 50px), 
> -moz-repeating-linear-gradient(right, rgba(0, 0, 0, 0.1), transparent
70px), url(/noise.png) !important;
>         background-image: -ms-repeating-linear-gradient(left, rgba(0, 
> 0, 0, 0.1), transparent 30px), -ms-repeating-linear-gradient(left, 
> rgba(0, 0, 0, 0.1), transparent 50px), 
> -ms-repeating-linear-gradient(right, rgba(0, 0, 0, 0.1), transparent
70px), url(/noise.png) !important;
>         background-image: -o-repeating-linear-gradient(left, rgba(0, 
> 0, 0, 0.1), transparent 30px), -o-repeating-linear-gradient(left, 
> rgba(0, 0, 0, 0.1), transparent 50px), 
> -o-repeating-linear-gradient(right, rgba(0, 0, 0, 0.1), transparent 70px),
url(/noise.png) !important;
>         background-image: repeating-linear-gradient(left, rgba(0, 0, 
> 0, 0.1), transparent 30px), repeating-linear-gradient(left, rgba(0, 0, 
> 0, 0.1), transparent 50px), repeating-linear-gradient(right, rgba(0, 
> 0, 0, 0.1), transparent 70px), url(/noise.png) !important; w }
>
> div.bookshelf {
>         background-image: url(/bookshelf.png);
>         background-size: 100% 190px;
>         vertical-align: bottom;
>         padding-top: 5px;
>         border: 10px solid #452211;
>         border-bottom: none;
>         background-color: transparent;
>         text-align: center;
> }
>
> .bookshelf .bookCover {
>     display: inline-block;
>     margin-bottom: 40px;
>     margin-right: 10px;
> }
>
> .thumbnail {
>         box-shadow: 2px 2px 2px 0 rgba(0,0,0,.7);
>         max-height: 150px;
>         border-radius: 2px 6px 6px 2px;
>         border: 1px solid rgba(0, 0, 0, .7);
>         min-height: 150px;
> }
>
> td .thumbnail {
>         min-height: 114px;
>         max-height: 114px;
> }
> .bookCover .thumbnail, .bookCover .fakeCover {
>         border-radius: 2px 6px 6px 2px;
>         box-shadow: 2px 2px 2px 0 rgba(0,0,0,.7);
>         max-height: 150px;
>         height: 150px;
> }
> .biblio > .bookCover .thumbnail, .biblio > .bookCover .fakeCover  {
>         -webkit-transform:skewy(-4deg);
>         -moz-transform:skewy(-4deg);
>         -ms-transform: skewy(-4deg);
>         -o-transform: skewy(-4deg);
>         transform: skewy(-4deg);
> }
>
> .biblio > .bookCover:hover .thumbnail, .biblio > .bookCover:hover 
> .fakeCover {
>         box-shadow: 0 0 4px 2px rgba(255,255,255,.7);
>         -webkit-transform:skewy(0deg) scale(1.33);
>         -moz-transform:skewy(0deg) scale(1.33);
>         -ms-transform:skewy(0deg) scale(1.33);
>         -o-transform:skewy(0deg) scale(1.33);
>         transform:skewy(0deg) scalue(1.33); } span.shelfhint {
>         opacity: 0;
>         position: absolute;
>         top: 0px;
>         left: 0px;
>         width: 100%;
>         height: auto;
>         color: white;
>         z-index: 30;
>         background-color: black;
>         border-top-left-radius: 2px;
>         border-top-right-radius: 6px;
>         font-size: x-small;
>         -webkit-transition: all .5s ease-in-out 0s;
>         -moz-transition: all .5s ease-in-out 0s;
>         -o-transition: all .5s ease-in-out 0s;
>         -ms-transition: all .5s ease-in-out 0s;
>         transition: all .5s ease-in-out 0s; }
>
> a.biblio:hover > span.shelfhint {
>         opacity: .6;
>         -webkit-transition: all .5s ease-in-out 0s;
>         -moz-transition: all .5s ease-in-out 0s;
>         -o-transition: all .5s ease-in-out 0s;
>         -ms-transition: all .5s ease-in-out 0s;
>         transition: all .5s ease-in-out 0s; }
>
> .biblio:before {
>     background-color: rgba(0,0,0,.6);
>     width: 40px;
>     height: 105px;
>     bottom: 60px;
>     left: -15px;
>     box-shadow: 0 0 20px 10px rgba(0,0,0,.6);
>     display: block;
>     position: absolute;
>     content: "";
>     -webkit-transform: skewx(15deg);
>     -moz-transform: skewx(15deg);
>     -ms-transform: skewx(15deg);
>     -o-transform: skewx(15deg);
>     transform: skewx(15deg);
>     z-index: 0;
> }
>
> a.biblio {
>         text-decoration: none;
>         display: inline-block;
>         margin: 0 8px;
>         height: 190px;
>         vertical-align: bottom;
>         position: relative;
>         margin-left: 15px;
> }
>
> #bookcover div.fakeCover {
>         margin: 1em .5em .5em;
> }
> div.fakeCover {
>         background-color: #54300c;
>         background-image: url(/leather.png), 
> -webkit-linear-gradient(left, transparent, rgba(0, 0, 0, 0.1) 1px, 
> rgba(0, 0, 0, 0.5) 4px, transparent 8px);
>         background-image: url(/leather.png), 
> -moz-linear-gradient(left, transparent, rgba(0, 0, 0, 0.1) 1px, 
> rgba(0, 0, 0, 0.5) 4px, transparent 8px);
>         background-image: url(/leather.png),    -ms-linear-gradient(left,
> transparent, rgba(0, 0, 0, 0.1) 1px, rgba(0, 0, 0, 0.5) 4px, 
> transparent 8px);
>         background-image: url(/leather.png),     -o-linear-gradient(left,
> transparent, rgba(0, 0, 0, 0.1) 1px, rgba(0, 0, 0, 0.5) 4px, 
> transparent 8px);
>         background-image: url(/leather.png),        linear-gradient(left,
> transparent, rgba(0, 0, 0, 0.1) 1px, rgba(0, 0, 0, 0.5) 4px, 
> transparent 8px);
>         border: 2px solid rgba(0, 0, 0, 0.5);
>         border-radius: 2px 6px 6px 2px;
>         width: 110px;
>         height: 150px;
>         position: relative;
>         text-decoration: none;
>         color: #999;
>         -webkit-transition: all 0.5s ease-in-out 0s;
>         -moz-transition: all 0.5s ease-in-out 0s;
>         -ms-transition: all 0.5s ease-in-out 0s;
>         -o-transition: all 0.5s ease-in-out 0s;
>         transition: all 0.5s ease-in-out 0s; }
>
> div.fakeCover > span {
>         color: rgba(0,0,0, 0.6);
>         background-color: rgba(255,255,255,.1);
>         border-radius: 5px;
>         border: 1px solid rgba(0,0,0,.05);
>         display: block;
>         font-family: arial,sans-serif;
>         height: auto;
>         margin: 8px;
>         margin-left: 15px;
>         padding: 2px;
>         text-align: center;
>         width: 81px;
>         max-height: 100px;
>         position: absolute;
>
> }
>
> div.fakeCover > span.title {
>         font-size: x-small;
>         top: 0px;
> }
>
> div.fakeCover > span.author {
>         font-size: xx-small;
>         bottom: 0px;
> }
>
> span.no-image {
>         display: none;
> }
>
>
>
> On Thu, May 2, 2013 at 12:01 PM, Nicholas van Rheede van Oudtshoorn < 
> vano...@gmail.com> wrote:
>
>> Hello all!
>>
>> A while back (a few years, I think!) I wrote and posted to this 
>> mailing list a set of php scripts that provided a new books display. 
>> When we recently upgraded our koha instance (shifting to Plack in the 
>> process!), I decided to rewrite this new books display in perl.
>>
>> And I thought I'd put it up here in case anyone was interested in it.
>>
>> Perl's not my language of choice - so if there are any improvements 
>> to be made, please let me know.
>>
>> To use it, simply install the newbooksdisplay.pl in the opac cgi-bin 
>> directory, and add the following snippet to the OpacMain
systempreferences:
>>
>> <h2 style="align="center">Newest books in the library</h2> <div 
>> id="newbooks"></div> <script type="text/javascript"> 
>> $("#newbooks").load("/cgi-bin/koha/newbooksdisplay.pl", function() {
>>
>> KOHA.Google.GetCoverFromIsbn();
>>
>> });
>>
>> </script>
>>
>>
>> I've also modified the google-jackets.js to produce a nice artificial 
>> cover if none is available from google books (currently only if the 
>> correct
>> HTML5 data tags are supplied, as in the newbooksdisplay)
>>
>>
>> if (typeof KOHA == "undefined" || !KOHA) {
>>     var KOHA = {};
>> }
>>
>> /**
>>  * A namespace for Google related functions.
>>  */
>> KOHA.Google = {
>>
>>
>>     /**
>>      * Search all:
>>
>>
>>
>>      *    <div title="biblionumber" id="isbn"
class="gbs-thumbnail"></div>
>>      * or
>>      *    <div title="biblionumber" id="isbn"
class="gbs-thumbnail-preview"></div>
>>
>>
>>
>>      * and run a search with all collected isbns to Google Book Search.
>>      * The result is asynchronously returned by Google and catched by
>>      * gbsCallBack().
>>      */
>>     GetCoverFromIsbn: function(newWindow) {
>>
>>
>>
>>         var bibkeys = [];
>>         $("div [id^=gbs-thumbnail]").each(function(i) {
>>             bibkeys.push($(this).attr("class").split(' ')[0]); // id=isbn
>>         });
>>         bibkeys = bibkeys.join(',');
>>
>>
>>
>>         var scriptElement = document.createElement("script");
>>         this.openInNewWindow=newWindow;
>>         scriptElement.setAttribute("id", "jsonScript");
>>         scriptElement.setAttribute("src",
>>
>>
>>
>>             "http://books.google.com/books?bibkeys="; + escape(bibkeys) +
>>             "&jscmd=viewapi&callback=KOHA.Google.gbsCallBack");
>>
>>
>>
>>         scriptElement.setAttribute("type", "text/javascript");
>>         
>> document.documentElement.firstChild.appendChild(scriptElement);
>>
>>     },
>>
>>     /**
>>      * Add cover pages <div
>>
>>
>>
>>      * and link to preview if div id is gbs-thumbnail-preview
>>      */
>>     gbsCallBack: function(booksInfo) {
>>          var target = '';
>>          if (this.openInNewWindow) {
>>             target = 'target="_blank" ';
>>
>>
>>
>>          }
>>          for (id in booksInfo) {
>>              var book = booksInfo[id];
>>              $("."+book.bib_key).each(function() {
>>              var gbsre = /^gbs-thumbnail/;
>>              if ( gbsre.exec($(this).attr("id")) ) {
>>
>>
>>
>>                       var a = document.createElement("a");
>>                       a.href = book.info_url;
>>                       if (typeof(book.thumbnail_url) != "undefined") {
>>                           var img = document.createElement("img");
>>
>>
>>
>>                           img.setAttribute("class","thumbnail");
>>                           img.src = book.thumbnail_url+"&zoom=1";
>>                           $(this).append(img);
>>                           var re = /^gbs-thumbnail-preview/;
>>
>>
>>
>>                           if ( re.exec($(this).attr("id")) ) {
>>                               $(this).append(
>>                                   '<div style="margin-bottom:5px; 
>> margin-top:-5px;font-size:9px">' +
>>
>>
>>
>>                                   '<a '+target+'href="' +
>>                                   book.info_url +
>>                                   '"><img src="' +
>>                                   
>> 'http://books.google.com/intl/en/googlebooks/images/gbs_preview_stick
>> er1.gif' +
>>
>>
>>
>>                                   '"></a></div>'
>>                                   );
>>                           }
>>                       } else if ($(this).attr('data-title')) {
>>                                      var fakeCoverDiv =
document.createElement("div");
>>
>>
>>
>>                                      $(fakeCoverDiv).attr("class",
"fakeCover");
>>                                      $(this).append(fakeCoverDiv);
>>                                      var auSpan =
document.createElement("span");
>>                                      $(auSpan).attr("class", "author");
>>
>>
>>
>>
$(auSpan).html($(this).attr("data-author"));
>>                                      $(fakeCoverDiv).append(auSpan);
>>                                         var tiSpan =
document.createElement("span");
>>                                         $(tiSpan).attr("class", 
>> "title");
>>
>>
>>
>>
$(tiSpan).html($(this).attr("data-title"));
>>                                         $(fakeCoverDiv).append(tiSpan);
>>                       } else {
>>                                   var message =
document.createElement("span");
>>
>>
>>
>>                                   $(message).attr("class","no-image");
>>                                   $(message).html(NO_GOOGLE_JACKET);
>>                                   $(this).append(message);
>>                       }
>>              }
>>
>>
>>
>>              });
>>          }
>>      }
>> };
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.koha-community.org/pipermail/koha-devel/attachments/20130502/7
acf54a3/attachment.html>

------------------------------

_______________________________________________
Koha-devel mailing list
Koha-devel@lists.koha-community.org
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel
website : http://www.koha-community.org/ git :
http://git.koha-community.org/ bugs : http://bugs.koha-community.org/

End of Koha-devel Digest, Vol 90, Issue 4
*****************************************

No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.932 / Virus Database: 3164.1.1/5787 - Release Date: 05/02/13
03:55:00


_______________________________________________
Koha-devel mailing list
Koha-devel@lists.koha-community.org
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to