Skillnad mellan versioner av "IntranetUserJS/mellansjo"
Rad 1 203: | Rad 1 203: | ||
}); | }); | ||
}); | }); | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | |||
+ | == Cirkulation / Reservation == | ||
+ | |||
+ | '''Snabbaccess till senaste låntagare vid reservation.''' | ||
+ | |||
+ | [[Fil:Senastelantagarereservation.PNG]] | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | if ($.cookie('lastpatron')) { | ||
+ | var name = $.cookie('lastpatron'); | ||
+ | var link = $('#holds_patronsearch').attr('action'); | ||
+ | var location = window.location.hostname; | ||
+ | var patronlink = $.cookie('patronlink'); | ||
+ | $('<br /><br /><span>eller reservera för senaste låntagaren: </span><a href="https://' + location + '/cgi-bin/koha/reserve/' + link + '&' + patronlink +'" id="hold">' + name + '</a>').insertAfter('#holds_patronsearch input[type="submit"]'); | ||
+ | |||
+ | $('<span> </span><div class="btn-group" style="vertical-align:unset;"><button id="lastpatrons_res" class="dropdown-toggle" data-toggle="dropdown">Fler<span class="caret"></span></button><ul id="patron-dropdown2" class="dropdown-menu"></ul></div>').insertAfter('#hold'); | ||
+ | |||
+ | $('#lastpatrons_res').on('click', function(event){ // Öppna listan med senaste låntagare | ||
+ | |||
+ | var reslp = $.cookie('lastpatrons'); | ||
+ | var resnames = reslp.split(","); | ||
+ | var respl = $.cookie('patronlinks'); | ||
+ | var reslinks = respl.split(","); | ||
+ | var rests = $.cookie('timestamps'); | ||
+ | var restimes = rests.split(","); | ||
+ | var reslist = $("#patron-dropdown2"); | ||
+ | var resparent = reslist.parent(); | ||
+ | var location = window.location.hostname; | ||
+ | var reslink = $('#holds_patronsearch').attr('action'); | ||
+ | |||
+ | reslist.detach().empty().each(function(i){ | ||
+ | for (var x = 0; x < resnames.length; x++){ | ||
+ | $(this).append('<li><a href="https://' + location + '/cgi-bin/koha/reserve/' + link + '&' + reslinks[x] +'" id="hold"><span class="timestamps">' + restimes[x].slice(0,5) + ' </span>' + resnames[x] + '</a></li>'); | ||
+ | if (x == resnames.length - 1){ | ||
+ | $(this).appendTo(resparent); | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | }); | ||
+ | }; | ||
</pre> | </pre> |
Versionen från 2 april 2019 kl. 11.16
Väntfunktionen VIKTIGT
Lägg denna högst upp i intranetuserjs under $(document).ready(function() {, Viktig funktion för att scripten ska fungera.
// Vänt-funktion var waitForEl = function(selector, callback) { if (jQuery(selector).length) { callback(); } else { setTimeout(function() { waitForEl(selector, callback); }, 100); } };
Periodika / Ta emot
Lättare att se hembibliotekets prenumeration genom att markera den grön och förstora rutan vid sökning. ver 1 2019-03-22
if ($('#ser_serials-home').length) { waitForEl('.dataTables_wrapper', function() { var logbib = localStorage.getItem('loggedinbranch'); $('.dataTables_wrapper td:nth-child(5)').each(function() { if ($(this).text().indexOf(logbib) > -1) { $(this).closest('tr').children().css('background-color','#d4efb7'); $(this).closest('tr').children().css('padding','30px 4px'); }; }); }); };
Katalog / Sökning
Skapar språkfält vid enkel sökning i katalogen. Språk hämtas från 008 och 040 fler språk går att lägga till.
if ($('#header_search').length) { $('<select id="language-limit" name="limit" style="margin-left:3px;"><option value="">Alla språk</option><option value="ln,rtrn:alb">Albanska</option><option value="ln,rtrn:ara">Arabiska</option><option value="ln,rtrn:bos">Bosniska</option><option value="ln,rtrn:dan">Danska</option><option value="ln,rtrn:eng">Engelska</option><option value="ln,rtrn:fin">Finska</option><option value="ln,rtrn:fre">Franska</option><option value="ln,rtrn:heb">Hebreiska</option><option value="ln,rtrn:ita">Italienska</option><option value="ln,rtrn:hrv">Kroatiska</option><option value="ln,rtrn:chi">Kinesiska</option><option value="ln,rtrn:nob">Norskt bokmål</option><option value="ln,rtrn:nno">Nynorsk</option><option value="ln,rtrn:per">Persiska</option><option value="ln,rtrn:pol">Polska</option><option value="ln,rtrn:prs">Dari</option><option value="ln,rtrn:por">Portugisiska</option><option value="ln,rtrn:rum">Romani</option><option value="ln,rtrn:rus">Ryska</option><option value="ln,rtrn:srp">Serbiska</option><option value="ln,rtrn:slo">Slovakiska</option><option value="ln,rtrn:slv">Slovenska</option><option value="ln,rtrn:som">Somaliska</option><option value="ln,rtrn:spa">Spanska</option><option value="ln,rtrn:swe">Svenska</option><option value="ln,rtrn:tha">Thailändska</option><option value="ln,rtrn:tgl">Tagalog </option><option value="ln,rtrn:tir">Tigriska</option><option value="ln,rtrn:tur">Turkiska</option><option value="ln,rtrn:ger">Tyska</option><option value="ln,rtrn:urd">Urdu</option></select>').insertAfter('#header_search #search-form'); };
Cirkulation / Återlämning
Meddelande om återlämnad Magasin-bok.
if ($('#circ_returns').length) { if ($('#checkedintable tbody tr:first .ci-type').text().indexOf('Magasin') > -1) { $('#bd .yui-g:first').append('<div class="dialog message"><h3 class="problem" style="margin:25px;color:#990000">Detta exemplar tillhör Magasin</hr></div>'); }; };
Cirkulation / Omlån
Skapar en egen låna om-knapp för varje utlånat exemplar.
// IntranetUserJS if ($('#circ_circulation').length) { waitForEl('.renew', function() { $('.renew:visible').each(function() { var itemId = $(this).attr('value'); $(this).parent().parent().append('<button class="btn btn-default btn-xs renewlink" value="' + itemId + '">Låna om</a>'); }); $('.renewlink').on('click', function(event) { event.preventDefault(); var id = $(this).attr('value'); console.log('Button pressed! - ' + id); $(".renew:visible").prop("checked", false); $(this).siblings().find('.renew').prop('checked', true); $('#RenewCheckinChecked').trigger('click'); $(".renew:visible").prop("checked", true); }); $('.renewals-disabled:visible').each(function() { $(this).parent().append('<i class="fa fa-frown-o" style="float:right;font-size:x-large;color:#d0d0d0;"></i>'); }); }); };
OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"
// IntranetUserCSS /* Lånaom-knapp */ .renewlink { font-size: smaller !important; } .renewals-disabled { color: #c00; }
Katalog / Reservationer
Hämta mer information om reservationer på detaljsidan.
// IntranetUserJS if ($('#catalog_detail').length) { var bibnr = $('input[name="bib"]').attr('value'); if ($('.number_box').length) { $.get('https://' + window.location.hostname + '/cgi-bin/koha/svc/report?id=463&sql_params=' + bibnr, "json").done(function(data) { function countResStat(type) { val = 0; for (i = 0;i < data.length;i++) { if (data[i][2] === type) { val = val + 1; }; }; return val; }; var res = data[data.length - 1][3]; var trans = countResStat('T'); var waiting = countResStat('W'); if (res > 0) { $('.number_box').parent().append('<span class="resDetail">Antal i kö: ' + res + '</span>'); }; if (trans > 0) { $('.number_box').parent().append('<span class="resDetail">På väg: ' + trans + '</span>'); }; if (waiting > 0) { $('.number_box').parent().append('<span class="resDetail">Aviserade: ' + waiting + '</span>'); }; }); }; };
OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"
//IntranetUserCSS .resDetail { /* Detaljsidan: Reservationsdetaljer avstånd */ padding: 10px; color: #900; } .resExtra { padding: 20px !important; font-size: large; }
Katalog / Shelving location
Lägg till en pil och ändra färg på shelving locations på detaljsidan.
// IntranetUserJS if ($('#bibliodetails').length) { $('.shelvingloc').each(function() { if ($(this).text().length) { var loc = $(this).text(); $(this).html('<span class="pil">↳ </span>' + loc); }; }); };
OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"
// IntranetUserCSS .shelvingloc { color: olive; } .pil { /* Pil framför Lokal placering under Hembibliotek */ font-style: normal; /* Normal font */ color: #900; /* Färg (rödaktig) */ font-size: large; /* Större text */ }
Katalog / postsammanslagning
Skapar en sammanslagningsknapp på resultatsidan för enklare hantering av dublettposter.
// IntranetUserJS if ($('#catalog_results').length) { $('#selection_ops').append('<div class="btn-group"><button id="mergeposts" class="btn btn-default btn-xs" type="submit"><i class="fa fa-compress"></i> Slå samman</button></div>'); $('#mergeposts').on('click', function() { var selIDs = []; var link = 'https://' + window.location.hostname + '/cgi-bin/koha/cataloguing/merge.pl?'; $('.selection').each(function() { if ($(this).is(':checked')) { selIDs.push($(this).attr('value')); }; }); for (i = 0; i < selIDs.length; i++) { link = link + 'biblionumber=' + selIDs[i] + '&'; } link = link.substring(0, link.length -1); if (selIDs.length > 1) { window.open(link); } else { alert('Välj vilka poster du vill slå samman först...'); }; }); };
Katalog / Knappar
Skapar knappar för Kopiera streckkod, Återlämna exemplar och Radera exemplar bredvid streckkoden i katalogen.
// IntranetUserJS if ($('#catalog_detail').length) { $('#holdings_table tbody tr td:nth-child(9), #otherholdings_table tbody tr td:nth-child(9)').each(function() { $(this).append('<br /><a href="#" class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i></a><a href="#" class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a><a href="#" class="btn btn-default btn-xs btrash" data-toggle="tooltip" title="Radera"><i class="fa fa-trash"></i></a>'); }); // Kopiera $('.bcopy').on('click', function(event) { event.preventDefault(); $('a').removeClass('bcSel'); $(this).siblings('a:first').addClass('bcSel'); var bcLink = document.querySelector('.bcSel'); var range = document.createRange(); range.selectNode(bcLink); window.getSelection().addRange(range); try { document.execCommand('copy'); } catch(e) { alert(e); }; window.getSelection().removeAllRanges(); }); // Återlämna $('.breturn').on('click', function(event) { event.preventDefault(); var bc = $(this).siblings('a:first').text(); if(confirm("Är du säker på att du vill återlämna detta exemplaret? \n\r\n\r" + bc)){ window.location.href = 'https://' + window.location.hostname + '/cgi-bin/koha/circ/returns.pl?barcode=' + bc; }; }); // Radera $('.btrash').on('click', function(event) { event.preventDefault(); var bc = $(this).siblings('a:first').text(); var itemnr = $(this).siblings('a:first').attr('href'); itemnr = itemnr.slice(itemnr.indexOf('itemnumber=') + 11, itemnr.indexOf('&biblionumber')); var bibnr = $('.yui-b #menu li:first a').attr('href'); bibnr = bibnr.slice(bibnr.indexOf('biblionumber') + 13); var link = 'https://' + window.location.hostname + '/cgi-bin/koha/tools/batchMod.pl?op=show&del=1&itemnumber=' + itemnr + '&src=%2Fcgi-bin%2Fkoha%2Fcatalogue%2Fdetail.pl%3Fbiblionumber%3D' + bibnr; if (confirm("Är du säker på att du vill radera detta exemplaret? \n\r\n\r" + bc)) { window.location.href = link; }; }); };
OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"
// IntranetUserCSS .bcSel { background-color: gold; } .bcopy, .breturn, .btrash { min-width: 22px; margin: 5px 7px 2px 0; }
Cirkulation / Knappar
Skapar knappar för Kopiera streckkod och Återlämna bredvid streckkod på utlåningssidan.
// IntranetUserJS if ($('#circ_circulation').length | $('#pat_moremember').length) { waitForEl('#issues-table tbody tr td:nth-child(2)', function() { $('#issues-table tbody tr td:nth-child(2)').each(function() { $(this).append('</br><a href="#" class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i><a href="#" class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a>'); }); // Kopiera $('.bcopy').on('click', function(event) { event.preventDefault(); var isSupported = document.queryCommandSupported('copy'); console.log('Går kopiera? = ' + isSupported); $('td a').removeClass('bcSel'); $(this).siblings('a:first').addClass('bcSel'); var bcLink = document.querySelector('.bcSel'); var range = document.createRange(); range.selectNode(bcLink); window.getSelection().addRange(range); try { document.execCommand('copy'); } catch(e) { alert(e); }; window.getSelection().removeAllRanges(); }); // Återlämna $('.breturn').on('click', function(event) { event.preventDefault(); var bc = $(this).siblings('a:first').text(); if(confirm("Är du säker på att du vill återlämna detta exemplaret? \n\r\n\r" + bc)){ window.location.href = 'https://' + window.location.hostname + '/cgi-bin/koha/circ/returns.pl?barcode=' + bc; }; }); }); };
OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"
// IntranetUserCSS .bcSel { background-color: gold; } .bcopy, .breturn, .btrash { min-width: 22px; margin: 5px 7px 2px 0; }
Katalog / Visning
Visa antal exemplar på flikarna för både egna och andra bibliotek.
$('#holdings').each(function() { var nrex = $('#holdings tbody tr').length; var nroex = $('#otherholdings tbody tr').length; $('a[href="#holdings"]').append('<span> (' + nrex + ')</span>'); $('a[href="#otherholdings"]').append('<span> (' + nroex + ')</span>'); });
Katalog / Barnmedia
Ändrar automatiskt till itemtype "BARNBOK" om man skriver in Hcf, Hcg eller något med litet u i Full call number vid exemplarinläggning eller redigering.
$('#subfield952o input:first').change(function() { if ($(this).val().indexOf('Hcf') > -1 | $(this).val().indexOf('Hcg') > -1 | ($(this).val().startsWith('u',0) && $(this).val().charAt(1) === $(this).val().charAt(1).toUpperCase()) | $(this).val().indexOf(',u') > -1 ) { $('select[id^="tag_952_subfield_y"]').select2('val','BARNBOK'); }; });
Katalog / Exemplar
Döljer onödiga fält vid exemplarredigering/registrering.
if ($('#cat_additem').length) { var hiddenArr = ['1','3','5','6','f','j','t','u','w']; for (i = 0; i < hiddenArr.length; i++) { $('.subfield_line label').each(function() { if ($(this).text().charAt(0) == hiddenArr[i]) { $(this).closest('li').hide(); }; }); }; };
Låntagare / Registrering
Tvingar stor bokstav i början på alla namn och adresser på låntagaranmälan och redigering.
jQuery.fn.capitalize = function() { $(this[0]).keyup(function(event) { var box = event.target; var txt = $(this).val(); var stringStart = box.selectionStart; var stringEnd = box.selectionEnd; $(this).val(txt.replace(/^(.)|(\s|\-)(.)/g, function($word) { return $word.toUpperCase(); })); box.setSelectionRange(stringStart , stringEnd); }); return this; } jQuery.fn.capitalizefw = function() { $(this).keyup(function(event) { var textBox = event.target; var start = textBox.selectionStart; var end = textBox.selectionEnd; textBox.value = textBox.value.charAt(0).toUpperCase() + textBox.value.slice(1); textBox.setSelectionRange(start, end); }); return this; } $('#surname, #firstname, #city, #country, #B_city, #B_country').addClass('capitalizer'); $('#address, #address2, #B_address, #B_address2').addClass('capitalizerfw'); $('.capitalizer').on('input', function() { $(this).capitalize(); }); $('.capitalizerfw').on('input', function() { $(this).capitalizefw(); });
Endast småbokstäver i e-postfält.
jQuery.fn.decapitalize = function() { $(this[0]).keyup(function(event) { var box = event.target; var txt = $(this).val(); var stringStart = box.selectionStart; var stringEnd = box.selectionEnd; $(this).val(txt.replace(/^(.)|(\s|\-)(.)/g, function($word) { return $word.toLowerCase(); })); box.setSelectionRange(stringStart , stringEnd); }); return this; } $('#email').addClass('decapitalizer'); $('.decapitalizer').on('input', function() { $(this).decapitalize(); });
Cirkulation / Utlåning och detaljer för låntagare
Meddelanden på låntagarsidan går nu redigera så man slipper skriva en nya varje gång.
$('<a class="editmsg btn btn-link btn-sm" href="#"><i class="fa fa-edit"></i>Ändra</a>').insertAfter('#messages .circ-hlt'); $('.editmsg').on('click', function() { var delmsglink = $(this).next().attr('href'); var msg = $(this).closest('li').find('span.circ-hlt i').text().slice(1,-1); localStorage.setItem('editmsg', msg); $('#addnewmessageLabel').trigger('click'); $('#borrower_message').val(msg); $('.modal-footer button.btn.btn-default.approve').on('click', function (event) { event.preventDefault(); $.get('https://' + window.location.hostname + delmsglink).done(function(datan) { $('form#message_form').trigger('submit'); }); }); $('.modal-footer button.btn.btn-default.deny.cancel').on('click', function () { $('#borrower_message').val(msg); }); });
Exemplar / Streckkoder
Markera innehållet i Streckkodsrutan när man klickar i rutan, förenklar så man kan dra streckkoden direkt när man ställer sig i rutan.
$('input[id^="tag_952_subfield_p"]').each(function() { $(this).addClass('bcselect'); }); $('.bcselect').on('focus', function(){ $(this).select(); }); $('input[id^="tag_952_subfield_p"]').on('click', function() { if (!$('input[id^="tag_952_subfield_p"]').val() > -1) { $(this).select(); }; });
Cirkulation / Reservationer
Visar antal reservationer i kö vid utlån.
$('#circ_needsconfirmation').each(function() { var barcode = sessionStorage.getItem('lastbarcode'); if ($('#circ_needsconfirmation ul li').text().indexOf('Efterfrågat') > -1 | $('#circ_needsconfirmation ul li').text().indexOf('High demand') > -1) { $('#circ_needsconfirmation ul').append('<li>Antal reservationer i kö:\t <span id="antal"><i>Hämtar...</i></span></li>'); $.get('https://' + window.location.hostname + '/cgi-bin/koha/svc/report?id=454&sql_params=' + barcode, "json").done(function(data) { var res = data[data.length - 1][4]; var link = '/cgi-bin/koha/reserve/request.pl?biblionumber=' + data[0][5]; $('#antal').html('<b>' + res + '</b><a href="https://' + window.location.hostname + link +'" target="_blank"> (Öppna kön i ny flik)</a>'); }); }; });
Cirkulation / Sparade lån
SPARADE LÅN - Varning med datum, Vid försök av lån tidigare lånad bok så anges nu senast lånat datum i bekräftelserutan, även om annan streckkod av samma titel försöker lånas.
$('form#mainform').on('submit', function(event) { // Spara senast dragna streckkod vid utlån i webbläsaren sessionStorage.setItem('lastbarcode',$('#barcode').val()); }); $('#circ_needsconfirmation').each(function() { // Bekräfta lån-rutan var link = $.cookie('patronlink'); var barcode = sessionStorage.getItem('lastbarcode'); if (link.indexOf("findborrower") > -1) { var type = "cardnumber="; } else { var type = "borrowernumber="; }; link = link.slice(link.indexOf('=')+1); if ($('#circ_needsconfirmation ul li').text().indexOf('previously ') > -1 | $('#circ_needsconfirmation ul li').text().indexOf('tidigare') > -1) { $('#circ_needsconfirmation ul').append('<h4 id="lastdateloading">Hämtar information... vänta</h4>'); $.get('https://' + window.location.hostname + '/cgi-bin/koha/svc/report?id=450&sql_params=' + link + '&sql_params=' + barcode, "json").done(function(data) { var lastdate = data[0][5]; if (lastdate == null) { lastdate = 0; }; $('#circ_needsconfirmation #lastdateloading').remove(); if (lastdate == 0) { $('#circ_needsconfirmation ul').append('<li id="lastdate">Senast lånad:\t <b>Okänt</b> <i>(före övergång till koha)</i></li>'); sessionStorage.removeItem('lastbarcode'); } else { $('#circ_needsconfirmation ul').append('<li id="lastdate">Senast lånad:\t <b>' + lastdate + '</b></li>'); sessionStorage.removeItem('lastbarcode'); }; }); }; });
Exemplar / Skolbibliotek
Vid redigering/registrering av exemplar så sparas exemplaret automatisk ifall man drar streckkoden, man behöver alltså inte klicka på knappen "Spara" vid redigering av exemplar.
$('#cataloguing_additem_newitem #f').has('#edititem').each(function() { $('#subfield952p input').keypress(function(event) { var keycode = event.keyCode || event.which; if(keycode == '13') { if ($(this).val()) { $('input[onclick="return Check(this.form)"]').trigger('click'); } } }); });
Låntagare / Personnummer
Personnummerfältet låst till endast 10 siffror och flytta fältet till ovan födelsedatum samt autofyll födelsedagsdatum. Känner av att det är ett giltigt personnr annars rensar den fältet och ger ett meddelande. Kontrollerar även nu också att inte personnumret finns registrerat i katalogen.
var validatePersonalNumber = function(input) { // Valideringsscript för svenskt personnummer // Kontrollera godkänd längd och form if (!input) return false; if (input.indexOf('-') == -1) { if (input.length === 10) { input = input.slice(0, 6) + "-" + input.slice(6); } else { input = input.slice(0, 8) + "-" + input.slice(8); } } if (!input.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})|(\d{4})(\d{2})(\d{2})\-(\d{4})$/)) return false; // Snygga till input input = input.replace('-', ''); if (input.length == 12) { input = input.substring(2); } // Deklarera variabler var d = new Date(((!!RegExp.$1) ? RegExp.$1 : RegExp.$5), (((!!RegExp.$2) ? RegExp.$2 : RegExp.$6)-1), ((!!RegExp.$3) ? RegExp.$3 : RegExp.$7)), sum = 0, numdigits = input.length, parity = numdigits % 2, i, digit; // Kontrollera godkänt datum if (Object.prototype.toString.call(d) !== "[object Date]" || isNaN(d.getTime())) return false; // Kontrollera luhn algoritmen for (i = 0; i < numdigits; i = i + 1) { digit = parseInt(input.charAt(i)) if (i % 2 == parity) digit *= 2; if (digit > 9) digit -= 9; sum += digit; } return (sum % 10) == 0; }; $('#patron_attr_3').attr('maxlength','10').attr('placeholder','10 siffror (ÅÅMMDDNNNN)').attr('style','width: 174px; height: 22px;'); // Ge fältet rätt attribut $('#patron_attr_3').parent().insertBefore('li label[for="dateofbirth"]'); // Flyttar personnrfältet till innan födelsedagsdatumfältet $('#patron_attr_3').change(function() { // Känner av ändring i personnrfältet och uppdaterar födelsedagsdatumfältet och OPAC användarnamnet if (validatePersonalNumber($(this).val())) { var d = new Date(); // Kollar det aktuella datumet var year = d.getFullYear(); // Sorterar ut vilket år det är year = year.toString().slice(0,2); // Gör om till sträng och ta bara med de två första siffrorna, dvs 19 eller 20 var patronyear = $(this).val().slice(0,2); // Kollar personnummrets två första siffror och sparar det till variable if (patronyear > year) { // Kontrollerar om personen är mer än hundra år, om inte gör detta följande $('input#dateofbirth').val('19' + $(this).val().slice(0,2) + '-' + $(this).val().slice(2,4) + '-' + $(this).val().slice(4,6)); } else { // Personen är äntingen över hundra år (inte så troligt) så då förutsätter vi att personen är född på 2000-talet $('input#dateofbirth').val('20' + $(this).val().slice(0,2) + '-' + $(this).val().slice(2,4) + '-' + $(this).val().slice(4,6)); }; $('input#userid').val($(this).val()); // Kopierar även personnr till OPAC Användarnamnet chkpnr = $(this).val(); $.get('https://' + window.location.hostname + '/cgi-bin/koha/circ/circulation.pl?findborrower=' + chkpnr).done(function(datan) { var contents = datan.slice(datan.indexOf('<title>')+7, datan.indexOf('</title>')); if (contents.indexOf('Låna ut') > -1 | contents.indexOf('Checking') > -1) { alert('Personnumret finns redan registrerat!'); $('#patron_attr_3').css('background','red').focus().select(); } else { $('#patron_attr_3').css('background','#d4efb7'); }; }); } else { $('textarea[id="patron_attr_3"]').val(null); // Rensa fältet alert("Personnummret är felaktigt, var god ändra."); // Varna för fel personnr setTimeout(function(){$('textarea[id="patron_attr_3"]').focus();}, 1); // Ställ markören i fältet igen }; });
Låntagare / Smsnummer
Lägger automatiskt in samma nummer som fylls i fältet Annan telefon(other phone) till SMSnummer.
$('input#mobile').change(function() { $('input#SMSnumber').val($(this).val()); });
Låntagare / Nummerfält
Tillåt endast siffror i telefonnummer och personnummer.
$("input#mobile , #patron_attr_3").keydown(function (e) { var isModifierkeyPressed = (e.metaKey || e.ctrlKey || e.shiftKey); var isCursorMoveOrDeleteAction = ([46,8,9,35,36,37,38,39,40].indexOf(e.keyCode) != -1); var isNumKeyPressed = (e.keyCode >= 48 && e.keyCode <= 58) || (e.keyCode >=96 && e.keyCode <= 105); var vKey = 86, cKey = 67,aKey = 65, xKey = 88; switch(true){ case isCursorMoveOrDeleteAction: case isModifierkeyPressed == false && isNumKeyPressed: case (e.metaKey || e.ctrlKey) && ([vKey,cKey,aKey,xKey].indexOf(e.keyCode) != -1): break; default: e.preventDefault(); } });
Exemplar / Skolbibliotek
Skapar knappen ”lägg till och duplicera för enklare registrering av flera exemplar av samma bok utan extra knapptryck, ställer sig i streckkodsfältet när en bok är färdig. Behöver endast dra streckkod på exemplaren efter det så sparas exemplaren automatiskt. Markering av senast inlagt exemplar i listan med grönt.
$('input[name="add_duplicate_submit"]').on('click', function(event) { localStorage.setItem('lastbarcode',$('#subfield952p input').val()); localStorage.setItem('addmulti','yes'); }); $('body#cat_additem').each(function() { if (localStorage.getItem('addmulti')) { $('#subfield952p input:eq(0)').focus().select(); $('#subfield952p input:eq(0)').css('background-color','#d4efb7'); $('#subfield952p input:eq(0)').attr('placeholder','Fortsätt dra nästa exemplar...'); $('#subfield952p input').keypress(function(event) { var keycode = event.keyCode || event.which; if(keycode == '13') { if ($(this).val()) { localStorage.setItem('lastbarcode',$(this).val()); $('input[name="add_duplicate_submit"]').trigger('click'); } } }); }; }); $('#itemst td').text(function () { var lastbarcode = localStorage.getItem('lastbarcode'); if ($(this).text() == lastbarcode) { $(this).closest('tr').children().css('background-color','#d4efb7'); localStorage.removeItem('lastbarcode'); } });
Startsidan
Gömmer redigeringsknapparna för nyheterna.
$("p.newsfooter a").hide(); $("p.newsfooter").each(function() { var text = $(this).html().replace(/\|/g, ' '); $(this).html(text); });
Katalog / Sökning
När sökning sker i fel fält, t.ex Katalogsökning i ”låna ut”. Trycker man enter(eller knappen) så görs automatiskt samma sökning i katalogen istället.
$('body#circ_circulation #doc3 #bd #yui-main .yui-b h4').each(function() { if ($(this).text().indexOf('Ingen låntagare hittad') >= 0) { $('<br /><h2>Sökte du på fel ställe kanske? Ingen fara!</h2> <br /><span>Prova sökknappen eller tryck ENTER igen.<br /><br /></span><button id="searchcat" class="btn btn-success btn-sm">Sök i katalogen</button>').insertAfter(this); }; }); $('#patronsearch').bind('submit',function(event) { if ($('#findborrower').val() == '') { event.preventDefault(); $('#searchcat').trigger('click'); } }); $('#searchcat').on('click', function(event){ var string = $('body#circ_circulation #doc3 #bd #yui-main .yui-b h4 span').text(); var location = window.location.hostname; localStorage.setItem('lastsearch', string.slice(1,-1)); window.location.assign("https://" + location + "/cgi-bin/koha/catalogue/search.pl?idx=kw&q=" + string); }); $('body#catalog_results #search-form').attr('value', localStorage.getItem('lastsearch')).select(); $('#main_intranet-main').ready(function () { localStorage.removeItem('lastsearch'); }); $('#cat-search-block').bind('submit',function(event) { var string = $('#search-form').attr('value'); localStorage.setItem('lastsearch', string); });
Katalog / Resultat
Klickbara hyllsignaturer.
$('td.itemcallnumber').each(function() { var itemcallnr = $(this).text().slice(1); var location = window.location.hostname; $(this).html('<a href="https://'+location+'/cgi-bin/koha/catalogue/search.pl?idx=callnum&q='+itemcallnr+'">'+itemcallnr+'</a>'); });
Katalog / Klassifikation
Gör klassifikationer i katalogposten klickbara.
$(".results_summary.oc").each(function() { var oc = $(this).text(); var newtext = oc.slice(0,oc.indexOf(':')+2); $(this).text(newtext); oc = oc.slice(oc.indexOf(':')+2); ocarr = oc.trim().split(' | '); for (i = 0 ; i < ocarr.length ; i++) { $(this).append('<a href="https://' + window.location.hostname + '/cgi-bin/koha/catalogue/search.pl?idx=kw&q=lcn%3A' + ocarr[i] + '">' + ocarr[i] + '</a>'); if (i < (ocarr.length -1)) { $(this).append(' | '); } }; });
Katalog / Informationslänkar
Gör ISBN i katalogposten klickbara för att komma till Adlibris, Btj, Legimus och LIBRIS, samt förhandsvisning av post hos Adlibris när man har muspekaren över Adlibris-länken.
$(".results_summary.isbn").each(function() { var isbn = $(this).text().slice(6,-1); isbn = isbn.replace('-', ''); if (isbn.indexOf(';') > -1) { isbn = isbn.replace(';', ' ').replace(/\s+/g,' ').trim(); isbnarr = isbn.split(' '); isbn = isbnarr[0].toString(); }; isbn = isbn.replace(/\D/g,''); $(this).append('<span class="isbncont"></span>') // Adlibris $('.isbncont' ,this).append('<span class="label"> Öppna i: </span><a href="https://www.adlibris.com/se/organisationer/product.aspx?isbn=' + isbn + '" target="_blank" class="pvframelink">Adlibris</a> | '); // Btj $('.isbncont' ,this).append('<a href="http://butik.btj.se/default.aspx?search=' + isbn + '" target="_blank">Btj</a> | '); // Legimus $('.isbncont' ,this).append('<a href="http://www.legimus.se/search?isbn=' + isbn + '" target="_blank">Legimus</a> | '); // Libris $('.isbncont' ,this).append('<a href="http://libris.kb.se/hitlist?d=libris&q=numm%3a' + isbn + '&f=ext&spell=true&hist=true&p=1" target="_blank">Libris</a>'); }); $('.pvframelink').on('mouseover', function() { isbn = $(this).attr('href'); isbn = isbn.slice(isbn.indexOf('=')+1); $('<div class="previewbox"><iframe class="pvframe" src="https://www.adlibris.com/se/organisationer/product.aspx?isbn=' + isbn + '#ctl00_content" width="720px" height="700px"></iframe></div>').insertAfter(this); }); $('.pvframelink').on('mouseout', function() { $('.previewbox').remove(); });
Låntagare / Sökning
Spara senaste låntagare som lånat eller återlämnat med hjälp av cookies, spara även de 15 senaste med timestamp när.
var midnight = new Date(); midnight.setHours(23,59,59,0); $('#checkedintable tr:nth-child(1) td.ci-patron a:first, #hold-request-form a:first').each(function(){ // Senaste låntagaren som återlämnat eller reserverat var checkedinpatron = $(this).attr('href'); var name = $(this).text(); if (name.indexOf(',') > -1) { var surname = name.slice(name.indexOf(',')+2, name.indexOf('(')); var lastname = name.slice(2, name.indexOf(',')); var patronname = surname.concat(lastname); document.cookie = "lastpatron=" + patronname + " [ Återlämnat ]; expires=" + midnight + "; path=/ " ; } else { var patronname = $(this).text(); document.cookie = "lastpatron=" + patronname + "; expires=" + midnight + "; path=/ " ; }; var patronlink = checkedinpatron.slice(checkedinpatron.indexOf('?')+1); document.cookie = "patronlink=" + patronlink + "; expires=" + midnight + "; path=/ " ; savePatron(); }); $('div.patroninfo h5').each(function(){ // Spara senaste låntagaren som laddats var name = $(this).text().replace(/\s+/g, " "); var borrowernumber = $('.patronborrowernumber').text(); borrowernumber = borrowernumber.slice(16); var patronlink = 'borrowernumber=' + borrowernumber; document.cookie = "lastpatron=" + name + "; expires=" + midnight + "; path=/ " ; document.cookie = "patronlink=" + patronlink + "; expires=" + midnight + "; path=/ " ; savePatron(); }); function savePatron() { // Spara ner låntagare i listan ifall hen inte finns med förut var d = new Date(); time = d.toTimeString(); time = time.split(' ')[0]; document.cookie = "timestamp=" + time + "; expires=" + midnight + "; path=/ " ; var name = $.cookie('lastpatron'); var link = $.cookie('patronlink'); var time = $.cookie('timestamp'); if ($.cookie('lastpatrons')) { var theString = $.cookie('lastpatrons'); var lastpatrons = theString.split(","); var theString2 = $.cookie('patronlinks'); var patronlinks = theString2.split(","); var theString3 = $.cookie('timestamps'); var timestamps = theString3.split(","); if (patronlinks.indexOf(link) > -1) { var indexnr = $.inArray(link, patronlinks); patronlinks.splice(indexnr, 1); lastpatrons.splice(indexnr, 1); timestamps.splice(indexnr, 1); }; } else { var lastpatrons = []; var patronlinks = []; var timestamps = []; }; lastpatrons.unshift(name); patronlinks.unshift(link); timestamps.unshift(time); if (lastpatrons.length > 15) { lastpatrons.pop(); patronlinks.pop(); timestamps.pop(); }; document.cookie = "lastpatrons=" + lastpatrons + "; expires=" + midnight + "; path=/ "; document.cookie = "patronlinks=" + patronlinks + "; expires=" + midnight + "; path=/ " ; document.cookie = "timestamps=" + timestamps + "; expires=" + midnight + "; path=/ " ; }; if ($.cookie('lastpatron')) { // Visa knappen ifall det finns en sparad låntagare var lpatron = $.cookie('lastpatron'); $('<span> </span><button id="lastpatron">Senaste låntagare</button>').insertAfter('input[id="autocsubmit"]'); $('<a href="#" id="clearlpatron"> Rensa</a>').insertAfter('#lastpatron'); }; $("<a href='#' id='patronspan'> "+lpatron+"</a>").insertBefore('#clearlpatron').hide(); $('#lastpatron').mouseover(function(event){ event.preventDefault(); $("#clearlpatron").hide(); $("#patronspan").show(); }); $('#lastpatron').mouseout(function(event){ event.preventDefault(); $("#clearlpatron").show(); $("#patronspan").hide(); }); $('#lastpatron').on('click', function(event){ // Öppna senaste låntagare if ($.cookie('lastpatron')) { event.preventDefault(); var patronlink = $.cookie('patronlink'); var location = window.location.hostname; window.location.assign("https://" + location + "/cgi-bin/koha/circ/circulation.pl?" + patronlink); }; }); $('#clearlpatron').on('click', function(event){ // Rensa senaste låntagare $.removeCookie('patronlink', { path: '/' }); $.removeCookie('lastpatron', { path: '/' }); $.removeCookie('lastpatrons', { path: '/' }); $.removeCookie('patronlinks', { path: '/' }); $.removeCookie('timestamp', { path: '/' }); $.removeCookie('timestamps', { path: '/' }); $('#lastpatron').hide(); $('#clearlpatron').hide(); $('#lastpatrons').hide(); }); // Knapp för att visa flera av senaste låntagare $('<span> </span><div class="btn-group" style="vertical-align:unset;"><button id="lastpatrons" class="dropdown-toggle" data-toggle="dropdown">Fler<span class="caret"></span></button><ul id="patron-dropdown" class="dropdown-menu"></ul></div>').insertAfter('#lastpatron'); $('#lastpatrons').on('click', function(event){ // Öppna listan med senaste låntagare var lp = $.cookie('lastpatrons'); var names = lp.split(","); var pl = $.cookie('patronlinks'); var links = pl.split(","); var ts = $.cookie('timestamps'); var times = ts.split(","); var list = $("#patron-dropdown"); var parent = list.parent(); var location = window.location.hostname; list.detach().empty().each(function(i){ for (var x = 0; x < names.length; x++){ $(this).append('<li><a href="https://' + location + '/cgi-bin/koha/circ/circulation.pl?' + links[x] + '"><span class="timestamps">' + times[x].slice(0,5) + ' </span>' + names[x] + '</a></li>'); if (x == names.length - 1){ $(this).appendTo(parent); } } }); });
Cirkulation / Reservation
Snabbaccess till senaste låntagare vid reservation.
if ($.cookie('lastpatron')) { var name = $.cookie('lastpatron'); var link = $('#holds_patronsearch').attr('action'); var location = window.location.hostname; var patronlink = $.cookie('patronlink'); $('<br /><br /><span>eller reservera för senaste låntagaren: </span><a href="https://' + location + '/cgi-bin/koha/reserve/' + link + '&' + patronlink +'" id="hold">' + name + '</a>').insertAfter('#holds_patronsearch input[type="submit"]'); $('<span> </span><div class="btn-group" style="vertical-align:unset;"><button id="lastpatrons_res" class="dropdown-toggle" data-toggle="dropdown">Fler<span class="caret"></span></button><ul id="patron-dropdown2" class="dropdown-menu"></ul></div>').insertAfter('#hold'); $('#lastpatrons_res').on('click', function(event){ // Öppna listan med senaste låntagare var reslp = $.cookie('lastpatrons'); var resnames = reslp.split(","); var respl = $.cookie('patronlinks'); var reslinks = respl.split(","); var rests = $.cookie('timestamps'); var restimes = rests.split(","); var reslist = $("#patron-dropdown2"); var resparent = reslist.parent(); var location = window.location.hostname; var reslink = $('#holds_patronsearch').attr('action'); reslist.detach().empty().each(function(i){ for (var x = 0; x < resnames.length; x++){ $(this).append('<li><a href="https://' + location + '/cgi-bin/koha/reserve/' + link + '&' + reslinks[x] +'" id="hold"><span class="timestamps">' + restimes[x].slice(0,5) + ' </span>' + resnames[x] + '</a></li>'); if (x == resnames.length - 1){ $(this).appendTo(resparent); } } }); }); };