Skip to content

IntranetUserJS

Anneli Österman edited this page Jul 19, 2023 · 24 revisions

Nämä rimpsut on viety Koha-Suomen verkkosivuille IntranetUserJS-kirjastoon.

Vahvasti suositeltavat

Näillä JS:llä lisätään joko jokin toiminto tai varmistetaan tallennettavan datan oikeellisuus/eheys. Nämä suositellaan hyvin vahvasti lisättäväksi.

/// ALKU  ///
/// Tällä muutetaan tässä mainituille asiakastyypeille salasanan generointi nelinumeroiseksi. Ilman tätä, asiakkaille tulee aakkosnumeerisia salasanoja ///

/* Generoi henkilöasiakkaalle PIN-koodi salasanaksi */
function generate_patron_password() {
    // generate a PIN
    var chars = '0123456789';
    var length = 4;
    var password = '';
    for (var i = 0; i < length; i++) {
        password += chars.charAt(Math.floor(Math.random() * chars.length));
    }
    return password;
}

$(document).ready(function () {
    if (window.location.href.indexOf("members/member-password.pl") > -1) {
        $("body").on('click', "#fillrandom", function (event) {
           event.stopImmediatePropagation();
             event.preventDefault();

            var password = '';
            var patron = $('.patroncategory').text();
             if ( (patron.indexOf("HENKILO") >= 0) || (patron.indexOf("LAPSI") >= 0) || (patron.indexOf("YHTEISO") >= 0) || (patron.indexOf("KOTIPALVEL") >= 0) || (patron.indexOf("KIRJASTO") >= 0) || (patron.indexOf("MUUKUINLAP") >= 0) ) {
                password = generate_patron_password();
                $("#newpassword").val(password);
                $("#newpassword").attr('type', 'text');
                $("#newpassword2").val(password);
                $("#newpassword2").attr('type', 'text');
                return;
            }
            else {
                var pattern_regex = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{3,}/;
                while (!pattern_regex.test(password)) {
                    password = generate_password();
                }
                $("#newpassword").val(password);
                $("#newpassword").attr('type', 'text');
                $("#newpassword2").val(password);
                $("#newpassword2").attr('type', 'text');
                return;
            }

        });
    }
});

/// LOPPU ///

/// ALKU ///

/* Alt + P = Print qslip eli Alt+P tulostaa tämän päivän lainat -kuitin. */
$(document).ready(function(){ 
    function printKeyCode(e) {
        var keycode;
            if (window.event) keycode = window.event.keyCode;
            else if (e) keycode = e.which;
            var event = e || window.event;
            if(keycode==80 && event.altKey){
                printx_window("qslip");
            }
    }
    document.onkeydown = printKeyCode;
});

/// LOPPU ///

/// ALKU ///

/* Piilota Uusi/Renew-vaihtoehto yläpalkista. Uusinnan pystyy tekemään tällä ilman kirjastokorttia, pelkällä nidenumerolla. Joissain kimpoissa tämä on kiellettyä. */
$(document).ready(function () {
  $( "li[aria-controls='renew_search']" ).hide();
});

/// LOPPU ///

/// ALKU ///

/* Laita raksi "Poista käsin poistettujen varausten maksut" -kohtaa palautuksessa. Tällä estetään noutamattoman varauksen maksun syntyminen, kun varaus noudettavissa oleva varaus poistetaan palautuksen kautta. Huom! Ei toimi, jos palautus tehdään muualla kuin Palautus-sivulla. */
$(document).ready(function () {
  $("#forgivemanualholdsexpire").attr('checked', true);
});

/// LOPPU ///

/// ALKU ///

/* Näillä rimpsuilla tehdään tiedonhakuun Indeksointi-työryhmän päättämät muutokset. Asetetaan otsikot eri kielillä aineistotyyppi-, hyllytarkenne- ja ikärajavälilehdille tiedonhaussa. Lisätään alasvetovalikoihin YKL, UDK, Päivittyvä julkaisu ja Kausijulkaisu */
$(document).ready(function() {

    if ( $('html').attr('lang') == 'fi-FI') {
      $("#advsearch-tab-mtype a").text("Aineistotyyppi"); /* MTYPE auktorisoituarvo tarkassa haussa */
      $("#advsearch-tab-subloc a").text("Hyllytarkenne"); /* SUBLOC auktorisoituarvo tarkassa haussa */
      $("#advsearch-tab-agelevel a").text("Ikärajat"); /* AGELEVEL auktorisoituarvo tarkassa haussa */
      $("#advsearch-tab-bib-level a").text("Emokohde/Osakohde"); /* bib-level auktorisoituarvo tarkassa haussa */
      $("#searchterms select").append(new Option('YKL-luokitus', 'other-classification')); /* Lisää uuden valinnan YKL-luokitus */
      $("#searchterms select").append(new Option('UDK-luokitus', 'udc-classification')); /* Lisää uuden valinnan UDK-luokitus */
      $("#subtype select option[value='mus:i'").parent().append(new Option('Päivittyvä julkaisu', 'bib-level:i')); /*Lisää lisärajoitukset valikkoon uuden arvon */
      $("#subtype select option[value='mus:i'").parent().append(new Option('Kausijulkaisu', 'bib-level:s')); /*Lisää lisärajoitukset valikkoon uuden arvon */
    }
    else if ( $('html').attr('lang') == 'sv-SE') {
      $("#advsearch-tab-mtype a").text("Materialtyp");
      $("#advsearch-tab-subloc a").text("Underplats");
      $("#advsearch-tab-agelevel a").text("Åldersgränser");
      $("#advsearch-tab-bib-level a").text("Huvudobjekt/Delobjekt");
      $("#searchterms select").append(new Option('YKL-klassification', 'other-classification'));
      $("#searchterms select").append(new Option('UDC-klassification', 'udc-classification'));
      $("#subtype select option[value='mus:i'").parent().append(new Option('Publikation som uppdateras', 'bib-level:i'));
      $("#subtype select option[value='mus:i'").parent().append(new Option('Seriell publikation', 'bib-level:s'));
    }
    else if ( $('html').attr('lang') == 'en') {
      $("#advsearch-tab-mtype a").text("Material type");
      $("#advsearch-tab-subloc a").text("Sub location"); 
      $("#advsearch-tab-agelevel a").text("Age levels");
      $("#advsearch-tab-bib-level a").text("Child/monographic record");
      $("#searchterms select").append(new Option('Other classification', 'other-classification'));
      $("#searchterms select").append(new Option('UDC classification', 'udc-classification'));
      $("#subtype select option[value='mus:i'").parent().append(new Option('Integrating resource', 'bib-level:i'));
      $("#subtype select option[value='mus:i'").parent().append(new Option('Serial', 'bib-level:s'));
    }

    $("#searchterms select option[value='location']").val('loc'); /* Muuttaa location-arvon loc-arvoksi "Hakusanat"-valikossa */
});

/// LOPPU ///

/// ALKU ///
/// Niteiden lisäys tarratulostusjonoon ///

$(document).ready(function() {
    $(".print_label").after('<li><a href="#" onclick="setPrintQueue($(this))">Tulostusjonoon</a></li>');
  $("#addnewitem").after('<input type="button" style="margin-left:3px;" value="Tulostusjonoon" onclick="setPrintQueue($(this))"/>');
});

function setPrintQueue(element) {
  let searchParams = new URLSearchParams(element.parent().parent().find(".print_label a").attr("href"));
  let itemnumber = element.parent().find('input[name="itemnumber"]').val();
  let number = itemnumber ? itemnumber : searchParams.get('number_list');
  $.ajax({
   url: "/api/v1/contrib/kohasuomi/labels/print/queue", 
   type: "POST",
   dataType: "json",
   contentType: "application/json; charset=utf-8",
   data: JSON.stringify({ itemnumber: number, printed: 0 }),
   success: function (result) {
       alert("Nide lisätty jonoon!");
    },
    error: function (err) {
    	alert("Lisäys epäonnistui!");
    }
 });
}

/* Niteiden lisätys tarratulostustyökaluun perustiedot-näytöltä */
$(document).ready(function() {
    $("#holdings .itemselection_action_modify, #otherholdings .itemselection_action_modify").after(' <a href="#" class="itemselection_action_print" onclick="addItemsToPrintQueue(event, $(this))"><i class="fa fa-print"></i> Lisää valitut niteet tulostusjonoon</a>');
});
function addItemsToPrintQueue(e, element) {
    e.preventDefault();
    var requests = [];
    $("input[name='itemnumber'][type='checkbox']:visible:checked", 'table.items_table').each(function() {
        var itemnumber = $(this).val();
        requests.push($.ajax({
            url: "/api/v1/contrib/kohasuomi/labels/print/queue",
            type: "POST",
            datatype: "json",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ itemnumber: itemnumber, printed: 0 }),
            error: function (err) {
                console.error( `Niteen nro. ${itemnumber} lisäys tulostusjonoon epäonnistui.` );
            }
        }));
    });
    window.onbeforeunload = function () {
        if ( requests.length ) {
            return "";
        }
    };
    $('.itemselection_action_print').replaceWith(`<a class="itemselection_action_print disabled" style="cursor: not-allowed;"><i class="fa fa-print"></i> Lisätään ${requests.length} nide${requests.length == 1 ? "" : "ttä"} tulostusjonoon...</a>`);
    $.when.apply($, requests).done(function () {
        alert( `${requests.length} nide${requests.length == 1 ? "" : "ttä"} lisätty tulostusjonoon.` );
    }).fail(function () {
        alert( "Niteiden lisäys tulostusjonoon keskeytyi. Tarkista tulostusjono." );
    }).always(function () {
        $('.itemselection_action_print').replaceWith('<a href="#" class="itemselection_action_print" onclick="addItemsToPrintQueue(event, $(this))"><i class="fa fa-print"></i> Lisää valitut niteet tulostusjonoon</a>');
        requests = [];
    });
}

/// LOPPU ///

/// ALKU ///
/// Lisätään asiakkaan lisäys/muokkausnäytölle hetun lisäysmahdollisuus. Rimpsu myös muodostaa syntymäaika-kenttään tiedon henkilötunnuksen perusteella. ///
$(document).ready(function() {
    $("#entryform #memberentry_identity ol").before('<ol><li><label>Lisää hetu:</label><input type="text" id="ssnvalue"></input><button onclick="addSSN(event)">Tallenna</button></li></ol><hr/>');
});
function addSSN(event) {
    event.preventDefault();
    $.ajax({
        url: "/api/v1/contrib/kohasuomi/ssn/add",
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({
            token: 'yS390RiiReRhd2qXBmEIkD',
            ssn: $("#ssnvalue").val()
        }),
        success: function(result) {
            alert(result.msg);
            var entry = $("#ssnvalue").val().trim();
            var dateofbirth = ((entry.substr(6, 1) == "-" ? "19": "20") + entry.substr(4, 2) + "-" + entry.substr(2, 2) + "-" + entry.substr(0, 2));
            var fp = document.querySelector("#dateofbirth")._flatpickr;
            fp.setDate(dateofbirth);
            $("#patron_attr_5").val(result.ssnkey); //Tämä id on katsottava järjestelmäkohtaisesti
        },
        error: function(err) {
            var message = JSON.parse(err.responseText).message;
            if ($.isNumeric(message)) {
                if (window.confirm('Asiakas on jo olemassa! Paina OK siirtyäksesi tietoihin.')) {
                    window.open('/cgi-bin/koha/members/moremember.pl?borrowernumber=' + message, '_blank');
                }
            } else {
                alert(message);
            }
        }
    });
}
/// LOPPU ///

/// ALKU ///

// Varaustunnuksen automaattinen generointi/anonymisointi - Adapted from Koha-suomi patch for KD-1452 (commit 1c71b272885d9c510630 from https://github.com/KohaSuomi/Koha/ branch master)
// Tämä generoi patron_attr_2-kenttään. Tarkista oikea attribuutti asiakkaan muokkaussivulta selaimen Tarkista-toiminnolla. Jos attribuutin arvo muuttuu, pitää se muuttaa jokaiseen kohtaan, jossa se mainitaan. //

$(document).ready(function(){
    if (window.location.pathname == '/cgi-bin/koha/members/memberentry.pl' && window.location.search.includes("?op=add&") || window.location.search.includes("?op=duplicate&")) {
      var unixepoch = Math.round( (new Date()).getTime() / 10 ).toString();
      var epochdashed = unixepoch.replace( /(....)/g, '$1-').replace(/-$/,'' );
      $('textarea#patron_attr_2').val(epochdashed);

      $("#patron_attr_2").focus(function() {
        unixepoch = Math.round( (new Date()).getTime() / 10 ).toString();
        epochdashed = unixepoch.replace( /(....)/g, '$1-').replace(/-$/,'' );
        $('textarea#patron_attr_2').val(epochdashed);
      });
    }

      if (window.location.pathname == '/cgi-bin/koha/members/memberentry.pl' && window.location.search.includes("?op=modify")) {
      $("#patron_attr_2").focus(function() {
        unixepoch = Math.round( (new Date()).getTime() / 10 ).toString();
        epochdashed = unixepoch.replace( /(....)/g, '$1-').replace(/-$/,'' );
        $('textarea#patron_attr_2').val(epochdashed);
      });
    }
});

/// LOPPU ///

/// ALKU ///

/* Laita niteiden eräpoistossa täppä kohtaan "Poista tietueet, jos kaikki niteet poistettu". Tällä varmistetaan, että tietokantaan ei jää niteettömiä tietueita. */
$(document).ready(function () {
  $("#del_records").attr('checked', true);
});

/// LOPPU ///

/// ALKU ///

/// Ylimääräisten välilyöntien poistot ///

/* Poista asiakkaan muokkausnäytön kentistä välilyönnit alusta, lopusta ja useammat peräkkäiset välilyönnit välistä*/
$(document).ready(function() {
  $('body#pat_memberentrygen.pat input').blur(function() {
     var tmp = $(this).val();
     tmp = tmp.replace(/^ +/, '');
     tmp = tmp.replace(/ +$/, '');
     tmp = tmp.replace(/  */g, ' ');     
     $(this).val(tmp);
  });
});

/* Poista asiakkaan muokkausnäytön kentistä välilyönnit alusta, lopusta ja useammat peräkkäiset välilyönnit välistä*/
$(document).ready(function() {
  $('body#pat_memberentrygen.pat textarea').blur(function() {
     var tmp = $(this).val();
     tmp = tmp.replace(/^ +/, '');
     tmp = tmp.replace(/ +$/, '');
     tmp = tmp.replace(/  */g, ' ');     
     $(this).val(tmp);
  });
});

/* Poista niteen muokkausnäytön kentistä välilyönnit alusta, lopusta ja useammat peräkkäiset välilyönnit välistä*/
$(document).ready(function() {
  $('body#cat_additem.cat input').blur(function() {
     var tmp = $(this).val();
     tmp = tmp.replace(/^ +/, '');
     tmp = tmp.replace(/ +$/, '');
     tmp = tmp.replace(/  */g, ' ');
     $(this).val(tmp);
  });
});

/* Poista kausijulkaisun vastaanottonäytön kentistä välilyönnit alusta, lopusta ja useammat peräkkäiset välilyönnit välistä*/
$(document).ready(function() {
  $('body#ser_serials-edit.ser input').blur(function() {
     var tmp = $(this).val();
     tmp = tmp.replace(/^ +/, '');
     tmp = tmp.replace(/ +$/, '');
     tmp = tmp.replace(/  */g, ' ');
     tmp = tmp.replace(/(^[1-2][0-9]{3}) *: */, '$1 : ');
     $(this).val(tmp);
  });
});

/* Poista hankinnassa uuden tilauksen niteen muokkausnäytön kentistä välilyönnit alusta, lopusta ja useammat peräkkäiset välilyönnit välistä */
/* Tämä ei toimi */
$(document).ready(function() {
  $('body#acq_neworderempty.acq').on("blur", "input", function() {
     var tmp = $(this).val();
     tmp = tmp.replace(/^ +/, '');
     tmp = tmp.replace(/ +$/, '');
     tmp = tmp.replace(/  */g, ' ');
     $(this).val(tmp);
  });
});

/* Poista hankinnassa uuden tilauksen niteen muokkausnäytön kentistä välilyönnit alusta, lopusta ja useammat peräkkäiset välilyönnit välistä */ 
/* Tämä ei toimi */
$(document).ready(function() {
  $('body#acq_neworderempty.acq').on("blur", "textarea", function() {
     var tmp = $(this).val();
     tmp = tmp.replace(/^ +/, '');
     tmp = tmp.replace(/ +$/, '');
     tmp = tmp.replace(/  */g, ' ');
     $(this).val(tmp);
  });
});

/// LOPPU ///

/// ALKU ///
/// Lisää tietueen perustiedot-näytölle valikkoriville loppuun Avaa Finnassa -nappula. Muista vaihtaa osoitteisiin oman kimpan tunnisteet Vaaran tunnisteiden sijaan. ///

$( document ).ready(function() {
if (window.location.pathname == '/cgi-bin/koha/catalogue/detail.pl') {
        /*var details_elem = document.getElementById("catalogue_detail_biblio");
        var span_elem = document.createElement("span");
        span_elem.className = "results_summary";
        var link_elem = document.createElement("a");
        link_elem.href = "https://vaara.finna.fi/Record/vaarakirjastot." + biblionumber;
        var link_text = document.createTextNode("Open in Finna");
        link_elem.appendChild(link_text);
        span_elem.appendChild(link_elem);
        details_elem.appendChild(span_elem);*/
  		var linktext = 'Avaa Finnassa';
        if( $( '#changelanguage .currentlanguage' ).text() == 'English' ) {
        	linktext = 'Open in Finna';
        } else if ( $( '#changelanguage .currentlanguage' ).text() == 'Svenska' ) {
        	linktext = 'Öppna i Finna';
        }
        var params = new URLSearchParams(window.location.search);
        var biblionumber = parseInt(params.get("biblionumber"));
  		$( '#catalog_detail #toolbar' ).append( '<div class="btn-group"> <a href="https://vaara.finna.fi/Record/vaarakirjastot.' + biblionumber + '" class="btn btn-default" target="_blank"><i class="fa fa-external-link"></i> ' + linktext + '</a></div>' );
}
});

/// LOPPU ///
/// ALKU  ///
/* Puhelinnumeron muodon tarkistus ja email/sms-viestitäpät*/
// Add additional validation to member add/edit form
$(document).ready(function () {
  if (window.location.href.indexOf("members/memberentry.pl") > -1) {
    $('#SMSnumber').attr('disabled', 'disabled');
    $('.sms_number_help').text("Arvo kopioituu Matkapuhelin-kentästä tallennettaessa.");
    
   // Replace forms "Save" button 
   // (otherwise form is sent regardless validation checks made here) 
   var language = $(".currentlanguage").text();
   var save_text; 
   if(language == "Suomi"){
     save_text = "Tallenna";
   }else if(language == "Svenska"){
     save_text = "Spara";
   }else {
     save_text = "Save";
   }

  $('#pat_memberentrygen #saverecord').replaceWith('<button class="btn btn-default" id="modified_saverecord"><i class="fa fa-save"></i> '+save_text+'</button>');

    var isvalid = 1;

    $('#phone').blur(function () {
      var error_mes = "";
      var phone = $('#phone').val();
      var phone_reg = /^[+]?([^-\s][0-9]+)+$/;

      if (phone && !phone_reg.test(phone)) {
        error_mes = error_mes + "\nPlease enter a valid phone number.\n";
        $('#phone').after('<label id="phone-error" class="error" for="phone">' + error_mes + '</label>');
        isvalid = 0;
      } else {
        isvalid = 1;
      }
    });

    $('#mobile').blur(function () {
      var error_mes = "";
      var mobile = $('#mobile').val();
      var mobile_reg = /^[+]?([^-\s][0-9]+)+$/;

      if (mobile && !mobile_reg.test(mobile)) {
        error_mes = error_mes + "\nPlease enter a valid mobile number.\n";
        $('#mobile').after('<label id="mobile-error" class="error" for="mobile">' + error_mes + '</label>');
        isvalid = 0;
      } else {
        isvalid = 1;
      }
    });

    $('#modified_saverecord').click(function (e) {
      var text = "";
      if (isvalid == 1) {
        //Vahvista viestitäppien poisto jos sähköposti/matkapuhelin puuttuu popupissa

        if (!$('#email').val()) {
          if ($('#email1').attr('checked') || $('#email2').attr('checked') || $('#email3').attr('checked') || $('#email4').attr('checked') || $('#email5').attr('checked') || $('#email6').attr('checked') || $('#email10').attr('checked')) {
            text = "Sähköpostiosoite puuttuu. Sähköposti-viestiasetukset poistetaan.\n";
            $('#email1').removeAttr('checked');
            $('#email1').attr('disabled', 'disabled');
            $('#email2').removeAttr('checked');
            $('#email2').attr('disabled', 'disabled');
            $('#email3').removeAttr('checked');
            $('#email3').attr('disabled', 'disabled');
            $('#email4').removeAttr('checked');
            $('#email4').attr('disabled', 'disabled');
            $('#email5').removeAttr('checked');
            $('#email5').attr('disabled', 'disabled');
            $('#email6').removeAttr('checked');
            $('#email6').attr('disabled', 'disabled');
            $('#email10').removeAttr('checked');
            $('#email10').attr('disabled', 'disabled');
          }
        }
        if (!$('#mobile').val()) {
          if ($('#sms1').attr('checked') || $('#sms4').attr('checked') || $('#sms10').attr('checked')) {
            text += "Matkapuhelinnumero puuttuu. Tekstiviesti-viestiasetukset poistetaan.";
            $('#sms1').removeAttr('checked');
            $('#sms1').attr('disabled', 'disabled');
            $('#sms4').removeAttr('checked');
            $('#sms4').attr('disabled', 'disabled');
            $('#sms10').removeAttr('checked');
            $('#sms10').attr('disabled', 'disabled');
          }
        }

        if (text.charAt(0)){
          alert(text);
        }
        
        $("#entryform").submit();
      }
    }
    );
  }
});
/// LOPPU  ///
/// ALKU  ///
/* Puhelinnumeron muodon tarkistus (suomalaiset numerot) ja email/sms-viestitäpät*/
// Add additional validation to member add/edit form
$(document).ready(function () {
  if (window.location.href.indexOf("members/memberentry.pl") > -1) {
    $('#SMSnumber').attr('disabled', 'disabled');
    $('.sms_number_help').text("Arvo kopioituu Matkapuhelin-kentästä tallennettaessa.");
    
   // Replace forms "Save" button 
   // (otherwise form is sent regardless validation checks made here) 
   var language = $(".currentlanguage").text();
   var save_text; 
   if(language == "Suomi"){
     save_text = "Tallenna";
   }else if(language == "Svenska"){
     save_text = "Spara";
   }else {
     save_text = "Save";
   }

  $('#pat_memberentrygen #saverecord').replaceWith('<button class="btn btn-default" id="modified_saverecord"><i class="fa fa-save"></i> '+save_text+'</button>');

    var isvalid = 1;

    $('#phone').blur(function () {
      var error_mes = "";
      var phone = $('#phone').val();
      var phone_reg = /^((90[0-9]{3})?0|\+358)(?!(100|20(0|2(0|[2-3])|9[8-9])|300|600|700|708|75(00[0-3]|(1|2)\d{2}|30[0-2]|32[0-2]|75[0-2]|98[0-2])))(4|50|10[1-9]|20(1|2(1|[4-9])|[3-9])|29|30[1-9]|71|73|75(00[3-9]|30[3-9]|32[3-9]|53[3-9]|83[3-9])|2|3|5|6|8|9|1[3-9])(\d?){4,19}\d$/;

      if (phone && !phone_reg.test(phone)) {
        error_mes = error_mes + "\nPlease enter a valid phone number.\n";
        $('#phone').after('<label id="phone-error" class="error" for="phone">' + error_mes + '</label>');
        isvalid = 0;
      } else {
        isvalid = 1;
      }
    });

    $('#mobile').blur(function () {
      var error_mes = "";
      var mobile = $('#mobile').val();
      var mobile_reg = /^((90[0-9]{3})?0|\+358)(?!(100|20(0|2(0|[2-3])|9[8-9])|300|600|700|708|75(00[0-3]|(1|2)\d{2}|30[0-2]|32[0-2]|75[0-2]|98[0-2])))(4|50|10[1-9]|20(1|2(1|[4-9])|[3-9])|29|30[1-9]|71|73|75(00[3-9]|30[3-9]|32[3-9]|53[3-9]|83[3-9])|2|3|5|6|8|9|1[3-9])(\d?){4,19}\d$/;

      if (mobile && !mobile_reg.test(mobile)) {
        error_mes = error_mes + "\nPlease enter a valid mobile number.\n";
        $('#mobile').after('<label id="mobile-error" class="error" for="mobile">' + error_mes + '</label>');
        isvalid = 0;
      } else {
        isvalid = 1;
      }
    });

    $('#SMSnumber').blur(function () {
      var error_mes = "";
      var SMSnumber = $('#SMSnumber').val();
      var SMSnumber_reg = /^((90[0-9]{3})?0|\+358)(?!(100|20(0|2(0|[2-3])|9[8-9])|300|600|700|708|75(00[0-3]|(1|2)\d{2}|30[0-2]|32[0-2]|75[0-2]|98[0-2])))(4|50|10[1-9]|20(1|2(1|[4-9])|[3-9])|29|30[1-9]|71|73|75(00[3-9]|30[3-9]|32[3-9]|53[3-9]|83[3-9])|2|3|5|6|8|9|1[3-9])(\d?){4,19}\d$/;

      if (SMSnumber && !SMSnumber_reg.test(SMSnumber)) {
        error_mes = error_mes + "\nPlease enter a valid SMS number.\n";
        $('#SMSnumber').after('<label id="SMSnumber-error" class="error" for="SMSnumber">' + error_mes + '</label>');
        isvalid = 0;
      } else {
        isvalid = 1;
      }
    });

    $('#modified_saverecord').click(function (e) {
      var text = "";
      if (isvalid == 1) {
        //Vahvista viestitäppien poisto jos sähköposti/matkapuhelin puuttuu popupissa

        if (!$('#email').val()) {
          if ($('#email1').attr('checked') || $('#email2').attr('checked') || $('#email3').attr('checked') || $('#email4').attr('checked') || $('#email5').attr('checked') || $('#email6').attr('checked') || $('#email10').attr('checked')) {
            text = "Sähköpostiosoite puuttuu. Sähköposti-viestiasetukset poistetaan.\n";
            $('#email1').removeAttr('checked');
            $('#email1').attr('disabled', 'disabled');
            $('#email2').removeAttr('checked');
            $('#email2').attr('disabled', 'disabled');
            $('#email3').removeAttr('checked');
            $('#email3').attr('disabled', 'disabled');
            $('#email4').removeAttr('checked');
            $('#email4').attr('disabled', 'disabled');
            $('#email5').removeAttr('checked');
            $('#email5').attr('disabled', 'disabled');
            $('#email6').removeAttr('checked');
            $('#email6').attr('disabled', 'disabled');
            $('#email10').removeAttr('checked');
            $('#email10').attr('disabled', 'disabled');
          }
        }
        if (!$('#mobile').val()) {
          if ($('#sms1').attr('checked') || $('#sms4').attr('checked') || $('#sms10').attr('checked')) {
            text += "Matkapuhelinnumero puuttuu. Tekstiviesti-viestiasetukset poistetaan.";
            $('#sms1').removeAttr('checked');
            $('#sms1').attr('disabled', 'disabled');
            $('#sms4').removeAttr('checked');
            $('#sms4').attr('disabled', 'disabled');
            $('#sms10').removeAttr('checked');
            $('#sms10').attr('disabled', 'disabled');
          }
        }

        if (text.charAt(0)){
          alert(text);
        }
        
        $("#entryform").submit();
      }
    }
    );
  }
});
//LOPPU

/// ALKU ///
//Asiakkaalle lähtevien ilmoitusten oletuskielivalinta suomeksi
$(document).ready(function () {
  if (window.location.href.indexOf("members/memberentry.pl") > -1) {
    var $notices_lang_select = document.querySelector('#lang');
    var selected = $notices_lang_select.value;
    if (selected == 'default') {
      $notices_lang_select.value = 'fi-FI';  
    }
  }
});
/// LOPPU ///

Päivitysloki

Aika Muutos
2.3.2023 klo 12.45 Finna-nappi tietueen perustiedot-näytölle valikkoriville
13.3.2023 klo 13.21 Indeksointityöryhmän päättämät lisäykset -kohta päivitetty Osakohde/Emokohde-rimpsulla.
22.3.2023 klo 9.40 Vaihdettu Niteiden lisäys tarratulostusjonoon -osio korjattuun versioon.
30.3.2023 klo 9.45 Vaihdettu Varaustunnuksen generointi -rimpsuun versio, joka generoi asiakasmääreeseen
21.4.2023 klo 13.40 Vaihdettu korjattu versio sotu-siilo/syntymäaika -rimpsusta. Liittyy tikettiin 149,
16.5.2023 klo 14.20 Puhelinnumeron muodon tarkistus ja sähköpostitäppien poisto, jos sähköpostiosoite puuttuu
19.5.2023 klo 14.40 Lisätty alimmaksi Asiakkaalle lähtevien ilmoitusten oletuskielivalinta suomeksi. Liittyy tikettiin 154.
26.5.2023 klo 11.40 Sotusiilo/syntymäaika-rimpsu vaihdettu, koska siihen oli syntynyt jonkinlainen copy/paste-vääristymä.

Vapaaehtoiset ja vain osalle kimpoista tarpeelliset

Nämä rimpsut ovat joko vapaaehtoisia tai niille on tarve vain osassa kimpoissa. Esim. Ceepos-kassa on käytössä vain osalla kimpoista, jolloin siihen liittyvää rimpsua ei kannata laittaa muille.

/// ALKU ///

/* Piilota Perheen lainat -välilehti */
$(document).ready(function() {
 $("#relatives-issues-tab").parent().hide(); });

/// LOPPU ///
/// ALKU ///
/// Siirretään asiakkaan lainaus- ja tiedot-sivuille odottavat varaukset valikon alle ///

$( document ).ready(function() {
    if ( window.location.href.indexOf("members/moremember.pl") > -1 || window.location.href.indexOf("circ/circulation.pl") > -1 ){
      var emo = $( '#holdswaiting' ).parent();
      $( '#holdswaiting' ).detach().appendTo( emo );
      $( '#holdswaiting > h4:nth-of-type(1)' ).attr("data-toggle","collapse");
      $( '#holdswaiting > h4:nth-of-type(1)' ).attr("data-target","#collapseOmat");
      $( '#holdswaiting > h4:nth-of-type(1)' ).addClass("collapsed");
      $( '#holdswaiting > h4:nth-of-type(1)' ).append(' <i class="fa fa-caret-down"></i>');
      $( '#holdswaiting > ul:nth-of-type(1)' ).attr("id","collapseOmat");
      $( '#holdswaiting > ul:nth-of-type(1)' ).addClass("collapse");
      $( '#holdswaiting > h4:nth-of-type(2)' ).attr("data-toggle","collapse");
      $( '#holdswaiting > h4:nth-of-type(2)' ).attr("data-target","#collapseMuut");
      $( '#holdswaiting > h4:nth-of-type(2)' ).addClass("collapsed");
      $( '#holdswaiting > h4:nth-of-type(2)' ).append(' <i class="fa fa-caret-down"></i>');
      $( '#holdswaiting > ul:nth-of-type(2)' ).attr("id","collapseMuut");
      $( '#holdswaiting > ul:nth-of-type(2)' ).addClass("collapse");
      $( '#holdswaiting > h4:nth-child(1)' ).click(function(){
        if ( $( '#holdswaiting > h4:nth-of-type(1) > i' ).hasClass('fa-caret-down') ){
          $( '#holdswaiting > h4:nth-of-type(1) > i' ).removeClass('fa-caret-down');
          $( '#holdswaiting > h4:nth-of-type(1) > i' ).addClass('fa-caret-up');
        }
        else if ( $( '#holdswaiting > h4:nth-of-type(1) > i' ).hasClass('fa-caret-up') ){
          $( '#holdswaiting > h4:nth-of-type(1) > i' ).removeClass('fa-caret-up');
          $( '#holdswaiting > h4:nth-of-type(1) > i' ).addClass('fa-caret-down');
        }
      });
      $( '#holdswaiting > h4:nth-of-type(2)' ).click(function(){
        if ( $( '#holdswaiting > h4:nth-of-type(2) > i' ).hasClass('fa-caret-down') ){
          $( '#holdswaiting > h4:nth-of-type(2) > i' ).removeClass('fa-caret-down');
          $( '#holdswaiting > h4:nth-of-type(2) > i' ).addClass('fa-caret-up');
        }
        else if ( $( '#holdswaiting > h4:nth-of-type(2) > i' ).hasClass('fa-caret-up') ){
          $( '#holdswaiting > h4:nth-of-type(2) > i' ).removeClass('fa-caret-up');
          $( '#holdswaiting > h4:nth-of-type(2) > i' ).addClass('fa-caret-down');
        }
      });
    }
});

/// LOPPU ///
/// ALKU ///

/* Huom! Tämän voinee kuitenkin korvata _RetainCatalogSearchTerms_-järjestelmäasetuksella. */
/* Hae tietokannasta -kentän tyhjennys haun jälkeen, jos hakutuloksena on yksi tietue (bugi #5354). Huom! Ei tyhjennä hakukenttää siis aina. */
$(document).ready(function() {
      localStorage.removeItem("searchbox_value");
});

/// LOPPU ///
/// ALKU ///

/// Ceepos-maksu -napin lisäys ///
/// Napin taustavärinä ja reunavärinä keltainen? #ffc32b ///

$(document).ready(function() {
  let ceeposBranches = ['JOE_JOE'];
  if (ceeposBranches.includes($("#logged-in-info-full .logged-in-branch-code").text())) {
    $("#payfine .action, #payindivfine .action").find("input").after('<input type="button" id="CeeposMaksu" class="btn btn-primary" style="margin-left:3px;"  value="Ceepos-maksu"  onclick="setCeeposPayment($(this))"/>');
   if(localStorage.getItem('ceeposOffice')){
     $('#payment_type').val(localStorage.getItem('ceeposOffice'));
   }
  }
  $('#paycollect').hide();
  $("#circmessages a[href*='/cgi-bin/koha/members/paycollect.pl'").hide();
  $("#patron_messages a[href*='/cgi-bin/koha/members/paycollect.pl'").hide();
});
function setCeeposPayment(element) {
  var ceeposOffice = $('#payment_type').find(":selected").val();
  localStorage.setItem('ceeposOffice', ceeposOffice);
  	let payments;
  	let borrowernumber;
    if($("#payindivfine").find("#pay_individual").val() == 1) {
      borrowernumber = $("#payindivfine").find("#borrowernumber").val();
       payments = [{'borrowernumber': $("#payindivfine").find("#borrowernumber").val(), 'accountlines_id': $("#payindivfine").find("#accountlines_id").val(), 'description': $("#payindivfine").find("#description").val(), 'amountoutstanding': $("#payindivfine").find("#amountoutstanding").val(), 'payment_type': $("#payindivfine").find("#debit_type_code").val(), 'office': ceeposOffice}];
} else {
  	borrowernumber = $("#payfine").find("#borrowernumber").val();
  	payments = [{'borrowernumber': $("#payfine").find("#borrowernumber").val(), 'accountlines': $("#payfine").find("#selected_accts").val(), 'amountoutstanding': $("#payfine").find("#collected").val(), 'office': ceeposOffice}];
}
    $.ajax({
     url: "/api/v1/contrib/kohasuomi/payments/ceepos", 
     type: "POST",
     dataType: "json",
     contentType: "application/json; charset=utf-8",
     data: JSON.stringify(payments),
     beforeSend: function() {
        $("#CeeposMaksu").attr("disabled", true);
        alert("Maksu lähetetty, käsittele kassassa!");
     },
     success: function (result) {
         location.href = '/cgi-bin/koha/members/boraccount.pl?borrowernumber='+borrowernumber;
      },
      error: function (xhr, status, error) {
          $("#CeeposMaksu").attr("disabled", false);
          alert(JSON.parse(xhr.responseText).error);
      }
   });
}

///LOPPU ///
/// ALKU ///

/* Piilota viestin tekijän nimi asiakkaan Tiedot-näytöllä */
$("#messages .circ-hlt a").remove();
$("#messages .circ-hlt").each(function( index ){
  var str = $(this).text().replace("(  )", "");
  $(this).text(str);
});

/// LOPPU ///
/// ALKU ///

/* Muuta Z39.50-hakuikkunan koko suuremmaksi. Ikkunan koko on turhan pieni hakutuloksille. */
//Cataloging > Z39.50/SRU pop-up
 //BEGIN Resize Z39.50 window
  if (document.location.href.indexOf('z3950_search.pl')>-1) window.resizeTo((screen.width * 0.9), (screen.height * 0.9)), window.moveTo(0, 0);
  $(window).on('load resize', function(){
   $('#cat_z3950_search .col-xs-6 .rows, #cat_z3950_search #z3950_search_targets').height($(this).height() * 0.75);
   $('#cat_z3950_search .col-xs-6 .rows').css('overflow-y', 'scroll');
  });
//END

/// LOPPU ///
/// ALKU ///

/* Tarkka-haku ja Sanahaku-oletustermit korvataan Nimeke, Tekijä, Asiasana */
$(document).ready(function() {
  var elems = $("body#catalog_advsearch select[name='idx']");
  elems.eq(0).val('ti');
  elems.eq(1).val('au');
  elems.eq(2).val('su');
});

/// LOPPU ///
/// ALKU ///
/* Lisää huollettava monivalintanappi. Asiakastyyppien tunnisteet pitää tarkistaa ja muuttaa tarvittaessa kimpassa käytettäviin. */
$(document).ready(function() {
  if ( !!document.getElementById("addchild") ){
    var editpatron_url = new URLSearchParams(document.getElementById("editpatron").href);
    var asiakasnumero = editpatron_url.get('borrowernumber');
    var kayttokieli = 'Suomi';

    var lapsiLinkki = "/cgi-bin/koha/members/memberentry.pl?op=add&categorycode=LAPSI&guarantor_id=" + asiakasnumero;
    var omatoimilapsiLinkki = "/cgi-bin/koha/members/memberentry.pl?op=add&categorycode=LAOMATOIMI&guarantor_id=" + asiakasnumero;
    var muuHuollettavaLinkki = "/cgi-bin/koha/members/memberentry.pl?op=add&categorycode=MUUHUOL&guarantor_id=" + asiakasnumero;
    var lisaaHuollettavaNappi = "<div class='btn-group'><button class='btn btn-default dropdown-toggle' data-toggle='dropdown'><i class='fa fa-plus'></i><span id='huollettavaKaannos'> Lisää huollettava.</span> <span class='caret'></span></button><ul class='dropdown-menu'><li><a href=" + lapsiLinkki + ">Lapsiasiakas, omatoimi kielletty</a></li><li><a href=" + omatoimilapsiLinkki + ">Lapsiasiakas, omatoimi sallittu</a></li><li><a href=" + muuHuollettavaLinkki + ">Huollettava, muu kuin lapsi</a></li></ul></div>";

    $( "#editpatron" ).after( lisaaHuollettavaNappi );
    $('#addchild').css('display','none');

    kayttokieli = document.getElementsByClassName('currentlanguage')[0].innerHTML;
    if (kayttokieli == 'Suomi') {
      $("#huollettavaKaannos").text(" Lisää huollettava");
    }
    else if (kayttokieli == 'Svenska') {
      $("#huollettavaKaannos").text(" Lägg till barn");
    }
    else if (kayttokieli == 'English') {
      $("#huollettavaKaannos").text(" Add child");
    }
  }    
});
/// LOPPU ///
/// ALKU ///
// Varaustunnus-asiakasmääreen siirto
$(document).ready(function () {
  if (window.location.href.indexOf("members/memberentry.pl") > -1) {
    var holdidlabel = $('label[for="' + "patron_attr_2" + '"]');
    var clearbutton = holdidlabel.next().next().next();
    clearbutton.replaceWith( '<button type="button" class="fa fa-fw fa-trash fa-lg" style="color:green; border:none;">' );
    holdidlabel.next().next().next().on('click', function(e){
        holdidlabel.next().val('');
    });
    var li = holdidlabel.parent();
    $( "#identity_lgd" ).next().append(li);
  }
});
/// LOPPU ///
/// ALKU ///
// Sotuavain-asiakasmääreen siirto
$(document).ready(function () {
  if (window.location.href.indexOf("members/memberentry.pl") > -1) {
    var sotuavainlabel = $('label[for="' + "patron_attr_6" + '"]');
    var clearbutton = sotuavainlabel.next().next().next();
    clearbutton.replaceWith( '<button type="button" class="fa fa-fw fa-trash fa-lg" style="color:green; border:none;">' );
    sotuavainlabel.next().next().next().on('click', function(e){
        sotuavainlabel.next().val('');
    });
    var li = sotuavainlabel.parent();
    var ssnfield = $( '#ssnvalue' );
    ssnfield.parent().append(li);
  }
});
/// LOPPU ///
/* Siirretään nidelistaus sivun loppuun niteen muokkaussivulla. */
$( document ).ready(function() {
    $( '#cat_additem #cataloguing_additem_itemlist' ).after( $( '#cat_additem #cataloguing_additem_itemlist #itemst_wrapper' ).parents( 'div' ).html() );
	$( '#cat_additem #cataloguing_additem_itemlist #itemst_wrapper' ).parent( 'div' ).hide();*/
	$( '#cat_additem #cataloguing_additem_itemlist' ).prepend( $( '#cat_additem #cataloguing_additem_itemlist>.row' ) );
});

Päivitysloki

Aika Muutos
20.4.2023 Lisätty sotu-avaimen ja varaustunnisteen siirtoon rimpsut.
10.5.2023 Vaihdettu Ceepos-maksu -rimpsu sellaiseksi, jossa nappi on keltainen.
31.5.2023 Lisätty nidelistauksen siirto sivun loppuun muokkausivulla