Skillnad mellan versioner av "IntranetUserJS/mellansjo"
Rad 689: | Rad 689: | ||
}); | }); | ||
+ | }; | ||
+ | }); | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | |||
+ | == Exemplar / Skolbibliotek == | ||
+ | |||
+ | '''Vid redigering av exemplar så sparas exemplaret automatisk ifall man drar streckkoden, man behöver alltså inte klicka på knappen "Spara" vid redigering av exemplar.''' | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | $('#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'); | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | }); | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | |||
+ | == 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.''' | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | 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 | ||
}; | }; | ||
}); | }); | ||
</pre> | </pre> |
Versionen från 2 april 2019 kl. 10.03
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 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 }; });