Bug 10600: (follow-up) change the icon for the action duplicate
[koha.git] / koha-tmpl / intranet-tmpl / js / browser.js
1 if ( KOHA === undefined ) var KOHA = {};
2
3 KOHA.browser = function (searchid, biblionumber) {
4     var me = this;
5     this.searchid = searchid;
6
7     if (me.searchid) {
8         me.searchCookie = JSON.parse($.cookie(searchid));
9     }
10
11     var browseRecords = function (searchid, movement) {
12         var newSearchPos = me.curPos + movement;
13         if (newSearchPos > me.searchCookie.results.length - 1) {
14             window.location = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(me.searchCookie.query) + '&limit=' + decodeURIComponent(me.searchCookie.limit) + '&sort=' + me.searchCookie.sort + '&gotoPage=detail.pl&gotoNumber=first&searchid=' + searchid + '&offset=' + newSearchPos;
15         } else if (newSearchPos < 0) {
16             window.location = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(me.searchCookie.query) + '&limit=' + decodeURIComponent(me.searchCookie.limit) + '&sort=' + me.searchCookie.sort + '&gotoPage=detail.pl&gotoNumber=last&searchid=' + searchid + '&offset=' + (me.offset - me.searchCookie.pagelen);
17         } else {
18             window.location = window.location.href.replace('biblionumber=' + biblionumber, 'biblionumber=' + me.searchCookie.results[newSearchPos]);
19         }
20     }
21
22     this.create = function (offset, query, limit, sort, newresults) {
23         if (me.searchCookie) {
24             if (offset === me.searchCookie.offset - newresults.length) {
25                 me.searchCookie.results = newresults.concat(me.searchCookie.results);
26             } else if (searchOffset = me.searchCookie.offset + newresults.length) {
27                 me.searchCookie.results = me.searchCookie.results.concat(newresults);
28             } else {
29                 delete me.searchCookie;
30             }
31         }
32         if (!me.searchCookie) {
33             me.searchCookie = { offset: offset,
34                 query: query,
35                 limit: limit,
36                 sort:  sort,
37                 pagelen: newresults.length,
38                 results: newresults
39             };
40         }
41         $.cookie(me.searchid, JSON.stringify(me.searchCookie), { path: '/' });
42         $(document).ready(function () {
43             $('#searchresults table tr a[href*="detail.pl"]').click(function (ev) {
44                 ev.preventDefault();
45                 window.location = $(this).attr('href') + '&searchid=' + me.searchid;
46             });
47         });
48     };
49
50     this.show = function () {
51         if (me.searchCookie) {
52             me.curPos = $.inArray(biblionumber, me.searchCookie.results);
53             me.offset = Math.floor((me.searchCookie.offset + me.curPos - 1) / me.searchCookie.pagelen) * me.searchCookie.pagelen;
54
55             $(document).ready(function () {
56                 if (me.curPos > -1) {
57                     var searchURL = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(me.searchCookie.query) + '&limit=' + decodeURIComponent(me.searchCookie.limit) + '&sort=' + me.searchCookie.sort + '&searchid=' + me.searchid + '&offset=' + me.offset;
58                     var prevbutton;
59                     var nextbutton;
60                     if (me.curPos === 0 && me.searchCookie.offset === 1) {
61                         prevbutton = '<span id="browse-previous" class="browse-button">« ' + BROWSER_PREVIOUS + '</span>';
62                     } else {
63                         prevbutton = '<a href="#" id="browse-previous" class="browse-button">« ' + BROWSER_PREVIOUS + '</a>';
64                     }
65                     if (me.curPos === me.searchCookie.results.length && me.searchCookie.total == me.curPos + me.searchCookie.offset) {
66                         nextbutton = '<span id="browse-next" class="browse-button">' + BROWSER_NEXT + ' »</span>';
67                     } else {
68                         nextbutton = '<a href="#" id="browse-next" class="browse-button">' + BROWSER_NEXT + ' »</a>';
69                     }
70                     $('#menu').before('<div class="browse-controls"><div class="browse-controls-inner"><div class="browse-label"><a href="' + searchURL + '" id="browse-return-to-results" class="browse-button">' + BROWSER_RETURN_TO_SEARCH + '</a></div><div class="browse-prev-next">' + prevbutton + nextbutton + '</div></div></div>');
71                     $('a#browse-previous').click(function (ev) {
72                         ev.preventDefault();
73                         browseRecords(searchid, -1);
74                     });
75                     $('a#browse-next').click(function (ev) {
76                         ev.preventDefault();
77                         browseRecords(me.searchid, 1);
78                     });
79                     $('a[href*="biblionumber="]').click(function (ev) {
80                         ev.preventDefault();
81                         window.location = $(this).attr('href') + '&searchid=' + me.searchid;
82                     });
83                     $('form[name="f"]').append('<input type="hidden" name="searchid" value="' + me.searchid + '"></input>');
84                 }
85             });
86         }
87     };
88
89     return me;
90 };