View | Details | Raw Unified | Return to bug 19290
Collapse All | Expand All

(-)a/installer/data/mysql/atomicupdate/bug_19290.sql (+1 lines)
Line 0 Link Here
1
INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES  ('BrowseResultSelection','0',NULL,'Enable/Disable browsing search results fromt the bibliographic record detail page in staff client','YesNo');
(-)a/installer/data/mysql/sysprefs.sql (+1 lines)
Lines 90-95 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
90
('BorrowersTitles','Mr|Mrs|Miss|Ms',NULL,'Define appropriate Titles for patrons','free'),
90
('BorrowersTitles','Mr|Mrs|Miss|Ms',NULL,'Define appropriate Titles for patrons','free'),
91
('BorrowerUnwantedField','',NULL,'Name the fields you don\'t need to store for a patron\'s account','free'),
91
('BorrowerUnwantedField','',NULL,'Name the fields you don\'t need to store for a patron\'s account','free'),
92
('BranchTransferLimitsType','ccode','itemtype|ccode','When using branch transfer limits, choose whether to limit by itemtype or collection code.','Choice'),
92
('BranchTransferLimitsType','ccode','itemtype|ccode','When using branch transfer limits, choose whether to limit by itemtype or collection code.','Choice'),
93
('BrowseResultSelection','0',NULL,'Enable/Disable browsing search results fromt the bibliographic record detail page in staff client','YesNo'),
93
('CalculateFinesOnReturn','1','','Switch to control if overdue fines are calculated on return or not','YesNo'),
94
('CalculateFinesOnReturn','1','','Switch to control if overdue fines are calculated on return or not','YesNo'),
94
('CalendarFirstDayOfWeek','0','0|1|2|3|4|5|6','Select the first day of week to use in the calendar.','Choice'),
95
('CalendarFirstDayOfWeek','0','0|1|2|3|4|5|6','Select the first day of week to use in the calendar.','Choice'),
95
('canreservefromotherbranches','1','','With Independent branches on, can a user from one library place a hold on an item from another library','YesNo'),
96
('canreservefromotherbranches','1','','With Independent branches on, can a user from one library place a hold on an item from another library','YesNo'),
(-)a/koha-tmpl/intranet-tmpl/js/browser.js (-1 / +1 lines)
Lines 102-108 KOHA.browser = function (searchid, biblionumber) { Link Here
102
                    } else {
102
                    } else {
103
                        nextbutton = '<a href="#" id="browse-next" class="browse-button">' + BROWSER_NEXT + ' »</a>';
103
                        nextbutton = '<a href="#" id="browse-next" class="browse-button">' + BROWSER_NEXT + ' »</a>';
104
                    }
104
                    }
105
                    $('#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>');
105
                    $('#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 searchwithcontext">' + BROWSER_RETURN_TO_SEARCH + '</a></div><div class="browse-prev-next">' + prevbutton + nextbutton + '</div></div></div>');
106
                    $('a#browse-previous').click(function (ev) {
106
                    $('a#browse-previous').click(function (ev) {
107
                        ev.preventDefault();
107
                        ev.preventDefault();
108
                        browseRecords(-1);
108
                        browseRecords(-1);
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc (+1 lines)
Lines 21-26 Link Here
21
<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.validate.min.js"></script>
21
<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.validate.min.js"></script>
22
<!-- koha core js -->
22
<!-- koha core js -->
23
<script type="text/javascript" src="[% interface %]/[% theme %]/js/staff-global.js"></script>
23
<script type="text/javascript" src="[% interface %]/[% theme %]/js/staff-global.js"></script>
24
<script type="text/javascript" src="[% interface %]/[% theme %]/js/commons.js"></script>
24
25
25
[% INCLUDE 'validator-strings.inc' %]
26
[% INCLUDE 'validator-strings.inc' %]
26
[% IF ( IntranetUserJS ) %]
27
[% IF ( IntranetUserJS ) %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/page-numbers.inc (-5 / +5 lines)
Lines 1-18 Link Here
1
[% IF ( PAGE_NUMBERS ) %]<nav><ul class="pagination">
1
[% IF ( PAGE_NUMBERS ) %]<nav><ul class="pagination">
2
    [% IF ( previous_page_offset.defined ) %]
2
    [% IF ( previous_page_offset.defined ) %]
3
        <li><a href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">First</a></li>
3
        <li><a class="nav" href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">First</a></li>
4
        <!-- Row of numbers corresponding to search result pages -->
4
        <!-- Row of numbers corresponding to search result pages -->
5
        <li><a href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% previous_page_offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">&lt;&lt; Previous</a></li>
5
        <li><a class="nav" href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% previous_page_offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">&lt;&lt; Previous</a></li>
6
    [% END %]
6
    [% END %]
7
    [% FOREACH PAGE_NUMBER IN PAGE_NUMBERS %]
7
    [% FOREACH PAGE_NUMBER IN PAGE_NUMBERS %]
8
        [% IF ( PAGE_NUMBER.highlight ) %]
8
        [% IF ( PAGE_NUMBER.highlight ) %]
9
            <li class="active"><span>[% PAGE_NUMBER.pg %]</span></li>
9
            <li class="active"><span>[% PAGE_NUMBER.pg %]</span></li>
10
        [% ELSE %]
10
        [% ELSE %]
11
            <li><a href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% PAGE_NUMBER.offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">[% PAGE_NUMBER.pg %]</a></li>
11
            <li><a class="nav" href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% PAGE_NUMBER.offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">[% PAGE_NUMBER.pg %]</a></li>
12
        [% END %]
12
        [% END %]
13
    [% END %]
13
    [% END %]
14
    [% IF ( next_page_offset ) %]
14
    [% IF ( next_page_offset ) %]
15
        <li><a href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% next_page_offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">Next &gt;&gt;</a></li>
15
        <li><a class="nav" href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% next_page_offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">Next &gt;&gt;</a></li>
16
        <li><a href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% last_page_offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">Last</a></li>
16
        <li><a class="nav" href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %]&amp;offset=[% last_page_offset %][% IF ( sort_by ) %]&amp;sort_by=[% sort_by |url %][% END %]">Last</a></li>
17
    [% END %]
17
    [% END %]
18
</ul></nav>[% END %]
18
</ul></nav>[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref (+7 lines)
Lines 78-83 Searching: Link Here
78
                  yes: Keep
78
                  yes: Keep
79
                  no: "Don't keep"
79
                  no: "Don't keep"
80
            - patron search history in the staff client.
80
            - patron search history in the staff client.
81
        -
82
            - pref: BrowseResultSelection
83
              default: 0
84
              choices:
85
                  yes: Enable
86
                  no: Disable
87
            - "browsing search results fromt the bibliographic record detail page in staff client."
81
    Search Form:
88
    Search Form:
82
        -
89
        -
83
            - Load the unlogged history to the next user.
90
            - Load the unlogged history to the next user.
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt (-1 / +2 lines)
Lines 1043-1049 Link Here
1043
    [% INCLUDE 'browser-strings.inc' %]
1043
    [% INCLUDE 'browser-strings.inc' %]
1044
    <script type="text/javascript" src="[% interface %]/js/browser.js"></script>
1044
    <script type="text/javascript" src="[% interface %]/js/browser.js"></script>
1045
    <script type="text/javascript">
1045
    <script type="text/javascript">
1046
        var browser = KOHA.browser('[% searchid %]', parseInt(biblionumber, 10));
1046
        var browser;
1047
        browser = KOHA.browser('[% searchid %]', parseInt(biblionumber, 10));
1047
        browser.show();
1048
        browser.show();
1048
1049
1049
        function activate_filters(id) {
1050
        function activate_filters(id) {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt (-6 / +55 lines)
Lines 20-25 Link Here
20
<![endif]-->
20
<![endif]-->
21
<script type="text/javascript" src="[% interface %]/js/browser.js"></script>
21
<script type="text/javascript" src="[% interface %]/js/browser.js"></script>
22
<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
22
<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
23
<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
23
<script type="text/javascript">
24
<script type="text/javascript">
24
//<![CDATA[
25
//<![CDATA[
25
var MSG_NO_ITEM_SELECTED = _("Nothing is selected.");
26
var MSG_NO_ITEM_SELECTED = _("Nothing is selected.");
Lines 55-69 $(document).ready(function() { Link Here
55
56
56
    $("#cartsubmit").click(function(e){
57
    $("#cartsubmit").click(function(e){
57
        e.preventDefault();
58
        e.preventDefault();
58
        var checkboxes = $("#searchresults").find(":checkbox");
59
        addMultiple();
59
        addMultiple(checkboxes);
60
    });
60
    });
61
61
62
    $(".addtolist").on("click",function(e){
62
    $(".addtolist").on("click",function(e){
63
        e.preventDefault();
63
        e.preventDefault();
64
        var shelfnumber = $(this).data("shelfnumber");
64
        var shelfnumber = $(this).data("shelfnumber");
65
        var checkboxes = $("#searchresults").find(":checkbox");
65
        var vshelf = vShelfAdd();
66
        var vshelf = vShelfAdd(checkboxes);
67
        if( vshelf ){
66
        if( vshelf ){
68
            if( $(this).hasClass("morelists") ){
67
            if( $(this).hasClass("morelists") ){
69
                Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?' + vshelf);
68
                Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?' + vshelf);
Lines 87-92 $("#searchheader").on("click",".placehold", function(){ Link Here
87
    return false;
86
    return false;
88
});
87
});
89
88
89
$("#searchheader").on("click", ".browse_selection", function(){
90
    browse_selection();
91
    return false;
92
});
93
90
$(".placeholdfor").click(function(){
94
$(".placeholdfor").click(function(){
91
    holdForPatron();
95
    holdForPatron();
92
    $(".btn-group").removeClass("open");
96
    $(".btn-group").removeClass("open");
Lines 167-172 $("#forgetholdfor").click(function(){ Link Here
167
        delSingleRecord(biblionumber);
171
        delSingleRecord(biblionumber);
168
    });
172
    });
169
173
174
    [% UNLESS Koha.Preference('BrowseResultSelection') %]
175
        resetSearchContext();
176
    [% END %]
177
    $(".selection").change(function(){
178
        if ( $(this).is(':checked') == true ) {
179
          addBibToContext( $(this).val() );
180
        } else {
181
          delBibToContext( $(this).val() );
182
        }
183
    });
184
    $("#bookbag_form").ready(function(){
185
        $("#bookbag_form").unCheckCheckboxes();
186
        var bibnums = getContextBiblioNumbers();
187
        if (bibnums) {
188
            for (var i=0; i < bibnums.length; i++) {
189
                var id = ('#bib' + bibnums[i]);
190
                if ($(id)) {
191
                    $(id).attr('checked', true);
192
                }
193
            }
194
        }
195
    });
170
});
196
});
171
197
172
198
Lines 187-196 function highlightOn() { Link Here
187
}[% END %]
213
}[% END %]
188
214
189
function selectAll () {
215
function selectAll () {
190
    $(".selection").prop("checked", true);
216
    $("#bookbag_form").checkCheckboxes();
217
    $("#bookbag_form").find("input[type='checkbox'][name='biblionumber']").each(function(){
218
        $(this).change();
219
    } );
220
    return false;
191
}
221
}
192
function clearAll () {
222
function clearAll () {
193
    $(".selection").prop("checked", false);
223
    $("#bookbag_form").unCheckCheckboxes();
224
    $("#bookbag_form").find("input[type='checkbox'][name='biblionumber']").each(function(){
225
        $(this).change();
226
    } );
227
    return false;
194
}
228
}
195
function placeHold () {
229
function placeHold () {
196
    var checkedItems = $(".selection:checked");
230
    var checkedItems = $(".selection:checked");
Lines 223-228 function forgetPatron(){ Link Here
223
    $("#placeholdc").html("<a class=\"btn btn-default btn-xs placehold\" href=\"#\"><i class=\"fa fa-sticky-note-o\"></i> "+_("Place hold")+"</a>");
257
    $("#placeholdc").html("<a class=\"btn btn-default btn-xs placehold\" href=\"#\"><i class=\"fa fa-sticky-note-o\"></i> "+_("Place hold")+"</a>");
224
}
258
}
225
259
260
function browse_selection () {
261
    var bibnums = getContextBiblioNumbers();
262
    if ( bibnums && bibnums.length > 0 ) {
263
        var browser = KOHA.browser('', parseInt('[% biblionumber %]', 10));
264
        browser.create(1, '[% query_cgi %]', '[% limit_cgi | uri %]','[% sort_cgi | uri %]', bibnums, bibnums.length);
265
        window.location = '/cgi-bin/koha/catalogue/detail.pl?biblionumber=' + bibnums[0] + '&searchid='+browser.searchid;
266
    } else {
267
        alert(MSG_NO_ITEM_SELECTED);
268
    }
269
    return false;
270
}
271
226
function addToList () {
272
function addToList () {
227
    var checkedItems = $(".selection:checked");
273
    var checkedItems = $(".selection:checked");
228
    if ($(checkedItems).size() == 0) {
274
    if ($(checkedItems).size() == 0) {
Lines 386-391 function holdForPatron() { Link Here
386
                    <div id="placeholdc" class="btn-group"><a class="btn btn-default btn-xs placehold" href="#"><i class="fa fa-sticky-note-o"></i> Place hold</a></div>
432
                    <div id="placeholdc" class="btn-group"><a class="btn btn-default btn-xs placehold" href="#"><i class="fa fa-sticky-note-o"></i> Place hold</a></div>
387
                [% END %]
433
                [% END %]
388
                [% END %]
434
                [% END %]
435
                [% IF Koha.Preference('BrowseResultSelection') %]
436
                    <div id="browse_selection" class="btn-group"><a class="btn btn-default btn-xs browse_selection" href="#"><i class="fa fa-sticky-note-o"></i> Browse selected records</a></div>
437
                [% END %]
389
438
390
                [% IF ( CAN_user_editcatalogue_edit_catalogue ) %] <div class="btn-group"><a class="btn btn-default btn-xs" id="z3950submit" href="#"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>[% END %]
439
                [% IF ( CAN_user_editcatalogue_edit_catalogue ) %] <div class="btn-group"><a class="btn btn-default btn-xs" id="z3950submit" href="#"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>[% END %]
391
440
(-)a/koha-tmpl/intranet-tmpl/prog/js/basket.js (-15 / +33 lines)
Lines 157-173 function SelectAll(){ Link Here
157
157
158
function addMultiple(biblist){
158
function addMultiple(biblist){
159
    var c_value = "";
159
    var c_value = "";
160
    if(biblist.length > 0) {
160
    if( biblist && biblist.length > 0 ) {
161
        for (var i=0; i < biblist.length; i++) {
161
        for (var i=0; i < biblist.length; i++) {
162
            if (biblist[i].checked) {
162
            if (biblist[i].checked) {
163
                c_value = c_value + biblist[i].value + "/";
163
                c_value = c_value + biblist[i].value + "/";
164
            }
164
            }
165
        }
165
        }
166
        addSelRecords(c_value);
167
    } else {
166
    } else {
168
        c_value = c_value + biblist.value + "/";
167
        var bibnums = getContextBiblioNumbers();
169
        addSelRecords(c_value);
168
        if ( bibnums.length > 0 ) {
169
            for ( var i = 0 ; i < bibnums.length ; i++ ) {
170
                c_value = c_value + bibnums[i] + "/";
171
            }
172
        } else {
173
            if(document.bookbag_form.biblionumber.length > 0) {
174
                for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
175
                    if (document.bookbag_form.biblionumber[i].checked) {
176
                        c_value = c_value + document.bookbag_form.biblionumber[i].value + "/";
177
                    }
178
                }
179
            } else {
180
                c_value = c_value + document.bookbag_form.biblionumber.value + "/";
181
            }
182
        }
170
    }
183
    }
184
    addSelRecords(c_value);
171
}
185
}
172
186
173
function addSelRecords(valSel) { // function for adding a selection of biblios to the basket
187
function addSelRecords(valSel) { // function for adding a selection of biblios to the basket
Lines 421-440 function addSelToShelf() { Link Here
421
///  vShelfAdd()  builds url string for multiple-biblio adds.
435
///  vShelfAdd()  builds url string for multiple-biblio adds.
422
436
423
function vShelfAdd(biblist) {
437
function vShelfAdd(biblist) {
424
        bibs = [];
438
    var bibs = new Array;
425
        if(biblist.length > 0) {
439
    if( biblist && biblist.length > 0 ) {
426
                for (var i=0; i < biblist.length; i++) {
440
        for (var i=0; i < biblist.length; i++) {
427
                        if (biblist[i].checked) {
441
            if (biblist[i].checked) {
428
                                bibs.push("biblionumber=" +  biblist[i].value);
442
                bibs.push("biblionumber=" +  biblist[i].value);
429
                        }
443
            }
430
                }
444
        }
431
        if (bibs.length === 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
445
        if (bibs.length === 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
432
            return bibs.join("&");
446
        return bibs.join("&");
433
        } else {
447
    } else {
434
            if (biblist.checked) {
448
        var bibnums = getContextBiblioNumbers();
435
                return "biblionumber=" + biblist.value;
449
        if ( bibnums.length > 0 ) {
450
            for ( var i = 0 ; i < bibnums.length ; i++ ) {
451
                bibs.push("biblionumber=" + bibnums[i]);
436
            }
452
            }
453
            return bibs.join("&");
437
        }
454
        }
455
    }
438
}
456
}
439
457
440
function showCart(){
458
function showCart(){
(-)a/koha-tmpl/intranet-tmpl/prog/js/cart.js (+2 lines)
Lines 71-76 $(document).ready(function(){ Link Here
71
    $("#bookbag_form").checkCheckboxes("*", true).each(
71
    $("#bookbag_form").checkCheckboxes("*", true).each(
72
        function() {
72
        function() {
73
            selRecord(this.value,true);
73
            selRecord(this.value,true);
74
            $(this).change();
74
        }
75
        }
75
    );
76
    );
76
        return false;
77
        return false;
Lines 80-85 $(document).ready(function(){ Link Here
80
    $("#bookbag_form").unCheckCheckboxes("*",true).each(
81
    $("#bookbag_form").unCheckCheckboxes("*",true).each(
81
        function() {
82
        function() {
82
            selRecord(this.value,false);
83
            selRecord(this.value,false);
84
            $(this).change();
83
        }
85
        }
84
    );
86
    );
85
        return false;
87
        return false;
(-)a/koha-tmpl/intranet-tmpl/prog/js/commons.js (-1 / +73 lines)
Line 0 Link Here
0
- 
1
// Extends jQuery API
2
jQuery.extend({uniqueArray:function(array){
3
    return $.grep(array, function(el, index) {
4
        return index === $.inArray(el, array);
5
    });
6
}});
7
8
function removeByValue(arr, val) {
9
    for(var i=0; i<arr.length; i++) {
10
        if(arr[i] == val) {
11
            arr.splice(i, 1);
12
            break;
13
        }
14
    }
15
}
16
17
function paramOfUrl( url, param ) {
18
    param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
19
    var regexS = "[\\?&]"+param+"=([^&#]*)";
20
    var regex = new RegExp( regexS );
21
    var results = regex.exec( url );
22
    if( results == null ) {
23
        return "";
24
    } else {
25
        return results[1];
26
    }
27
}
28
29
function addBibToContext( bibnum ) {
30
    bibnum = parseInt(bibnum, 10);
31
    var bibnums = getContextBiblioNumbers();
32
    bibnums.push(bibnum);
33
    setContextBiblioNumbers( bibnums );
34
    setContextBiblioNumbers( $.uniqueArray( bibnums ) );
35
}
36
37
function delBibToContext( bibnum ) {
38
    var bibnums = getContextBiblioNumbers();
39
    removeByValue( bibnums, bibnum );
40
    setContextBiblioNumbers( $.uniqueArray( bibnums ) );
41
}
42
43
function setContextBiblioNumbers( bibnums ) {
44
    $.cookie('bibs_selected', JSON.stringify( bibnums ));
45
}
46
47
function getContextBiblioNumbers() {
48
    var r = $.cookie('bibs_selected');
49
    if ( r ) {
50
        return JSON.parse(r);
51
    }
52
    r = new Array();
53
    return r;
54
}
55
56
function resetSearchContext() {
57
    setContextBiblioNumbers( new Array() );
58
}
59
60
$(document).ready(function(){
61
    // forms with action leading to search
62
    $("form[action*='search.pl']").submit(function(){
63
        resetSearchContext();
64
    });
65
    // any link to launch a search except navigation links
66
    $("[href*='search.pl?']").not(".nav").not('.searchwithcontext').click(function(){
67
        resetSearchContext();
68
    });
69
    // any link to a detail page from the results page.
70
    $("#bookbag_form a[href*='detail.pl?']").click(function(){
71
        resetSearchContext();
72
    });
73
});

Return to bug 19290