Skillnad mellan versioner av "Bibliotek Mellansjös IntranetUserJS"

Från Svenska kohanätverkets wiki
Hoppa till navigering Hoppa till sök
 
(69 mellanliggande sidversioner av 2 användare visas inte)
Rad 33: Rad 33:
 
[[Fil:Periodika.png]]
 
[[Fil:Periodika.png]]
 
<pre>
 
<pre>
// *************************************************************************************
+
 
  // - Periodika / Ta emot
+
    // *************************************************************************************
  //
+
    // - Periodika / Ta emot
  // Som standard endast hembibliotekets prenumerationer
+
    //
  // Lättare att se hembibliotekets prenumerationer om sökning på alla
+
    // Som standard endast hembibliotekets prenumerationer
  // ver 2.2
+
    // Lättare att se hembibliotekets prenumerationer om sökning på alla
  // 2020-06-03
+
    // ver 2.4
  // ( Kompatibel med 20.11 )
+
    // 2022-11-15
 +
    // ( Kompatibel med 23.05 )
  
  if ($('#subscription_search').length) {
+
    if ($('#subscription_search').length) {
  
    $('#subscription_search form').append('<label><input id="localSerials" type="checkbox" style="margin-left:10px;" checked> Sök endast egna prenumerationer</label>');
+
        $('.form-extra-content').append('<label><input id="localSerials" type="checkbox" style="margin-left:10px;" checked> Sök endast egna prenumerationer</label>');
    if (document.getElementById('localSerials').checked) {
 
      $('#subscription_search form').prepend('<input type="hidden" id="locSerCB" name="branch_filter" value="' + $('.logged-in-branch-code:first').text() + '">');
 
    };
 
    $('#localSerials').change(function() {
 
      if (document.getElementById('localSerials').checked) {
 
        $('#subscription_search form').prepend('<input type="hidden" id="locSerCB" name="branch_filter" value="' + $('.logged-in-branch-code:first').text() + '">');
 
      } else {
 
        $('#locSerCB').remove();
 
      };
 
    });
 
    if ($('#DataTables_Table_0').length) {
 
      var table = $('#DataTables_Table_0').DataTable();
 
      table.page.len(-1).draw();
 
  
      if ($('#branch').val().length < 1) {
+
        if (document.getElementById('localSerials').checked) {
        waitForEl('.dataTables_wrapper', function() {
+
            $('#subscription_search form').prepend('<input type="hidden" id="locSerCB" name="branch_filter" value="' + $('.logged-in-branch-code:first').text() + '">');
          $('.dataTables_wrapper td:nth-child(5)').each(function() {
+
        }
             if ($(this).text().indexOf($('.logged-in-branch-name:first').text()) > -1) {
+
        $('#localSerials').change(function () {
              $(this).closest('tr').children().css('background-color', '#d4efb7');
+
             if (document.getElementById('localSerials').checked) {
              $(this).closest('tr').children().css('padding', '30px 4px');
+
                $('#subscription_search form').prepend('<input type="hidden" id="locSerCB" name="branch_filter" value="' + $('.logged-in-branch-code:first').text() + '">');
             };
+
            } else {
          });
+
                $('#locSerCB').remove();
 +
             }
 
         });
 
         });
      };
+
 
     };
+
     }
  };
 
  
 
</pre>
 
</pre>
Rad 85: Rad 73:
 
   //
 
   //
 
   // Välj språk vid sökning
 
   // Välj språk vid sökning
   // ver 1.2 (uppdaterad med minoritetsspråken)
+
   // ver 1.3 (uppdaterad med minoritetsspråken och Ukrainska)
   // ( Kompatibel med 20.11 )
+
   // ( Kompatibel med 23.05 )
  
 
   if ($('#header_search').length || $('#catalog_advsearch').length) {
 
   if ($('#header_search').length || $('#catalog_advsearch').length) {
 
     if ($('#catalog_advsearch').length) {
 
     if ($('#catalog_advsearch').length) {
 
       $('#language-limit').remove();
 
       $('#language-limit').remove();
       $('<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:yid">Jiddisch</option><option value="ln,rtrn:hrv">Kroatiska</option><option value="ln,rtrn:chi">Kinesiska</option><option value="ln,rtrn:9mk">Meänkieli</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:rom">Romani</option><option value="ln,rtrn:rum">Rumänska</option><option value="ln,rtrn:rus">Ryska</option><option value="ln,rtrn:smi OR ln,rtrn:sme OR ln,rtrn:smn OR ln,rtrn:smj OR ln,rtrn:sms OR ln,rtrn:sma">Samiska</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>').appendTo('#language p');
+
       $('<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:yid">Jiddisch</option><option value="ln,rtrn:hrv">Kroatiska</option><option value="ln,rtrn:chi">Kinesiska</option><option value="ln,rtrn:9mk">Meänkieli</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:rom">Romani</option><option value="ln,rtrn:rum">Rumänska</option><option value="ln,rtrn:rus">Ryska</option><option value="ln,rtrn:smi OR ln,rtrn:sme OR ln,rtrn:smn OR ln,rtrn:smj OR ln,rtrn:sms OR ln,rtrn:sma">Samiska</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:ukr">Ukrainska</option><option value="ln,rtrn:urd">Urdu</option></select>').appendTo('#language p');
  
 
     } else {
 
     } else {
       $('<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:yid">Jiddisch</option><option value="ln,rtrn:hrv">Kroatiska</option><option value="ln,rtrn:chi">Kinesiska</option><option value="ln,rtrn:9mk">Meänkieli</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:rom">Romani</option><option value="ln,rtrn:rum">Rumänska</option><option value="ln,rtrn:rus">Ryska</option><option value="ln,rtrn:smi OR ln,rtrn:sme OR ln,rtrn:smn OR ln,rtrn:smj OR ln,rtrn:sms OR ln,rtrn:sma">Samiska</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');
+
       $('<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:yid">Jiddisch</option><option value="ln,rtrn:hrv">Kroatiska</option><option value="ln,rtrn:chi">Kinesiska</option><option value="ln,rtrn:9mk">Meänkieli</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:rom">Romani</option><option value="ln,rtrn:rum">Rumänska</option><option value="ln,rtrn:rus">Ryska</option><option value="ln,rtrn:smi OR ln,rtrn:sme OR ln,rtrn:smn OR ln,rtrn:smj OR ln,rtrn:sms OR ln,rtrn:sma">Samiska</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:ukr">Ukrainska</option><option value="ln,rtrn:urd">Urdu</option></select>').insertAfter('#header_search #search-form');
     };
+
     }
   };
+
   }
  
  
Rad 108: Rad 96:
  
 
<pre>
 
<pre>
// *************************************************************************************
+
  // *************************************************************************************
 
   // - Cirkulation / Återlämning
 
   // - Cirkulation / Återlämning
 
   //
 
   //
 
   // Meddelande om återlämnad Magasin-bok
 
   // Meddelande om återlämnad Magasin-bok
   // ver 1.3
+
   // ver 1.4
   // ( Kompatibel med 20.11 )
+
   // ( Kompatibel med 23.05 )
  
 
   if ($('#circ_returns').length) {
 
   if ($('#circ_returns').length) {
 
+
     if ($('#checkedintable tbody tr:first .ci-collection').text().includes('Magasin')) {
     if ($('#checkedintable tbody tr:first .ci-collection').text().indexOf('Magasin') > -1) {
+
       //console.log('Magasin!');
       console.log('Magasin!');
 
 
       $('main .row:first div:first').prepend('<div class="dialog message"><h3 class="problem" style="margin:25px;color:#990000">Detta exemplar tillhör Magasin</hr></div>');
 
       $('main .row:first div:first').prepend('<div class="dialog message"><h3 class="problem" style="margin:25px;color:#990000">Detta exemplar tillhör Magasin</hr></div>');
     };
+
     }
   };
+
   }
  
 
</pre>
 
</pre>
Rad 132: Rad 119:
  
 
<pre>
 
<pre>
// *************************************************************************************
+
    // *************************************************************************************
  // - Cirkulation
+
    // - Cirkulation
  //
+
    //
  // Låna om-knapp för varje utlånat exemplar
+
    // Låna om-knapp för varje utlånat exemplar
  // ver 1.2
+
    // ver 1.4
  // 2019-06-19
+
    // 2022-05-02
  // ( Kompatibel med 20.11 )
+
    // ( Kompatibel med 23.05 )
 +
 
 +
 
 +
    function renewButtons() {
 +
        $('.renew:visible').each(function () {
 +
            var itemId = $(this).val();
 +
            $(this).parent().parent().append('<button type="button" class="btn btn-default btn-xs renewlink" value="' + itemId + '">Låna om</button>');
 +
        });
  
  if ($('#circ_circulation, #pat_moremember').is('*')) {
+
        $('.renewlink').on('click', function (event) {
 +
            event.preventDefault();
 +
            var id = $(this).val();
 +
            $(".renew:visible").prop("checked", false);
 +
            $(this).siblings().find('.renew').prop('checked', true);
 +
            $('#RenewCheckinChecked').trigger('click');
 +
            $(".renew:visible").prop("checked", true);
 +
        });
  
    waitForEl('.renew', function() {
+
        $('.renewals-disabled:visible').each(function () {
      $('.renew:visible').each(function() {
+
            $(this).parent().append('<i class="fa fa-frown-o" style="float:right;font-size:x-large;color:#d0d0d0;"></i>');
        var itemId = $(this).attr('value');
+
        });
        $(this).parent().parent().append('<button type="button" class="btn btn-default btn-xs renewlink" value="' + itemId + '">Låna om</button>');
+
    }
      });
 
      $('.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);
 
      });
 
  
 +
    if ($('#circ_circulation, #pat_moremember').length) {
 +
        issueT = $('#issues-table');
 +
        issueT.on('draw.dt', function () {
 +
            renewButtons();
 +
        });
  
      $('.renewals-disabled:visible').each(function() {
+
     }
        $(this).parent().append('<i class="fa fa-frown-o" style="float:right;font-size:x-large;color:#d0d0d0;"></i>');
 
      });
 
 
 
     });
 
  };
 
 
 
  
</pre>
 
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
 
<pre>
 
// IntranetUserCSS
 
 
/* Lånaom-knapp */
 
.renewlink {
 
  font-size: smaller !important;
 
}
 
 
.renewals-disabled {
 
  color: #c00;
 
}
 
 
</pre>
 
</pre>
  
Rad 188: Rad 165:
  
 
<pre>
 
<pre>
// *************************************************************************************
+
    // *************************************************************************************
  // - Återlämning / reservationer
+
    // - Katalog / Detalj
  //
+
    //
  // Hämta mer information om reservationer på återlämningssidan och automatisk utskrift av kvitto vid ENTER-tryckning
+
    // Hämta mer information om reservationer på detaljsidan
  // (Skövde drabbas inte av detta med utskrift)
+
    // ver 2.3
  // ver 1.3
+
    // Hämtar information om reservationer via rest-API
  // Använder filen reserves_detail.sql som ska implementeras i rapportverktyget
+
    // 2023-09-12
  // ( Kompatibel med 20.11 )
+
    // ( Kompatibel med 23.05 )
  
  if ($('#circ_returns').length) {
+
    if ($('#catalog_detail').length) {
 +
        var bibnr = $('input[name="bib"]').val();
 +
        if ($('.number_box').length) {
 +
            $.get('/api/v1/holds/?biblio_id=' + bibnr + '&_per_page=300&_match=exact').done(function (data) {
 +
                var inTransit = 0;
 +
                var waiting = 0;
 +
                var suspended = 0;
 +
                for (i = 0; i < data.length; i++) {
 +
                    if (data[i].status == "T") {
 +
                        inTransit++;
 +
                    }
 +
                    if (data[i].status == "W") {
 +
                        waiting++;
 +
                    }
 +
                    if (data[i].suspended == true) {
 +
                        suspended++;
 +
                    }
 +
                }
 +
                var leftRes = data.length - inTransit - waiting;
  
    if ($('#hold-found1').length) {
+
                if (leftRes > 0) {
      var logbib = $('.logged-in-branch-name:first()').text();
+
                    $('.number_box').parent().append('<span class="resDetail">Antal i kö: ' + leftRes + '</span>');
      if (logbib.indexOf('Skövde') <= -1) {
+
                }
        $('#hold-found1').on('shown.bs.modal', function(e) {
+
                if (inTransit > 0) {
          console.log('Modal hittad!')
+
                    $('.number_box').parent().append('<span class="resDetail">Transport: ' + inTransit + '</span>');
          $('#hold-found1 .print').focus();
+
                }
        });
+
                if (waiting > 0) {
      }
+
                    $('.number_box').parent().append('<span class="resDetail">Aviserade: ' + waiting + '</span>');
 +
                }
 +
                if (suspended > 0) {
 +
                    $('.number_box').parent().append('<span class="resDetail">Pausade: ' + suspended + '</span>');
 +
                }
 +
            });
 +
        }
 
     }
 
     }
 +
</pre>
  
    if ($('#hold-found2').length) {
+
== Katalog / Shelving location ==
  
      var bibnr = $('.modal-body input[name="biblionumber"]').attr('value');
+
'''Lägg till en pil och ändra färg på shelving locations på detaljsidan.'''
      var reportID = '463'; /* <- Ange rapportnummer för korrekt SQL-rapport */
 
  
      $.get('https://' + window.location.hostname + '/cgi-bin/koha/svc/report?id=' + reportID + '&sql_params=' + bibnr, "json").done(function(data) {
+
[[Fil:Shelvinglocationpil.PNG]]
  
        function countResStat(type) {
+
<pre>
          val = 0;
+
  // *************************************************************************************
          for (i = 0; i < data.length; i++) {
+
  // - Katalog / Detalj
            if (data[i][2] === type) {
+
  //
              val = val + 1;
+
  // Shelvinglocations på detaljsidan
            }
+
  // ver 1
          };
+
  // ( Kompatibel med 23.05 )
          return val;
 
        };
 
  
        var res = data[data.length - 1][3];
+
  if ($('#bibliodetails').length) {
        var trans = countResStat('T');
+
    $('.shelvingloc').each(function() {
        var waiting = countResStat('W');
+
      if ($(this).text().length) {
        $('#hold-found2 .modal-body').append('<hr /><h4 style="margin-bottom:10px">Reservationsstatus:</h4>');
+
        var loc = $(this).text();
        if (res > 0) {
+
         $(this).html('<span class="pil"></span>' + loc);
          $('#hold-found2 .modal-body').append('<span class="resDetail resExtra">Antal i kö: ' + res + '</span>');
+
      };
        }
+
    });
        if (trans > 0) {
+
  };
          $('#hold-found2 .modal-body').append('<span class="resDetail resExtra">Transport: ' + trans + '</span>');
+
</pre>
         }
 
        if (waiting > 0) {
 
          $('#hold-found2 .modal-body').append('<span class="resDetail resExtra">Aviserade: ' + waiting + '</span>');
 
        }
 
        $('#hold-found2 .modal-body').append('<p><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=' + bibnr + '" target="_blank">Öppna reservationskö i nytt fönster</a></p>');
 
  
 +
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
 +
<pre>
 +
// IntranetUserCSS
  
        var logbib = $('.logged-in-branch-name:first()').text();
+
.shelvingloc {
        if (logbib.indexOf('Skövde') <= -1) {
+
  color: olive;
 +
}
  
          // Enter vid reservation
+
.pil { /* Pil framför Lokal placering under Hembibliotek */
          $('#hold-found2').on('shown.bs.modal', function(e) {
+
  font-style: normal; /* Normal font */
            console.log('Modal hittad!')
+
  color: #900; /* Färg (rödaktig) */
            $('#hold-found2 .print').focus();
+
  font-size: large; /* Större text */
          });
+
}
        }
+
</pre>
      });
+
 
    }
+
== Katalog / postsammanslagning ==
  
    if ($('#item-transfer-modal').length) {
+
'''Skapar en sammanslagningsknapp på resultatsidan för enklare hantering av dublettposter.'''
      var logbib = $('.logged-in-branch-name:first()').text();
 
      if (logbib.indexOf('Skövde') <= -1) {
 
        $('#item-transfer-modal').on('shown.bs.modal', function(e) {
 
          console.log('Modal hittad!')
 
          $('#item-transfer-modal .print').focus();
 
        });
 
      }
 
    }
 
    if ($('#wrong-transfer-modal').length) {
 
      var logbib = $('.logged-in-branch-name:first()').text();
 
      if (logbib.indexOf('Skövde') <= -1) {
 
        $('#wrong-transfer-modal').on('shown.bs.modal', function(e) {
 
          console.log('Modal hittad!')
 
          $('#wrong-transfer-modal .openWin').focus();
 
        });
 
      }
 
    }
 
  }
 
  
 +
[[Fil:Sammanslagning.PNG]]
  
</pre>
 
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
 
 
<pre>
 
<pre>
//IntranetUserCSS
+
    // *************************************************************************************
 +
    // - Katalog / Resultat
 +
    //
 +
    // Slå samman-knapp på resultatsidan
 +
    // ver 1.1
 +
    // 2023-09-12
 +
    // ( Kompatibel med 23.05 )
  
.resDetail { /* Detaljsidan: Reservationsdetaljer avstånd */
+
    if ($('#catalog_results').length) {
  padding: 10px;
+
 
  color: #900;
+
        $('#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>');
}
 
  
.resExtra {
+
        $('#mergeposts').on('click', function () {
  padding: 20px !important;
+
            var selIDs = [];
  font-size: large;
+
            var link = '/cgi-bin/koha/cataloguing/merge.pl?';
}
 
</pre>
 
  
== Katalog / Shelving location ==
+
            $('.selection').each(function () {
 +
                if ($(this).is(':checked')) {
 +
                    selIDs.push($(this).val());
 +
                }
 +
            });
  
'''Lägg till en pil och ändra färg på shelving locations på detaljsidan.'''
+
            for (i = 0; i < selIDs.length; i++) {
 +
                link = link + 'biblionumber=' + selIDs[i] + '&';
 +
            }
  
[[Fil:Shelvinglocationpil.PNG]]
+
            link = link.substring(0, link.length - 1);
  
<pre>
+
            if (selIDs.length > 1) {
  // *************************************************************************************
+
                window.open(link);
  // - Katalog / Detalj
+
            } else {
  //
+
                alert('Välj vilka poster du vill slå samman först...');
  // Shelvinglocations på detaljsidan
+
            }
  // ver 1
+
        });
  // ( Kompatibel med 20.11 )
+
    }
 +
</pre>
 +
 
 +
== Katalog / Knappar ==
 +
 
 +
'''Skapar knappar för Kopiera streckkod, Återlämna exemplar och Radera exemplar bredvid streckkoden i katalogen.'''
  
  if ($('#bibliodetails').length) {
+
[[Fil:Knapparstreckkod.PNG]]
    $('.shelvingloc').each(function() {
 
      if ($(this).text().length) {
 
        var loc = $(this).text();
 
        $(this).html('<span class="pil">↳ </span>' + loc);
 
      };
 
    });
 
  };
 
</pre>
 
  
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
 
 
<pre>
 
<pre>
// IntranetUserCSS
+
    // *************************************************************************************
 +
    // - Cirkulation
 +
    //
 +
    // Knappar Kopiera streckkod och Återlämna bredvid streckkod på utlåningssidan
 +
    // ver 1.6
 +
    // 2023-09-12
 +
    // ( Kompatibel med 23.05 )
  
.shelvingloc {
 
  color: olive;
 
}
 
  
.pil { /* Pil framför Lokal placering under Hembibliotek */
+
    if ($('#circ_circulation').length || $('#pat_moremember').length) {
  font-style: normal; /* Normal font */
+
        var firstload = true;
  color: #900; /* Färg (rödaktig) */
+
        $('#issues-table'); //.dataTable();
  font-size: large; /* Större text */
+
        $('#issues-table').on('draw.dt', function () {
}
+
            if (firstload) {
</pre>
+
                $('#issues-table tbody tr td:nth-child(2)').each(function () {
 +
                    $(this).append('</br><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a>');
 +
                });
  
== Katalog / postsammanslagning ==
+
                $('#holds-table tbody tr td:nth-child(4)').each(function () {
 +
                    $(this).append('</br><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a>');
 +
                });
  
'''Skapar en sammanslagningsknapp på resultatsidan för enklare hantering av dublettposter.'''
+
                // Kopiera
  
[[Fil:Sammanslagning.PNG]]
+
                $('.bcopy').on('click', function (event) {
 +
                    for (i = 1; i < 3; i++) {
 +
                        event.preventDefault();
 +
 
 +
                        $('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);
  
<pre>
+
                        document.execCommand('copy');
// *************************************************************************************
 
  // - Katalog / Resultat
 
  //
 
  // Slå samman-knapp på resultatsidan
 
  // ver 1
 
  // ( Kompatibel med 20.11 )
 
  
  if ($('#catalog_results').length) {
+
                        window.getSelection().removeAllRanges();
 +
                    }
 +
                });
  
    $('#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>');
+
                // Återlämna
  
    $('#mergeposts').on('click', function() {
+
                $('.breturn').on('click', function (event) {
 +
                    event.preventDefault();
 +
                    var bc = $(this).siblings('a:first').text();
  
      var selIDs = [];
+
                    if (confirm("Är du säker på att du vill återlämna detta exemplaret? \n\r\n\r" + bc)) {
      var link = 'https://' + window.location.hostname + '/cgi-bin/koha/cataloguing/merge.pl?';
+
                        sessionStorage.setItem('lastbarcode', bc);
 +
                        window.location.href = '/cgi-bin/koha/circ/returns.pl?barcode=' + bc;
 +
                    }
  
      $('.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);
+
    // *************************************************************************************
 +
    // - Katalog / Detaljer
 +
    //
 +
    // Knappar för Kopiera, Återlämna och Radera bredvid streckkod på detaljssidan
 +
    // ver 2.3 (2023-12-20)
 +
    // ( Kompatibel med 23.05 )
  
      if (selIDs.length > 1) {
+
    if ($('#catalog_detail').length) {
        window.open(link);
 
      } else {
 
        alert('Välj vilka poster du vill slå samman först...');
 
      };
 
    });
 
  };
 
  
</pre>
+
        var cellnr = $('#holdings_barcode').index() + 1;
  
== Katalog / Knappar ==
+
        $('#holdings_table tbody tr td:nth-child(' + cellnr + '), #otherholdings_table tbody tr td:nth-child(' + cellnr + ')').each(function () {
 +
            $(this).append('<br /><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i></a><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a><a class="btn btn-default btn-xs btrash" data-toggle="tooltip" title="Radera"><i class="fa fa-trash"></i></a>');
 +
        });
  
'''Skapar knappar för Kopiera streckkod, Återlämna exemplar och Radera exemplar bredvid streckkoden i katalogen.'''
+
        // Kopiera
  
[[Fil:Knapparstreckkod.PNG]]
+
        $('.bcopy').on('click', function (event) {
 +
            for (i = 1; i < 3; i++) {
 +
                event.preventDefault();
  
<pre>
+
                $('td a').removeClass('bcSel');
  // *************************************************************************************
+
                $(this).siblings('a:first').addClass('bcSel');
  // - Cirkulation
 
  //
 
  // Knappar Kopiera streckkod och Återlämna bredvid streckkod på utlåningssidan
 
  // ver 1.3
 
  // ( Kompatibel med 20.11 )
 
  
  if ($('#circ_circulation').length | $('#pat_moremember').length) {
+
                var bcLink = document.querySelector('.bcSel');
 +
                var range = document.createRange();
 +
                range.selectNode(bcLink);
 +
                window.getSelection().addRange(range);
 +
                document.execCommand('copy');
 +
                window.getSelection().removeAllRanges();
 +
            }
 +
        });
  
    waitForEl('#issues-table tbody tr td:nth-child(2)', function() {
+
        // Återlämna
  
      $('#issues-table tbody tr td:nth-child(2)').each(function() {
+
        $('.breturn').on('click', function (event) {
        $(this).append('</br><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a>');
+
            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)) {
 +
                sessionStorage.setItem('lastbarcode', bc);
 +
                window.location.href = '/cgi-bin/koha/circ/returns.pl?barcode=' + bc;
 +
            }
 +
        });
  
      $('#holds-table tbody tr td:nth-child(4)').each(function() {
+
         // Radera
         $(this).append('</br><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a>');
 
      });
 
  
  // Kopiera
+
        $('.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 = $('input[name="bib"]').val();
 +
            var link = '/cgi-bin/koha/tools/batchMod.pl?op=show&del=1&itemnumber=' + itemnr + '&biblionumber=' + bibnr + '&src=CATALOGUING';
 +
            if (confirm("Är du säker på att du vill radera detta exemplaret? \n\r\n\r" + bc)) {
 +
                window.location.href = link;
 +
            }
 +
        });
 +
    }
  
      $('.bcopy').on('click', function(event) {
 
        for (i = 1;i < 3;i++) {
 
          event.preventDefault();
 
  
          $('td a').removeClass('bcSel');
+
</pre>
          $(this).siblings('a:first').addClass('bcSel');
 
  
          var bcLink = document.querySelector('.bcSel');
+
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
          var range = document.createRange();
+
<pre>
          range.selectNode(bcLink);
 
          window.getSelection().addRange(range);
 
  
          document.execCommand('copy');
+
/* Knappar för kopiera och återlämna  */
 +
.bcopy, .breturn, .btrash {
 +
  margin: 3px 5px 0 0;
 +
  background: #ffc32b none;
 +
  border: 1px solid #ffc32b;
 +
}
  
          window.getSelection().removeAllRanges();
+
.bcopy:hover, .breturn:hover, .btrash:hover {
        };
+
  background:#ffd15e none;
 +
  border: 1px solid #ffd15e;
 +
}
  
      });
+
.bcSel {
 +
  background-color: #ffc32b;
 +
  border-radius: 7px;
 +
  padding:0 5px;
 +
}
 +
/* */
  
  // Återlämna
 
  
      $('.breturn').on('click', function(event) {
+
</pre>
        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)){
+
== Cirkulation / Knappar ==
          sessionStorage.setItem('lastbarcode', bc);
 
          window.location.href = 'https://' + window.location.hostname + '/cgi-bin/koha/circ/returns.pl?barcode=' + bc;
 
        };
 
  
      });
+
'''Skapar knappar för Kopiera streckkod Återlämna och Radera bredvid streckkod på utlåningssidan.'''
    });
 
  };
 
  
 +
[[Fil:knapparutlaning.PNG]]
  
</pre>
+
<pre>
 +
    // *************************************************************************************
 +
    // - Katalog / Detaljer
 +
    //
 +
    // Knappar för Kopiera, Återlämna och Radera bredvid streckkod på detaljssidan
 +
    // ver 2.3 (2023-12-20)
 +
    // ( Kompatibel med 23.05 )
  
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
+
    if ($('#catalog_detail').length) {
<pre>
 
// IntranetUserCSS
 
  
.bcSel {
+
        var cellnr = $('#holdings_barcode').index() + 1;
  background-color: gold;
 
}
 
  
.bcopy, .breturn, .btrash {
+
        $('#holdings_table tbody tr td:nth-child(' + cellnr + '), #otherholdings_table tbody tr td:nth-child(' + cellnr + ')').each(function () {
  min-width: 22px;
+
            $(this).append('<br /><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i></a><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a><a class="btn btn-default btn-xs btrash" data-toggle="tooltip" title="Radera"><i class="fa fa-trash"></i></a>');
  margin: 5px 7px 2px 0;
+
        });
}
 
</pre>
 
  
== Cirkulation / Knappar ==
+
        // Kopiera
  
'''Skapar knappar för Kopiera streckkod Återlämna och Radera bredvid streckkod på utlåningssidan.'''
+
        $('.bcopy').on('click', function (event) {
 +
            for (i = 1; i < 3; i++) {
 +
                event.preventDefault();
  
[[Fil:knapparutlaning.PNG]]
+
                $('td a').removeClass('bcSel');
 +
                $(this).siblings('a:first').addClass('bcSel');
  
<pre>
+
                var bcLink = document.querySelector('.bcSel');
// *************************************************************************************
+
                var range = document.createRange();
  // - Katalog / Detaljer
+
                range.selectNode(bcLink);
  //
+
                window.getSelection().addRange(range);
  // Knappar för Kopiera, Återlämna och Radera bredvid streckkod på detaljssidan
+
                document.execCommand('copy');
  // ver 2.0 (2021-06-07)
+
                window.getSelection().removeAllRanges();
  // ( Kompatibel med 20.11 )
+
            }
 +
        });
  
  if ($('#catalog_detail').length) {
+
        // Återlämna
  
    var cellnr = $('#holdings_barcode').index() + 1;
+
        $('.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)) {
 +
                sessionStorage.setItem('lastbarcode', bc);
 +
                window.location.href = '/cgi-bin/koha/circ/returns.pl?barcode=' + bc;
 +
            }
 +
        });
  
    if ($('.dataTables_empty').length < 1) {
+
        // Radera
      $('#holdings_table tbody tr td:nth-child(' + cellnr + '), #otherholdings_table tbody tr td:nth-child(' + cellnr + ')').each(function() {
 
  
         $(this).append('<br /><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i></a><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a><a class="btn btn-default btn-xs btrash" data-toggle="tooltip" title="Radera"><i class="fa fa-trash"></i></a>');
+
         $('.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 = $('input[name="bib"]').val();
 +
            var link = '/cgi-bin/koha/tools/batchMod.pl?op=show&del=1&itemnumber=' + itemnr + '&biblionumber=' + bibnr + '&src=CATALOGUING';
 +
            if (confirm("Är du säker på att du vill radera detta exemplaret? \n\r\n\r" + bc)) {
 +
                window.location.href = link;
 +
            }
 +
        });
 +
    }
 +
</pre>
  
      });
+
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
    };
+
<pre>
 +
/* Knappar för kopiera och återlämna  */
 +
.bcopy, .breturn, .btrash {
 +
  margin: 3px 5px 0 0;
 +
  background: #ffc32b none;
 +
  border: 1px solid #ffc32b;
 +
}
  
    // Kopiera
+
.bcopy:hover, .breturn:hover, .btrash:hover {
 +
  background:#ffd15e none;
 +
  border: 1px solid #ffd15e;
 +
}
  
    $('.bcopy').on('click', function(event) {
+
.bcSel {
      for (i = 1; i < 3; i++) {
+
  background-color: #ffc32b;
        event.preventDefault();
+
  border-radius: 7px;
 +
  padding:0 5px;
 +
}
 +
/* */
 +
</pre>
  
        $('td a').removeClass('bcSel');
+
== Katalog / Barnmedia ==
        $(this).siblings('a:first').addClass('bcSel');
 
  
        var bcLink = document.querySelector('.bcSel');
+
'''Ä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.'''
        var range = document.createRange();
 
        range.selectNode(bcLink);
 
        window.getSelection().addRange(range);
 
  
        document.execCommand('copy');
+
<pre>
  
        window.getSelection().removeAllRanges();
+
  // *************************************************************************************
      };
+
  // - Katalog / Exemplar
 +
  //
 +
  // Ä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.
 +
  // ver 1.3
 +
  // 2022-05-18
 +
  // ( Kompatibel med 23.05 )
  
 +
  if ($('#cat_additem').length) {
 +
    var oldVal = $('select[id^="tag_952_subfield_y"]').val();
 +
    $('#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"]').val('BARNBOK').trigger('change');
 +
      } else {
 +
        $('select[id^="tag_952_subfield_y"]').val(oldVal).trigger('change');
 +
      }
 
     });
 
     });
 +
  }
  
    // Återlämna
 
  
    $('.breturn').on('click', function(event) {
+
</pre>
      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)) {
 
        sessionStorage.setItem('lastbarcode', bc);
 
        window.location.href = 'https://' + window.location.hostname + '/cgi-bin/koha/circ/returns.pl?barcode=' + bc;
 
      };
 
    });
 
  
    // Radera
+
== Katalog / Exemplar ==
  
    $('.btrash').on('click', function(event) {
+
'''Döljer onödiga fält vid exemplarredigering/registrering.'''
      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 = $('#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)) {
+
[[Fil:Doldafalt.PNG]]
        window.location.href = link;
 
      };
 
    });
 
  };
 
</pre>
 
  
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
 
 
<pre>
 
<pre>
// IntranetUserCSS
 
  
.bcSel {
+
  // *************************************************************************************
   background-color: gold;
+
  // - Periodika / Exemplar
}
+
  //
 +
  // Döljer onödiga fält vid exemplarredigering/registrering
 +
  // ver 1.1
 +
   // 2022-05-02
 +
  // ( Kompatibel med 23.05 )
  
.bcopy, .breturn, .btrash {
+
  if ($('#ser_serials-edit').length) {
  min-width: 22px;
 
  margin: 5px 7px 2px 0;
 
}
 
</pre>
 
  
== Katalog / Visning ==
+
    var hiddenArr = ['0','1','2','4','5','6','e','f','g','j','t','u','w'];
  
'''Visa antal exemplar på flikarna för både egna och andra bibliotek.'''
+
    $('.subfield_line label').each(function() {
 
+
  for (i = 0; i < hiddenArr.length; i++) {
[[Fil:Flikexemplar.PNG]]
+
      if ($(this).text().charAt(0) == hiddenArr[i]) {
 
+
          $(this).closest('li').hide();
<pre>
+
        }
 
+
      }
$('#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>');
 
 
 
});
 
  
  
 
</pre>
 
</pre>
  
 +
== Låntagare / Registrering ==
  
== Katalog / Barnmedia ==
+
'''Tvingar stor bokstav i början på alla namn och adresser på låntagaranmälan och redigering.'''
 
 
'''Ä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.'''
 
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
// *************************************************************************************
   // - Katalog / Exemplar
+
   // - Låntagare / Registrering
 
   //
 
   //
   // Ändrar automatiskt till itemtype "BARNBOK" om man skriver in Hcf, Hcg eller något med litet u
+
   // Stor bokstav i början på alla namn och adresser på låntagaranmälan och redigering
  // i Full call number vid exemplarinläggning eller redigering.
+
   // ver 1.1
   // ver 1.2
+
   // ( Kompatibel med 23.05 )
   // ( Kompatibel med 20.11 )
 
  
   $('#subfield952o input:first').change(function() {
+
   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);
 +
    });
  
     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) {
+
     return this;
      $('select[id^="tag_952_subfield_y"]').val('BARNBOK');
+
   }
      $('select[id^="tag_952_subfield_y"]').trigger('change');
 
    };
 
   });
 
  
</pre>
 
  
== Katalog / Exemplar ==
+
  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);
 +
    });
  
'''Döljer onödiga fält vid exemplarredigering/registrering.'''
+
    return this;
 +
  }
  
[[Fil:Doldafalt.PNG]]
 
  
<pre>
+
  $('#surname, #firstname, #city, #country, #B_city, #B_country').addClass('capitalizer');
 +
  $('#address, #address2, #B_address, #B_address2').addClass('capitalizerfw');
  
// *************************************************************************************
 
  // - Periodika / Exemplar
 
  //
 
  // Döljer onödiga fält vid exemplarredigering/registrering
 
  // ver 1
 
  // 2019-04-03
 
  // ( Kompatibel med 20.11 )
 
  
   if ($('#ser_serials-edit').length) {
+
   $('.capitalizer').on('input', function() {
 +
    $(this).capitalize();
 +
  });
  
    var hiddenArr = ['0', '1', '2', '3', '4', '5', '6', 'e', 'f', 'g', 'j', 't', 'u', 'w'];
+
  $('.capitalizerfw').on('input', function() {
 
+
     $(this).capitalizefw();
     for (i = 0; i < hiddenArr.length; i++) {
+
  });
  
      $('.subfield_line label').each(function() {
 
        if ($(this).text().charAt(0) == hiddenArr[i]) {
 
          $(this).closest('li').hide();
 
        };
 
      });
 
    };
 
  };
 
  
  
 
</pre>
 
</pre>
  
== Låntagare / Registrering ==
+
'''Endast småbokstäver i e-postfält.'''
 
 
'''Tvingar stor bokstav i början på alla namn och adresser på låntagaranmälan och redigering.'''
 
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
  // *************************************************************************************
   // - Låntagare / Registrering
+
   // Endast småbokstäver i e-postfält
  //
 
  // Stor bokstav i början på alla namn och adresser på låntagaranmälan och redigering
 
 
   // ver 1.1
 
   // ver 1.1
   // ( Kompatibel med 20.11 )
+
   // ( Kompatibel med 23.05 )
  
   jQuery.fn.capitalize = function() {
+
   jQuery.fn.decapitalize = function() {
     $(this[0]).keyup(function(event) {
+
     $(this).keyup(function(event) {
 
       var box = event.target;
 
       var box = event.target;
 
       var txt = $(this).val();
 
       var txt = $(this).val();
Rad 644: Rad 671:
 
       var stringEnd = box.selectionEnd;
 
       var stringEnd = box.selectionEnd;
 
       $(this).val(txt.replace(/^(.)|(\s|\-)(.)/g, function($word) {
 
       $(this).val(txt.replace(/^(.)|(\s|\-)(.)/g, function($word) {
         return $word.toUpperCase();
+
         return $word;
 
       }));
 
       }));
       box.setSelectionRange(stringStart, stringEnd);
+
      $(this).val(txt.toLowerCase());
 +
       box.setSelectionRange(stringStart , stringEnd);
 
     });
 
     });
 
 
     return this;
 
     return this;
   }
+
   };
  
 +
  $('#email').addClass('decapitalizer');
  
   jQuery.fn.capitalizefw = function() {
+
   $('.decapitalizer').on('input', function() {
     $(this).keyup(function(event) {
+
     $(this).decapitalize();
      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;
+
</pre>
  }
 
  
 +
== Cirkulation / Utlåning och detaljer för låntagare ==
  
  $('#surname, #firstname, #city, #country, #B_city, #B_country').addClass('capitalizer');
+
'''Meddelanden på låntagarsidan går nu redigera så man slipper skriva en nya varje gång.
  $('#address, #address2, #B_address, #B_address2').addClass('capitalizerfw');
 
  
 +
  OBS! Onödigt efter version 22.05 då denna funktion är inbyggd.
 +
'''
  
  $('.capitalizer').on('input', function() {
+
[[Fil:Meddelande.png]]
    $(this).capitalize();
 
  });
 
  
   $('.capitalizerfw').on('input', function() {
+
<pre>
     $(this).capitalizefw();
+
  // *************************************************************************************
  });
+
  // - Cirkulation / Utlåning o detalj för låntagare
 +
  //
 +
  // Meddelanden på låntagarsidan går nu redigera så man slipper skriva en nya varje gång.
 +
  // ver 1.3
 +
  // ( Kompatibel med 22.05 )
 +
 
 +
   if ($('#pat_moremember, #circ_circulation').length) {
 +
     $('<a class="editmsg btn btn-link btn-sm" href="#"><i class="fa fa-edit"></i>Ändra</a>').insertAfter('#messages span');
  
 +
    $('.editmsg').on('click', function() {
  
 +
      var delmsglink = $(this).next().attr('href');
 +
      var msg =  $(this).closest('li').find('span em').text().slice(1,-1);
 +
      localStorage.setItem('editmsg', msg);
  
</pre>
+
      $('#addnewmessageLabel').trigger('click');
  
'''Endast småbokstäver i e-postfält.'''
+
      $('#borrower_message').val(msg);
  
<pre>
+
      $(this).siblings('span').hasClass('circ-hlt') ? $('#message_type').val('L') : $('#message_type').val('B');
  
// *************************************************************************************
+
      $('.modal-footer button.btn.btn-default.approve').on('click', function (event) {
  // Endast småbokstäver i e-postfält
+
        event.preventDefault();
  // ver 1
+
        $.get('https://' + window.location.hostname + delmsglink).done(function(datan) {
  // ( Kompatibel med 20.11 )
+
          $('form#message_form').trigger('submit');
 +
        });
 +
      });
  
  jQuery.fn.decapitalize = function() {
+
      $('.modal-footer button.btn.btn-default.deny.cancel').on('click', function () {
    $(this[0]).keyup(function(event) {
+
         $('#borrower_message').val(msg);
      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');
+
</pre>
  
  $('.decapitalizer').on('input', function() {
+
== Exemplar / Streckkoder ==
    $(this).decapitalize();
 
  });
 
  
</pre>
+
'''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.'''
  
== Cirkulation / Utlåning och detaljer för låntagare ==
+
[[Fil:Streckkodsrutan.PNG]]
  
'''Meddelanden på låntagarsidan går nu redigera så man slipper skriva en nya varje gång.'''
+
<pre>
  
[[Fil:Meddelande.png]]
+
  // *************************************************************************************
 
+
   // Exemplar
<pre>
 
// *************************************************************************************
 
   // - Cirkulation / Utlåning o detalj för låntagare
 
 
   //
 
   //
   // Meddelanden på låntagarsidan går nu redigera så man slipper skriva en nya varje gång.
+
   // Markera innehållet i Streckkodsrutan när man klickar i rutan.
   // ver 1.2
+
  // Förenklar så man kan dra streckkoden direkt när man ställer sig i rutan.
   // ( Kompatibel med 20.11 )
+
   // ver 1.1
 +
   // ( Kompatibel med 23.05 )
  
   $('<a class="editmsg btn btn-link btn-sm" href="#"><i class="fa fa-edit"></i>Ändra</a>').insertAfter('#messages span');
+
   $('input[id^="tag_952_subfield_p"]').each(function() {
 +
    $(this).addClass('bcselect');
 +
  });
  
   $('.editmsg').on('click', function() {
+
   $('.bcselect').on('focus', function(){
 +
    $(this).select();
 +
  });
  
    var delmsglink = $(this).next().attr('href');
+
  $('input[id^="tag_952_subfield_p"]').on('click', function() {
     var msg = $(this).closest('li').find('span em').text().slice(1, -1);
+
     if ($('input[id^="tag_952_subfield_p"]').val()) {
     localStorage.setItem('editmsg', msg);
+
      $(this).select();
 +
     }
 +
  });
  
    $('#addnewmessageLabel').trigger('click');
 
  
    $('#borrower_message').val(msg);
 
  
    if ($(this).siblings('span').hasClass('circ-hlt')) {
+
</pre>
      $('#message_type').val('L');
 
    } else {
 
      $('#message_type').val('B');
 
    };
 
  
    $('.modal-footer button.btn.btn-default.approve').on('click', function(event) {
+
== Cirkulation / Reservationer ==
      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() {
+
'''Visar antal reservationer i kö vid utlån.'''
      $('#borrower_message').val(msg);
 
    });
 
  });
 
  
 +
[[Fil:Antalreservationervidutlan.PNG]]
  
</pre>
 
 
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
 
 
<pre>
 
<pre>
//IntranetUserCSS
+
    // *************************************************************************************
 +
    // - Cirkulation
 +
    //
 +
    // Antal reservationer i kö vid utlån (REST-api)
 +
    // ver 3.4
 +
    // 2024-06-05
 +
    // ( Kompatibel med 23.05 )
  
#messages span.circ-hlt, #circnotes span.circ-hlt {
+
    if ($('#circ_needsconfirmation').length) {
    padding: 10px 0px;
+
        var barcode = $('#circ_needsconfirmation input[name="barcode"]').val();
    border-radius: 5px;
+
        if ($('#circ_needsconfirmation ul li').text().includes('Efterfrågat') || $('#circ_needsconfirmation ul li').text().includes('High demand')) {
    line-height: 25px;
+
            $('#circ_needsconfirmation ul').append('<li style="padding:15px 0">Antal reservationer i kö:\t <span id="antal"><i>Hämtar...</i><div class="loader"></div></span></li>');
    -webkit-animation: blinkingmess 1s 2;  /* Safari 4+ */
+
            $.ajax({
    -moz-animation: blinkingmess 1s 1s 2; /* Fx 5+ */
+
                url: '/api/v1/items/?external_id=' + barcode + '&_match=exact',
    -o-animation: blinkingmess 1s 1s 2; /* Opera 12+ */
+
                cache: true,
    animation: blinkingmess 1s 1s 2;  /* IE 10+, Fx 29+ */
+
                success: function (bibnr) {
}
+
                    bibnr = bibnr[0].biblio_id;
 +
                    $.ajax({
 +
                        url: '/api/v1/holds/?biblio_id=' + bibnr + '&_per_page=500&_match=exact',
 +
                        cache: true,
 +
                        success: function (data) {
 +
                            var inTransit = 0;
 +
                            var waiting = 0;
 +
                            var suspended = 0;
 +
                            for (i = 0; i < data.length; i++) {
 +
                                if (data[i].status == "T") {
 +
                                    inTransit++;
 +
                                }
 +
                                if (data[i].status == "W") {
 +
                                    waiting++;
 +
                                }
 +
                                if (data[i].suspended == true) {
 +
                                    suspended++;
 +
                                }
 +
                            }
 +
                            var leftRes = data.length - inTransit - waiting - suspended;
 +
                            if (leftRes < 2) {
 +
                                if (document.getElementById("override_high_holds_tmp").checked == false) {
 +
                                    console.log('CHECKED!');
 +
                                    $('#override_high_holds_tmp').trigger('click');
 +
                                }
 +
                            }
 +
                            var link = '/cgi-bin/koha/reserve/request.pl?biblionumber=' + bibnr;
 +
                            $('#antal').html('<b>' + leftRes + '</b><a href="' + link + '" target="_blank"> (Öppna kön i ny flik)</a>');
  
#circ_returns .problem {
+
                            $('<li>I transport: <b>' + inTransit + '</b> - Aviserade: <b>' + waiting + '</b> - Pausade: <b>' + suspended + '</b></li>').appendTo('#circ_needsconfirmation ul');
    -webkit-animation: blinkingmess 1s 2;  /* Safari 4+ */
+
                        }
    -moz-animation: blinkingmess 1s 1s 2;  /* Fx 5+ */
+
                    });
    -o-animation: blinkingmess 1s 1s 2;  /* Opera 12+ */
+
                },
    animation: blinkingmess 1s 1s 2; /* IE 10+, Fx 29+ */
+
                error: function () {
}
+
                    $('#antal').html('<b>Okänt</b> (Något blev fel...)');
 +
                }
 +
            });
 +
        }
 +
    }
 
</pre>
 
</pre>
  
== Exemplar / Streckkoder ==
+
== Cirkulation / Sparade lån ==
  
'''Markera innehållet i Streckkodsrutan när man klickar i rutan, förenklar man kan dra streckkoden direkt när man ställer sig i rutan.'''
+
'''SPARADE LÅN - Varning med datum, Vid försök av lån tidigare lånad bok anges nu senast lånat datum i bekräftelserutan, även om annan streckkod av samma titel försöker lånas.'''
  
[[Fil:Streckkodsrutan.PNG]]
+
[[Fil:Sparadelandatum.PNG]]
  
 
<pre>
 
<pre>
 +
    // *************************************************************************************
 +
    // - Cirkulation
 +
    //
 +
    // 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.
 +
    // ver 4.4
 +
    // Hämtar via REST-api
 +
    // 2023-09-12
 +
    // ( Kompatibel med 23.05 )
  
// *************************************************************************************
+
    $('#circ_needsconfirmation').each(function () { // Bekräfta lån-rutan
  // Exemplar
+
        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... <div class="loader"></div></h4>');
  // Markera innehållet i Streckkodsrutan när man klickar i rutan.
+
            var lastdate = 0;
  // Förenklar så man kan dra streckkoden direkt när man ställer sig i rutan.
+
            var borrower = $('#circ_needsconfirmation input[name="borrowernumber"]').val();
  // ver 1
+
            var barcode = $('#circ_needsconfirmation input[name="barcode"]').val();
  // ( Kompatibel med 20.11 )
+
            $.ajax({
 +
                url: '/api/v1/items/?external_id=' + barcode + '&_match=exact',
 +
                cache: true,
 +
                success: function (item) {
 +
                    $.ajax({
 +
                        url: '/api/v1/checkouts?patron_id=' + borrower + '&checked_in=true&_match=exact&q={"item_id":"' + item[0].item_id + '"}',
 +
                        cache: true,
 +
                        success: function (data) {
 +
                            lastdate = data.length ? data[0].checkout_date.slice(0, 10) : null;
 +
                            $('#circ_needsconfirmation #lastdateloading').remove();
 +
                            var retMessage = lastdate ? '<b>' + lastdate + '</b>' : '<b>Okänt</b> <i>(före övergång till koha)</i>';
 +
                            $('#circ_needsconfirmation ul').append('<li style="padding-top:10px" id="lastdate">Senast lånad:\t ' + retMessage + '</li>');
 +
                        },
 +
                        error: function () {
 +
                            $('#circ_needsconfirmation #lastdateloading').remove();
 +
                            $('#circ_needsconfirmation ul').append('<li style="padding-top:10px" id="lastdate">Senast lånad:\t <b>Okänt</b> <i>(före övergång till koha)</i></li>');
 +
                        }
 +
                    });
 +
                }
 +
            });
 +
        }
 +
    });
 +
</pre>
  
  $('input[id^="tag_952_subfield_p"]').each(function() {
+
== Exemplar / Skolbibliotek ==
    $(this).addClass('bcselect');
 
  });
 
  
  $('.bcselect').on('focus', function() {
+
'''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.'''
    $(this).select();
+
 
  });
+
<pre>
  
   $('input[id^="tag_952_subfield_p"]').on('click', function() {
+
   // *************************************************************************************
    if (!$('input[id^="tag_952_subfield_p"]').val() > -1) {
+
  // - Exemplar
      $(this).select();
+
  //
    };
+
  // 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.
 +
  // ver 1.1
 +
  // ( Kompatibel med 23.05 )
  
 +
  if ($('#cat_additem').length) {
 +
    $('#cataloguing_additem_newitem #f').has('#edititem').each(function() {
 +
      if ($('select[id^="tag_952_subfield_y"]').val() != "FJARRLAN") {
 +
        $('#subfield952p input').keypress(function(event) {
 +
          var keycode = event.keyCode || event.which;
 +
          if(keycode == '13') {
 +
            if ($(this).val()) {
 +
              //console.log('Klick!');
 +
              $('input[onclick="return Check(this.form)"]').trigger('click');
 +
            }
 +
          }
 +
        });
 +
      }
 +
    });
 +
  }
  
  
 
</pre>
 
</pre>
  
== Cirkulation / Reservationer ==
+
== Låntagare / Personnummer ==
  
'''Visar antal reservationer i kö vid utlån.'''
+
'''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.'''
 
 
[[Fil:Antalreservationervidutlan.PNG]]
 
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
  // *************************************************************************************
   // - Cirkulation
+
   // - Låntagare
 
   //
 
   //
   // Antal reservationer i kö vid utlån
+
   // Personnummer endast 10 siffror och flytta fältet till ovan födelsedatum samt autofyll födelsedagsdatum,
   // ver 2.1
+
  // Känner av att det är ett giltligt personnr annars rensar den fältet och ger ett meddelande.
   // Använder filen reserves_circ.sql som ska implenteras i rapportverktyget
+
  // Kontrollerar även nu oxå att inte personnumret finns sedan innan registrerat i katalogen.
   // ( Kompatibel med 20.11 )
+
  // Fyller även i automatiskt om det är en kvinna eller man.
 +
   // ver 3.4
 +
   // 2023-05-11
 +
   // Kompatibel med 22.05
  
   $('#circ_needsconfirmation').each(function() {
+
   var validatePersonalNumber = function(input) { // Valideringsscript för svenskt personnummer
     var barcode = sessionStorage.getItem('lastbarcode');
+
     // Kontrollera godkänd längd och form
 +
    if (!input) return false;
  
     if ($('#circ_needsconfirmation ul li').text().indexOf('Efterfrågat') > -1 | $('#circ_needsconfirmation ul li').text().indexOf('High demand') > -1) {
+
     if (input.indexOf('-') == -1) {
 +
      input.length === 10 ? input = input.slice(0, 6) + "-" + input.slice(6) : input = input.slice(0, 8) + "-" + input.slice(8);
 +
      /*
 +
      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;
  
      $('#circ_needsconfirmation ul').append('<li>Antal reservationer i kö:\t <span id="antal"><i>Hämtar...</i></span></li>');
+
    // Snygga till input
 +
    input = input.replace('-', '');
 +
    if (input.length == 12) {
 +
      input = input.substring(2);
 +
    }
  
       var reportID = '454'; /* <- Ange rapportnummer för korrekt SQL-rapport */
+
    // 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;
  
      $.get('https://' + window.location.hostname + '/cgi-bin/koha/svc/report?id=' + reportID + '&sql_params=' + barcode, "json").done(function(data) {
+
    // Kontrollera godkänt datum
 +
    if (Object.prototype.toString.call(d) !== "[object Date]" || isNaN(d.getTime())) return false;
  
        var res = data[data.length - 1][4];
+
    // Kontrollera luhn algoritmen
        var link = '/cgi-bin/koha/reserve/request.pl?biblionumber=' + data[0][5];
+
    for (i = 0; i < numdigits; i = i + 1) {
 
+
      digit = parseInt(input.charAt(i))
        $('#antal').html('<b>' + res + '</b><a href="https://' + window.location.hostname + link + '" target="_blank"> (Öppna kön i ny flik)</a>');
+
      if (i % 2 == parity) digit *= 2;
 
+
      if (digit > 9) digit -= 9;
       });
+
       sum += digit;
     };
+
     }
   });
+
    return (sum % 10) == 0;
 +
   };
  
 +
  var patron_attr_personnr = $('input[value="PERSNUMMER"]').siblings('textarea');
  
 +
  $(patron_attr_personnr).parent().insertBefore('li label[for="dateofbirth"]'); // Flyttar personnrfältet till innan födelsedagsdatumfältet
  
 +
  $(patron_attr_personnr).attr('maxlength', '10').attr('placeholder', '10 siffror (ÅÅMMDDNNNN)').attr('style', 'width: 174px; height: 22px;'); // Ge fältet rätt attribut
  
 +
  $(patron_attr_personnr).change(function() { // Känner av ändring i personnrfältet och uppdaterar födelsedagsdatumfältet och OPAC användarnamnet
  
</pre>
+
    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
  
== Cirkulation / Sparade lån ==
+
      var patronyear = $(this).val().slice(0, 2); // Kollar personnummrets två första siffror och sparar det till variable
  
'''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.'''
+
      var millenium = patronyear > year ? '19' : '20';
 +
      $('input#dateofbirth').val(millenium + $(this).val().slice(0, 2) + '-' + $(this).val().slice(2, 4) + '-' + $(this).val().slice(4, 6)).trigger('change');
  
[[Fil:Sparadelandatum.PNG]]
+
      $('input#userid').val($(this).val()); // Kopierar även personnr till OPAC Användarnamnet
  
<pre>
+
      chkpnr = $(this).val();
  
// *************************************************************************************
+
      $.get('https://' + window.location.hostname + '/cgi-bin/koha/svc/report?id=1017&sql_params=' + chkpnr).done(function(datan) {
  // - Cirkulation
+
        console.log(datan);
  //
 
  // 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.
 
  // ver 3.1
 
  // Använder filen saved_loans.sql som ska implementeras i rapportverktyget
 
  // ( Kompatibel med 20.11 )
 
  
  $('form#mainform').on('submit', function(event) { // Spara senast dragna streckkod vid utlån i webbläsaren
+
        if (datan.length != 0) {
    sessionStorage.setItem('lastbarcode', $('#barcode').val());
+
          alert('Personnumret finns redan registrerat!');
  });
+
          $(patron_attr_personnr).css('background', 'red').focus().select();
 +
        } else {
 +
          $(patron_attr_personnr).css('background', '#d4efb7');
 +
        }
 +
      });
  
  $('#circ_needsconfirmation').each(function() { // Bekräfta lån-rutan
+
      var gender = $(this).val().charAt(8); // Kontrollera om det är en man eller kvinna och fyll i kön automatiskt
    var link = $.cookie('patronlink');
+
      gender = parseInt(gender, 10);
    var barcode = sessionStorage.getItem('lastbarcode');
+
      if ($('#sex-female').length) {
 
+
        gender % 2 == 0 ? document.getElementById("sex-female").checked = true : document.getElementById("sex-male").checked = true;
    if (link.indexOf("findborrower") > -1) {
+
       }
       var type = "cardnumber=";
 
 
     } else {
 
     } else {
       var type = "borrowernumber=";
+
       $(patron_attr_personnr).val(null); // Rensa fältet
    };
+
       alert("Personnummret är felaktigt, var god ändra."); // Varna för fel personnr
 
+
       setTimeout(function() {
    link = link.slice(link.indexOf('=') + 1);
+
         $(patron_attr_personnr).focus();
 
+
      }, 1); // Ställ markören i fältet igen
    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>');
 
 
 
      var reportID = '450'; /* <- Ange rapportnummer för korrekt SQL-rapport */
 
 
 
       $.get('https://' + window.location.hostname + '/cgi-bin/koha/svc/report?id=' + reportID + '&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');
 
        };
 
 
 
      });
 
 
     };
 
     };
 
   });
 
   });
  
</pre>
 
  
'''Detta ska föras in i en ny rapport i rapportverktyget'''
+
  $('#dateofbirth').focus(function() {
<pre>
+
    console.log(validatePersonalNumber($(patron_attr_personnr).val()));
 +
    if (validatePersonalNumber($(patron_attr_personnr).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
  
// SQL-kod som ska göras till en rapport
+
      var patronyear = $(patron_attr_personnr).val().slice(0, 2); // Kollar personnummrets två första siffror och sparar det till variable
// Kom sedan ihåg vilket rapportid den får i ert system och för in det i IntranetUserJS under variabeln "reportID".
 
  
SELECT
+
      var millenium = patronyear > year ? '19' : '20';
  concat(b.surname,', ',b.firstname) AS Namn,
+
      $('input#dateofbirth').val(millenium + $(patron_attr_personnr).val().slice(0, 2) + '-' + $(patron_attr_personnr).val().slice(2, 4) + '-' + $(patron_attr_personnr).val().slice(4, 6));
  i.barcode AS Streckkod,
+
    }
  bi.author AS Författare,
+
  });
  bi.title AS Titel,
 
  SUBSTRING (oi.returndate, 1, 10) AS Återlämningsdatum,
 
  SUBSTRING (oi.issuedate, 1, 10) AS Utlåningsdatum
 
 
 
FROM old_issues oi
 
LEFT JOIN borrowers b
 
USING (borrowernumber)
 
LEFT JOIN items i
 
USING (itemnumber)
 
LEFT JOIN biblio bi
 
USING (biblionumber)
 
  
WHERE b.borrowernumber = <<Låntagarnummer>>
 
AND i.barcode = <<Streckkod>>
 
LIMIT 8000
 
  
 
</pre>
 
</pre>
  
== Exemplar / Skolbibliotek ==
+
== Låntagare / Smsnummer ==
  
'''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.'''
+
'''Lägger automatiskt in samma nummer som fylls i fältet Annan telefon(other phone) till SMSnummer.'''
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
  // *************************************************************************************
   // - Exemplar
+
   // - Låntagare
 
   //
 
   //
   // Vid redigering av exemplar så sparas exemplaret automatisk ifall man drar streckkoden
+
   // Lägger automatiskt in samma nummer som fylls i mobilnummer till SMSnummer,
   // man behöver alltså inte klicka på knappen "Spara" vid redigering av exemplar.
+
   // samt kopiera mobilnr till hemtelefon om inget nummer finns där innan.
   // ver 1
+
   // ver 1.4
   // ( Kompatibel med 20.11 )
+
   // ( Kompatibel med 23.05 )
  
   $('#cataloguing_additem_newitem #f').has('#edititem').each(function() {
+
   if ($('#pat_memberentrygen').length) {
 +
    if ($('input#SMSnumber').length) {
 +
      $('input#mobile').change(function() {
 +
        var telnr = $(this).val();
 +
        telnr = telnr.slice(1);
 +
        $('input#SMSnumber').val('+46' + telnr);
 +
        $('input#phone').val() == "" ? $('input#phone').val('0' + telnr) : null;
 +
      });
  
    $('#subfield952p input').keypress(function(event) {
+
      if ($('input#SMSnumber').val().length > 0) {
      var keycode = event.keyCode || event.which;
+
        if ($('input#SMSnumber').val().slice(0, 2).indexOf('46') > -1) {
      if (keycode == '13') {
+
          var telnr = $('input#SMSnumber').val();
        if ($(this).val()) {
+
          telnr = telnr.slice(2);
          $('input[onclick="return Check(this.form)"]').trigger('click');
+
          $('input#SMSnumber').val('+46' + telnr);
 +
        } else {
 +
          if ($('input#SMSnumber').val().slice(0, 1).indexOf('+') == -1) {
 +
            var telnr = $('input#SMSnumber').val();
 +
            telnr = telnr.slice(1);
 +
            $('input#SMSnumber').val('+46' + telnr);
 +
          }
 
         }
 
         }
 
       }
 
       }
     });
+
     }
   });
+
   }
  
  
 
</pre>
 
</pre>
  
== Låntagare / Personnummer ==
+
== Låntagare / Nummerfält ==
  
'''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.'''
+
'''Tillåt endast siffror i telefonnummer och personnummer.'''
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
  // *************************************************************************************
 
   // - Låntagare
 
   // - Låntagare
 
   //
 
   //
   // Personnummer endast 10 siffror och flytta fältet till ovan födelsedatum samt autofyll födelsedagsdatum,
+
   // Tillåt endast siffror i personnummer och mobiltelefonnummer (med förklaring om endast svenska nummer)
  // Känner av att det är ett giltligt personnr annars rensar den fältet och ger ett meddelande.
+
   // ver 1.2
  // Kontrollerar även nu oxå att inte personnumret finns sedan innan registrerat i katalogen.
+
   // ( Kompatibel med 23.05 )
  // Fyller även i automatiskt om det är en kvinna eller man.
 
   // ver 3.2
 
  // 2020-03-11
 
   // ( Kompatibel med 20.11 )
 
  
   var validatePersonalNumber = function(input) { // Valideringsscript för svenskt personnummer
+
   $("input#mobile" || patron_attr_personnr).keydown(function(e) {
     // Kontrollera godkänd längd och form
+
     var isModifierkeyPressed = (e.metaKey || e.ctrlKey || e.shiftKey);
     if (!input) return false;
+
     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();
 +
    }
 +
  });
  
    if (input.indexOf('-') == -1) {
+
  $('<span class="hint"> Endast svenska mobilnummer</span>').insertAfter("input#mobile");
      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
+
</pre>
    input = input.replace('-', '');
 
    if (input.length == 12) {
 
      input = input.substring(2);
 
    }
 
  
    // Deklarera variabler
+
== Exemplar / Skolbibliotek ==
    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
+
'''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.'''
    if (Object.prototype.toString.call(d) !== "[object Date]" || isNaN(d.getTime())) return false;
 
  
    // Kontrollera luhn algoritmen
+
[[Fil:Duplicera.PNG]]
    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;
 
  };
 
  
 +
<pre>
  
   $('#patron_attr_3').attr('maxlength', '10').attr('placeholder', '10 siffror (ÅÅMMDDNNNN)').attr('style', 'width: 174px; height: 22px;'); // Ge fältet rätt attribut
+
// *************************************************************************************
 +
  // - Exemplar
 +
  //
 +
   // Lägga in flera exemplar av samma bok utan extra knapptryck
 +
  // Markering av senast inlagt exemplar i listan med grönt
 +
  // ver 1.2
 +
  // ( Kompatibel med 23.05 )
  
   $('#patron_attr_3').parent().insertBefore('li label[for="dateofbirth"]'); // Flyttar personnrfältet till innan födelsedagsdatumfältet
+
   if (!$('#cat_additem').length) {
 +
    localStorage.removeItem('addmulti');
 +
  };
  
   $('#patron_attr_3').change(function() { // Känner av ändring i personnrfältet och uppdaterar födelsedagsdatumfältet och OPAC användarnamnet
+
   $('input[name="add_duplicate_submit"]').on('click', function(event) {
 +
    localStorage.setItem('lastbarcode', $('#subfield952p input').val());
 +
    localStorage.setItem('addmulti', 'yes');
 +
  });
  
     if (validatePersonalNumber($(this).val())) {
+
  $('body#cat_additem').each(function() {
       var d = new Date(); // Kollar det aktuella datumet
+
     if (localStorage.getItem('addmulti')) {
       var year = d.getFullYear(); // Sorterar ut vilket år det är
+
      $('#subfield952p input:eq(0)').focus().select();
      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
+
      $('#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');
 +
          }
 +
        }
 +
      });
 +
    };
 +
  });
  
      var patronyear = $(this).val().slice(0, 2); // Kollar personnummrets två första siffror och sparar det till variable
+
  $('#itemst td').text(function() {
 +
    var lastbarcode = localStorage.getItem('lastbarcode');
 +
    if ($(this).text() == lastbarcode) {
 +
      $(this).closest('tr').children().css('background-color', '#d4efb7');
 +
      localStorage.removeItem('lastbarcode');
 +
    }
 +
  });
  
      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 antingen över hundra år (inte så troligt) så då förutsätter vi att personen är född på 2000-talet
+
</pre>
        $('input#dateofbirth').val('20' + $(this).val().slice(0, 2) + '-' + $(this).val().slice(2, 4) + '-' + $(this).val().slice(4, 6));
+
 
      };
+
== Startsidan ==
 +
 
 +
'''Gömmer redigeringsknapparna för nyheterna.'''
  
      $('input#userid').val($(this).val()); // Kopierar även personnr till OPAC Användarnamnet
+
<pre>
  
      chkpnr = $(this).val();
+
// *************************************************************************************
 +
  // - Startsidan
 +
  //
 +
  // Gömmer redigeringsknapparna för nyheterna
 +
  // ( Kompatibel med 23.05 )
  
      $.get('https://' + window.location.hostname + '/cgi-bin/koha/circ/circulation.pl?findborrower=' + chkpnr).done(function(datan) {
+
  $("p.newsfooter a").hide();
  
        var contents = datan.slice(datan.indexOf('<title>') + 7, datan.indexOf('</title>'));
+
  $("p.newsfooter").each(function() {
 +
    var text = $(this).html().replace(/\|/g, ' ');
 +
    $(this).html(text);
 +
  });
  
        if (contents.indexOf('Låna ut') > -1 | contents.indexOf('Checking') > -1) {
 
  
          alert('Personnumret finns redan registrerat!');
+
</pre>
          $('#patron_attr_3').css('background', 'red').focus().select();
 
  
        } else {
+
== Katalog / Sökning==
  
          $('#patron_attr_3').css('background', '#d4efb7');
+
'''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.'''
  
        };
+
[[Fil:Felsökning.PNG]]
      });
 
  
      var gender = $(this).val().charAt(8); // Kontrollera om det är en man eller kvinna och fyll i kön automatiskt
+
<pre>
      gender = parseInt(gender, 10);
 
  
      if (gender % 2 == 0) {
+
    // *************************************************************************************
        document.getElementById("sex-female").checked = true;
+
    // - Katalog / Sökning
      } else {
+
    //
        document.getElementById("sex-male").checked = true;
+
    // Felsökning i "Låna ut", ta med sökning till katalog, samt spara senast sökning så den visas i sökfältet som markerad text.
      };
+
    // ver 1.5
 +
    // 2023-09-07
 +
    // ( Kompatibel med 23.05 )
  
     } else {
+
     if ($('#pat_member').length) {
      $('textarea[id="patron_attr_3"]').val(null); // Rensa fältet
+
        const params = new Proxy(new URLSearchParams(window.location.search), {
      alert("Personnummret är felaktigt, var god ändra."); // Varna för fel personnr
+
            get: (searchParams, prop) => searchParams.get(prop),
      setTimeout(function() {
+
        });
        $('textarea[id="patron_attr_3"]').focus();
+
        let string = params.searchmember;
      }, 1); // Ställ markören i fältet igen
+
        var location = window.location.hostname;
    };
+
 
  });
+
        if (string != null) {
 +
            $('<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" style="margin-bottom:10px">Sök i katalogen</button>').insertAfter('#toolbar');
 +
            $('#searchcat').focus();
  
 +
            $('#searchcat').on('click', function (event) {
  
  $('#dateofbirth').focus(function() {
+
                localStorage.setItem('lastsearch', string);
    console.log(validatePersonalNumber($('#patron_attr_3').val()));
+
                window.location.assign("/cgi-bin/koha/catalogue/search.pl?idx=kw&q=" + string);
    if (validatePersonalNumber($('#patron_attr_3').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 = $('#patron_attr_3').val().slice(0, 2); // Kollar personnummrets två första siffror och sparar det till variable
+
    $('#patronsearch').bind('submit', function (event) {
 +
        if ($('#findborrower').val() == '') {
 +
            event.preventDefault();
 +
            $('#searchcat').trigger('click');
 +
        }
 +
    });
  
      if (patronyear > year) { // Kontrollerar om personen är mer än hundra år, om inte gör detta följande
+
    $('#catalog_results #search-form, #catalog_detail #search-form').val(localStorage.getItem('lastsearch')).select();
        $('input#dateofbirth').val('19' + $('#patron_attr_3').val().slice(0, 2) + '-' + $('#patron_attr_3').val().slice(2, 4) + '-' + $('#patron_attr_3').val().slice(4, 6));
 
  
      } else { // Personen är antingen över hundra år (inte så troligt) så då förutsätter vi att personen är född på 2000-talet
+
    $('#main_intranet-main').ready(function () {
        $('input#dateofbirth').val('20' + $('#patron_attr_3').val().slice(0, 2) + '-' + $('#patron_attr_3').val().slice(2, 4) + '-' + $('#patron_attr_3').val().slice(4, 6));
+
        localStorage.removeItem('lastsearch');
      };
+
     });
     };
 
  });
 
  
  
 +
    $('#cat-search-block').bind('submit', function () {
 +
        var string = $('#search-form').val();
 +
        localStorage.setItem('lastsearch', string);
 +
    });
 
</pre>
 
</pre>
  
== Låntagare / Smsnummer ==
+
== Katalog / Resultat ==
  
'''Lägger automatiskt in samma nummer som fylls i fältet Annan telefon(other phone) till SMSnummer.'''
+
'''Klickbara hyllsignaturer.'''
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
    // *************************************************************************************
  // - Låntagare
+
    // - Katalog / Resultat
  //
+
    //
  // Lägger automatiskt in samma nummer som fylls i mobilnummer till SMSnummer,
+
    // Klickbara hyllsignaturer
  // samt kopiera mobilnr till hemtelefon om inget nummer finns där innan.
+
    // ver 1.1
  // ver 1.3
+
    // 2023-09-07
  // ( Kompatibel med 20.11 )
+
    // ( Kompatibel med 23.05 )
 +
 
 +
    $('td.itemcallnumber').each(function () {
 +
        var itemcallnr = $(this).text().slice(1);
 +
        var location = window.location.hostname;
 +
        $(this).html('<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&q=' + itemcallnr + '">' + itemcallnr + '</a>');
 +
    });
  
  if ($('#pat_memberentrygen').length) {
+
</pre>
    if ($('input#SMSnumber').length) {
+
 
      $('input#mobile').change(function() {
+
== Katalog / Klassifikation ==
        var telnr = $(this).val();
+
 
        telnr = telnr.slice(1);
+
'''Gör klassifikationer i katalogposten klickbara.'''
        $('input#SMSnumber').val('+46' + telnr);
+
 
        if ($('input#phone').val() == "") {
+
<pre>
          console.log('Tomt i telefonnummer');
+
    // *************************************************************************************
          $('input#phone').val('0' + telnr);
+
    // - Katalog
        };
+
    //
      });
+
    // Gör klassifikationer i katalogposten klickbara
 +
    // ver 2.3
 +
    // 2023-09-07
 +
    // ( Kompatibel med 23.05 )
  
      if ($('input#SMSnumber').val().length > 0) {
+
    $(".results_summary.oc").each(function () {
         console.log($('input#SMSnumber').val().slice(0, 2));
+
         var oc = $(this).text();
         if ($('input#SMSnumber').val().slice(0, 2).indexOf('46') > -1) {
+
         var newtext = oc.slice(0, oc.indexOf(':') + 1);
          console.log('1');
+
        $(this).text(newtext);
          var telnr = $('input#SMSnumber').val();
+
        oc = oc.slice(oc.indexOf(':') + 1);
          telnr = telnr.slice(2);
+
         ocarr = oc.trim().split(' | ');
          $('input#SMSnumber').val('+46' + telnr);
+
        for (i = 0; i < ocarr.length; i++) {
         } else {
+
            $(this).append('<a href="/cgi-bin/koha/catalogue/search.pl?idx=kw&q=lcn%3A' + ocarr[i] + '">' + ocarr[i] + '</a>');
          console.log('2');
+
             if (i < (ocarr.length - 1)) {
          if ($('input#SMSnumber').val().slice(0, 1).indexOf('+') == -1) {
+
                $(this).append(' | ');
            var telnr = $('input#SMSnumber').val();
+
            }
             telnr = telnr.slice(1);
 
            $('input#SMSnumber').val('+46' + telnr);
 
          };
 
 
         };
 
         };
      };
+
     });
     };
+
</pre>
  };
 
  
</pre>
+
== Katalog / Informationslänkar ==
  
== Låntagare / Nummerfält ==
+
'''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.'''
  
'''Tillåt endast siffror i telefonnummer och personnummer.'''
+
[[Fil:Adlibrisbtjlegimus.PNG]]
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
  // *************************************************************************************
   // - Låntagare
+
   // - Katalog
 
   //
 
   //
   // Tillåt endast siffror i personnummer och mobiltelefonnummer (med förklaring om endast svenska nummer)
+
   // Gör ISBN i katalogposten klickbara för att komma till Adlibris, Btj, Legimus och LIBRIS
   // ver 1.1
+
   // Knapp i toolbar för länk till LibrisXL
   // ( Kompatibel med 20.11 )
+
   // Samt förhandsvisning av post hos Adlibris när man har muspekaren över Adlibris-länken.
 
+
   // Omslagsbilder på resultat- och detaljsidan, valbart om man vill visa eller inte.
   $("input#mobile , #patron_attr_3").keydown(function(e) {
+
  // ver 2.4
    var isModifierkeyPressed = (e.metaKey || e.ctrlKey || e.shiftKey);
+
  // 2022-10-14
    var isCursorMoveOrDeleteAction = ([46, 8, 9, 35, 36, 37, 38, 39, 40].indexOf(e.keyCode) != -1);
+
  // ( Kompatibel med 22.05 )
    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();
 
    }
 
  });
 
  
   $('<div class="hint">Endast svenska mobilnummer</div>').insertAfter("input#mobile");
+
   // Omslagbild från Bokinfo samt från Overdrives E-böcker på sökresultat
  
 +
  function getImageResult(isbn) {
 +
    if (isbn.slice(0, 3) == '978') {
 +
      isbn = isbn.slice(0, 13);
 +
      var subfolder = isbn.slice(0, 6);
 +
    } else {
 +
      isbn = '978' + isbn.slice(0, -1);
 +
      var subfolder = isbn.slice(0, 6);
 +
      isbnNr = parseInt(isbn, 10);
 +
      var sum = 0;
 +
      for (var x = 0; x < isbn.length; x++) {
 +
        if (x === 0) {
 +
          sum = sum + parseInt(isbn[x], 10);
 +
        } else if (x % 2 === 0) {
 +
          sum = sum + parseInt(isbn[x], 10);
 +
        } else {
 +
          sum = sum + (parseInt(isbn[x], 10) * 3);
 +
        }
 +
      }
 +
      sum = 10 - (sum % 10);
 +
      if (sum == 10) {
 +
        sum = 0;
 +
      };
 +
      isbn = isbnNr.toString();
 +
      isbn = isbn.concat(sum.toString());
 +
    }
  
 +
    if (isbn.length > 2) {
 +
      return isbn;
 +
    }
 +
  };
  
</pre>
+
  if ($('#catalog_results').length) {
 
 
== 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.'''
 
  
[[Fil:Duplicera.PNG]]
+
    $('<label><input id="IMGchk" type="checkbox" style="margin:0 3px 0 5px;">Visa omslagsbilder</label>').appendTo('#selection_ops');
  
<pre>
+
    if ($('#IMGchk').length) {
 
+
      if (localStorage.getItem("showimages") === null) {
// *************************************************************************************
+
        document.getElementById("IMGchk").checked = true;
  // - Exemplar
+
        localStorage.setItem('showimages', 'on');
  //
+
      }
  // Lägga in flera exemplar av samma bok utan extra knapptryck
+
      localStorage.getItem('showimages') == "on" ? document.getElementById("IMGchk").checked = true : document.getElementById("IMGchk").checked = false;
  // Markering av senast inlagt exemplar i listan med grönt
+
    }
  // ver 1.2
 
  // ( Kompatibel med 20.11 )
 
  
  if (!$('#cat_additem').length) {
+
    $('#IMGchk').change(function() {
    localStorage.removeItem('addmulti');
+
      if ($(this).is(':checked')) {
   };
+
        localStorage.setItem('showimages', 'on');
 +
        $('.coverIMG, .coverIMGbig').css('display', 'unset');
 +
      }
 +
      if ($(this).is(':unchecked')) {
 +
        localStorage.setItem('showimages', 'off');
 +
        $('.coverIMG, .coverIMGbig').css('display', 'none');
 +
      }
 +
    });
 +
   }
  
   $('input[name="add_duplicate_submit"]').on('click', function(event) {
+
   $(".results_summary.isbn").each(function() {
     localStorage.setItem('lastbarcode', $('#subfield952p input').val());
+
     var isbn = $(this).text().slice(5);
     localStorage.setItem('addmulti', 'yes');
+
     isbn = isbn.replace(/x/g, 'X');
  });
+
    isbn = isbn.replace(/[^0-9X;]/g, '');
 
+
     if (isbn.indexOf(';') > -1) {
  $('body#cat_additem').each(function() {
+
       isbn = isbn.replace(';', ' ').replace(/\s+/g, ' ').trim();
     if (localStorage.getItem('addmulti')) {
+
      isbnarr = isbn.split(' ');
       $('#subfield952p input:eq(0)').focus().select();
+
      isbn = isbnarr[0].toString();
      $('#subfield952p input:eq(0)').css('background-color', '#d4efb7');
+
     }
      $('#subfield952p input:eq(0)').attr('placeholder', 'Fortsätt dra nästa exemplar...');
+
     if (isbn.slice(0,3) == '978') {
      $('#subfield952p input').keypress(function(event) {
+
       //console.log('978');
        var keycode = event.keyCode || event.which;
+
      isbn = isbn.slice(0,13);
        if (keycode == '13') {
+
    } else {
          if ($(this).val()) {
+
      //console.log(isbn);
            localStorage.setItem('lastbarcode', $(this).val());
+
       isbn = isbn.slice(0,10);
            $('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');
 
 
     }
 
     }
  });
 
  
 +
    //isbn = isbn.replace(/\D/g,'');
 +
    $(this).append('<span class="isbncont"></span>');
  
</pre>
+
    // Adlibris
 +
    $('.isbncont', this).append('<span class="label"> Öppna i: </span><a href="https://www.adlibris.com/storkund/search?phrase=' + 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>');
 +
    // LibrisXL
 +
    //$('.isbncont', this).append('<a href="https://libris.kb.se/katalogisering/search/libris?identifiedBy.value=' + isbn +'&identifiedBy.%40type=ISBN&_limit=20&%40type=Instance&_sort=" target="_blank">LibrisXL</a>');
  
== Startsidan ==
+
    //var thisisbn = $(this);
  
'''Gömmer redigeringsknapparna för nyheterna.'''
+
    localStorage.getItem('showimages') == "on" ? $('.coverIMG, .coverIMGbig').css('display', 'unset') : $('.coverIMG, .coverIMGbig').css('display', 'none');
  
<pre>
+
    var imgISBN = getImageResult(isbn);
 +
    var subfolder = imgISBN.slice(0, 6);
  
// *************************************************************************************
+
    //testImage('http://bokinfo.se/Images/Products/Medium/' + subfolder + '/' + imgISBN + '.jpg');
  // - Startsidan
 
  //
 
  // Gömmer redigeringsknapparna för nyheterna
 
  // ( Kompatibel med 20.11 )
 
  
  $("p.newsfooter a").hide();
 
  
  $("p.newsfooter").each(function() {
+
    if ($(this).closest('td').find('.result-biblio-itemtype').text().trim() == 'E-bok' || $(this).closest('td').find('.result-biblio-itemtype').text().trim() == 'E-ljudbok') {
    var text = $(this).html().replace(/\|/g, ' ');
+
      odCoverLink = $(this).closest('td').find('.results_summary.online_access a:last').attr('href');
    $(this).html(text);
+
      $(this).closest('td').prepend('<img class="coverIMG" alt="" src="' + odCoverLink + '" style="">');
  });
+
    } else {
  
 +
      $(this).closest('td').prepend('<img class="coverIMG" id="img_' + imgISBN + '"alt="" src="https://bokinfo.se/Images/Products/Medium/' + subfolder + '/' + imgISBN + '.jpg" onerror="javascript: console.log(\'Cover not loaded\')">');
  
</pre>
+
      //document.getElementById('img_' + imgISBN).addEventListener('error', function() {console.log('No cover loaded for' + imgISBN);});
  
== Katalog / Sökning==
+
      if ($('#catalog_detail').length) {
 +
        $('<table id="imgtable"><td id="bookimg"></td><td id="details"></td></div>').insertBefore('#catalogue_detail_biblio');
 +
        $('#bookimg').append('<img class="coverIMGbig" alt="" src="https://bokinfo.se/Images/Products/Medium/' + subfolder + '/' + imgISBN + '.jpg" style="">');
 +
        $('#catalogue_detail_biblio').appendTo('#details');
 +
        $(".coverIMG, .coverIMGbig").on("error", function() {
 +
          $(this).remove();
 +
          $('#catalogue_detail_biblio').insertBefore('#imgtable');
 +
          $('#imgtable').remove();
 +
        });
 +
      }
 +
      $(".coverIMG, .coverIMGbig").on("error", function() {
 +
        $(this).remove();
 +
      });
 +
    }
 +
  });
  
'''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.'''
+
  if ($('#catalog_detail').length) {
 
+
    var bibnr = $('input[name="bib"]').val();
[[Fil:Felsökning.PNG]]
+
    if (bibnr) {
 +
      $.ajax({
 +
        url: 'https://' + window.location.hostname + '/api/v1/biblios/' + bibnr,
 +
        type: "GET",
 +
        accepts: {
 +
        "*": "application/marc-in-json"
 +
        },
 +
        contentType: "application/marc-in-json;charset=ISO-8859-15",
 +
        complete: function(data) {
 +
          //console.log(data.responseJSON.fields);
 +
          data.responseJSON.fields.forEach(function(item) {
 +
            if (Object.keys(item)[0] == '003') {
 +
              if (Object.values(item)[0] == 'SE-LIBR') {
 +
                data.responseJSON.fields.forEach(function(item) {
 +
                  if (Object.keys(item)[0] == '001') {
 +
                    //console.log(Object.values(item)[0]);
 +
                    librisnr = Object.values(item)[0];
 +
                    $('<div class="btn-group"><a id="librisxl" class="btn btn-default" href="https://libris.kb.se/katalogisering/search/libris?q=' + librisnr + '&%40type=Instance" target="_blank"><i class="fa fa-edit"></i> LibrisXL</a></div>').insertBefore($('#placehold').parent());
 +
                  }
 +
                });
 +
              }
 +
            }
 +
          });
 +
        }
 +
      });
 +
    }
 +
  }
  
<pre>
 
  
// *************************************************************************************
+
   $('.pvframelink').on('mouseover', function() {
   // - Katalog / Sökning
+
    isbn = $(this).attr('href');
  //
+
    isbn = isbn.slice(isbn.indexOf('=') + 1);
  // Felsökning i "Låna ut", ta med sökning till katalog, samt spara senast sökning så den visas i sökfältet som markerad text.
 
  // ver 1.2
 
  // ( Kompatibel med 20.11 )
 
  
  $('main h4').each(function() {
+
     $('<div class="previewbox"><iframe class="pvframe" src="https://www.adlibris.com/storkund/search?phrase=' + isbn + '" width="720px" height="700px"></iframe></div>').insertAfter(this);
     if ($(this).text().indexOf('Ingen låntagare hittad') >= 0 || $(this).text().indexOf('No patron matched') >= 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) {
+
   $('.pvframelink').on('mouseout', function() {
     var string = $('main h4 span').text();
+
     $('.previewbox').remove();
    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() {
+
</pre>
    localStorage.removeItem('lastsearch');
 
  });
 
  
  $('#cat-search-block').bind('submit', function(event) {
+
'''OBS Denna kod behöver klistras in i IntranetUserCSS för att det ska fungera'''
    var string = $('#search-form').attr('value');
 
    localStorage.setItem('lastsearch', string);
 
  });
 
  
 +
<pre>
 +
/* Förhandsvisningsfönstret för Adlibrislänk */
  
</pre>
+
.previewbox {
 +
  display:none;
 +
  background: #fff;
 +
  z-index: +100;
 +
  -webkit-box-shadow: 10px 10px 5px 0px rgba(160,160,160,1);
 +
  -moz-box-shadow: 10px 10px 5px 0px rgba(160,160,160,1);
 +
  box-shadow: 10px 10px 5px 0px rgba(160,160,160,1);
 +
  position: fixed;
 +
  right: 50px;
 +
  bottom: 50px;
 +
}
  
== Katalog / Resultat ==
+
a.pvframelink:hover + .previewbox { /* Visa förhandsvisningsfönstret */
 +
  display:block; 
 +
}
  
'''Klickbara hyllsignaturer.'''
+
.pvframe { /* Padding och border för förhandsvisningsfönstret */
 +
  padding: 20px;
 +
  border: 1px solid #d0d0d0;
 +
}
 +
 
 +
</pre>
 +
 
 +
== 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.'''
 +
 
 +
[[Fil:Senastelantagare.PNG]]
  
 
<pre>
 
<pre>
  
 
   // *************************************************************************************
 
   // *************************************************************************************
   // - Katalog / Resultat
+
   // - Header / Search
 
   //
 
   //
   // Klickbara hyllsignaturer
+
   // Spara senaste låntagare som lånat eller återlämnat med hjälp av cookies
   // ver 1
+
   // ver 3.2
   // ( Kompatibel med 20.11 )
+
  // 2022-10-20
 +
   // ( Kompatibel med 22.05 )
  
   $('td.itemcallnumber').each(function() {
+
   var midnight = new Date();
    var itemcallnr = $(this).text().slice(1);
+
  midnight.setHours(23,59,59,0);
    var location = window.location.hostname;
 
    $(this).html('<a href="https://' + location + '/cgi-bin/koha/catalogue/search.pl?idx=callnum&q=' + itemcallnr + '">' + itemcallnr + '</a>');
 
  });
 
  
  
</pre>
+
  $('#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');
 +
    checkedinpatron = checkedinpatron.slice(checkedinpatron.indexOf('=') + 1);
 +
    var patronname;
 +
    var patronlink = $(this).attr('href');
  
== Katalog / Klassifikation ==
+
    $.ajax({
 +
      url: 'https://' + window.location.hostname + '/api/v1/patrons/',
 +
      data: {"patron_id" : checkedinpatron },
 +
      cache: true
 +
    }).done(function(data) {
 +
      patronname = data[0].firstname + ' ' + data[0].surname + ' (' + data[0].cardnumber + ')';
  
'''Gör klassifikationer i katalogposten klickbara.'''
+
      var checkedin = $('#circ_returns').length ? ' [ Återlämnat ]' : '';
 +
      document.cookie = "lastpatron=" + patronname + checkedin + "; expires=" + midnight + "; path=/; Samesite=Strict" ;
  
<pre>
+
      patronlink = patronlink.slice(patronlink.indexOf('?') + 1);
 +
      document.cookie = "patronlink=" + patronlink + "; expires=" + midnight + "; path=/; Samesite=Strict" ;
  
// *************************************************************************************
+
      savePatron();
  // - Katalog
 
  //
 
  // Gör klassifikationer i katalogposten klickbara
 
  // ver 2.2
 
  // ( Kompatibel med 20.11 )
 
  
  $(".results_summary.oc").each(function() {
+
     });
     var oc = $(this).text();
 
    var newtext = oc.slice(0, oc.indexOf(':') + 1);
 
    $(this).text(newtext);
 
    oc = oc.slice(oc.indexOf(':') + 1);
 
    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(' | ');
 
      }
 
    };
 
 
   });
 
   });
  
</pre>
 
  
== Katalog / Informationslänkar ==
+
  $('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;
  
'''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.'''
+
    document.cookie = "lastpatron=" + name + "; expires=" + midnight + "; path=/; SameSite=Strict" ;
 +
    document.cookie = "patronlink=" + patronlink + "; expires=" + midnight + "; path=/; SameSite=Strict" ;
 +
 
 +
    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];
  
[[Fil:Adlibrisbtjlegimus.PNG]]
+
    document.cookie = "timestamp=" + time + "; expires=" + midnight + "; path=/; Samesite=Strict" ;
  
<pre>
+
    var name = Cookies.get('lastpatron');
 +
    var link = Cookies.get('patronlink');
 +
    var time = Cookies.get('timestamp');
  
  // *************************************************************************************
+
    if (Cookies.get('lastpatrons')) {
  // - Katalog
 
  //
 
  // 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.
 
  // Omslagsbilder på resultat- och detaljsidan, valbart om man vill visa eller inte.
 
  // ver 2.3
 
  // 2020-07-09
 
  // ( Kompatibel med 20.11 )
 
  
  // Omslagbild på sökresultat
+
      var theString = Cookies.get('lastpatrons');
 +
      var lastpatrons = theString.split(",");
 +
      var theString2 = Cookies.get('patronlinks');
 +
      var patronlinks = theString2.split(",");
 +
      var theString3 = Cookies.get('timestamps');
 +
      var timestamps = theString3.split(",");
  
  function getImageResult(isbn) {
+
      if (patronlinks.indexOf(link) > -1) {
    if (isbn.slice(0, 3) == '978') {
+
 
      var subfolder = isbn.slice(0, 6);
+
        var indexnr = $.inArray(link, patronlinks);
    } else {
+
        patronlinks.splice(indexnr, 1);
      isbn = '978' + isbn.slice(0, -1);
+
        lastpatrons.splice(indexnr, 1);
      var subfolder = isbn.slice(0, 6);
+
        timestamps.splice(indexnr, 1);
      isbnNr = parseInt(isbn, 10);
 
      var sum = 0;
 
      for (var x = 0; x < isbn.length; x++) {
 
        if (x === 0) {
 
          sum = sum + parseInt(isbn[x], 10);
 
        } else if (x % 2 === 0) {
 
          sum = sum + parseInt(isbn[x], 10);
 
        } else {
 
          sum = sum + (parseInt(isbn[x], 10) * 3);
 
        }
 
 
       }
 
       }
      sum = 10 - (sum % 10);
+
    }
      if (sum == 10) {
+
    else {
        sum = 0;
+
      var lastpatrons = [];
       };
+
       var patronlinks = [];
      isbn = isbnNr.toString();
+
       var timestamps = [];
       isbn = isbn.concat(sum.toString());
+
     }
     };
 
  
     if (isbn.length > 2) {
+
     lastpatrons.unshift(name);
      return isbn;
+
     patronlinks.unshift(link);
     };
+
    timestamps.unshift(time);
  };
 
  
  if ($('#catalog_results').length) {
+
    if (lastpatrons.length > 15) {
 +
      lastpatrons.pop();
 +
      patronlinks.pop();
 +
      timestamps.pop();
 +
    }
  
     $('<label><input id="IMGchk" type="checkbox" style="margin:0 3px 0 5px;">Visa omslagsbilder</label>').appendTo('#selection_ops');
+
     document.cookie = "lastpatrons=" + lastpatrons + "; expires=" + midnight + "; path=/; Samesite=Strict";
 +
    document.cookie = "patronlinks=" + patronlinks + "; expires=" + midnight + "; path=/; Samesite=Strict" ;
 +
    document.cookie = "timestamps=" + timestamps + "; expires=" + midnight + "; path=/; Samesite=Strict" ;
 +
 
 +
  };
  
    if ($('#IMGchk').length) {
 
      if (localStorage.getItem("showimages") === null) {
 
        document.getElementById("IMGchk").checked = true;
 
        localStorage.setItem('showimages', 'on');
 
      };
 
  
      if (localStorage.getItem('showimages') == "on") {
+
  if (Cookies.get('lastpatron')) { // Visa knappen ifall det finns en sparad låntagare
        document.getElementById("IMGchk").checked = true;
+
    var lpatron = Cookies.get('lastpatron');
      };
+
    $('<span> </span><button id="lastpatron">Senaste låntagare</button>').insertAfter('input[id="autocsubmit"]');
      if (localStorage.getItem('showimages') == "off") {
+
    $('<a href="#" id="clearlpatron"> Rensa</a>').insertAfter('#lastpatron');
        document.getElementById("IMGchk").checked = false;
+
  }
      };
 
    };
 
  
    $('#IMGchk').change(function() {
+
  $("<a href='#' id='patronspan'> "+lpatron+"</a>").insertBefore('#clearlpatron').hide();
      if ($(this).is(':checked')) {
 
        localStorage.setItem('showimages', 'on');
 
        $('.coverIMG, .coverIMGbig').css('display', 'unset');
 
      };
 
      if ($(this).is(':unchecked')) {
 
        localStorage.setItem('showimages', 'off');
 
        $('.coverIMG, .coverIMGbig').css('display', 'none');
 
      };
 
    });
 
  };
 
  
   $(".results_summary.isbn").each(function() {
+
   $('#lastpatron').mouseover(function(event){
     var isbn = $(this).text().slice(5);
+
     event.preventDefault();
     isbn = isbn.replace(/x/g, 'X');
+
     $("#clearlpatron").hide();
    isbn = isbn.replace(/[^0-9X;]/g, '');
+
     $("#patronspan").show();
     if (isbn.indexOf(';') > -1) {
+
  });
      isbn = isbn.replace(';', ' ').replace(/\s+/g, ' ').trim();
+
 
      isbnarr = isbn.split(' ');
+
  $('#lastpatron').mouseout(function(event){
      isbn = isbnarr[0].toString();
+
    event.preventDefault();
    };
+
    $("#clearlpatron").show();
    //isbn = isbn.replace(/\D/g,'');
+
     $("#patronspan").hide();
     $(this).append('<span class="isbncont"></span>');
+
  });
  
    // Adlibris
+
  $('#lastpatron').on('click', function(event){ // Öppna senaste låntagare
    $('.isbncont', this).append('<span class="label"> Öppna i: </span><a href="https://www.adlibris.com/storkund/search?phrase=' + isbn + '" target="_blank" class="pvframelink">Adlibris</a> | ');
+
     if (Cookies.get('lastpatron')) {
    // Btj
+
      event.preventDefault();
     $('.isbncont', this).append('<a href="http://butik.btj.se/default.aspx?search=' + isbn + '" target="_blank">Btj</a> | ');
+
      var patronlink = Cookies.get('patronlink');
    // Legimus
+
      var location = window.location.hostname;
    $('.isbncont', this).append('<a href="http://www.legimus.se/search?isbn=' + isbn + '" target="_blank">Legimus</a> | ');
+
      window.location.assign("https://" + location + "/cgi-bin/koha/circ/circulation.pl?" + patronlink);
    // 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>');
+
  });
  
    if (localStorage.getItem('showimages') == "on") {
+
  $('#clearlpatron').on('click', function(event){ // Rensa senaste låntagare
      $('.coverIMG, .coverIMGbig').css('display', 'unset');
 
    };
 
    if (localStorage.getItem('showimages') == "off") {
 
      $('.coverIMG, .coverIMGbig').css('display', 'none');
 
    };
 
  
     var IMGisbn = getImageResult(isbn);
+
     Cookies.remove('patronlink', { path: '/' });
    var subfolder = IMGisbn.slice(0, 6);
+
     Cookies.remove('lastpatron', { path: '/' });
     $(this).closest('td').prepend('<img class="coverIMG"  src="http://bokinfo.se/Images/Products/Medium/' + subfolder + '/' + IMGisbn + '.jpg" style="">');
+
     Cookies.remove('lastpatrons', { path: '/' });
     if ($('#catalog_detail').length) {
+
    Cookies.remove('patronlinks', { path: '/' });
      $('<table id="imgtable"><td id="bookimg"></td><td id="details"></td></div>').insertBefore('#catalogue_detail_biblio');
+
    Cookies.remove('timestamp', { path: '/' });
      $('#bookimg').append('<img class="coverIMGbig"  src="http://bokinfo.se/Images/Products/Medium/' + subfolder + '/' + IMGisbn + '.jpg" style="">');
+
    Cookies.remove('timestamps', { path: '/' });
      $('#catalogue_detail_biblio').appendTo('#details');
+
 
      $(".coverIMG, .coverIMGbig").on("error", function() {
+
    $('#lastpatron').hide();
        $(this).remove();
+
    $('#clearlpatron').hide();
        $('#catalogue_detail_biblio').insertBefore('#imgtable');
+
     $('#lastpatrons').hide();
        $('#imgtable').remove();
 
      });
 
    };
 
     $(".coverIMG, .coverIMGbig").on("error", function() {
 
      $(this).remove();
 
    });
 
 
   });
 
   });
  
  
   $('.pvframelink').on('mouseover', function() {
+
  // Knapp för att visa flera av senaste låntagare
    isbn = $(this).attr('href');
+
 
    isbn = isbn.slice(isbn.indexOf('=') + 1);
+
   $('<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');
 +
 
  
    $('<div class="previewbox"><iframe class="pvframe" src="https://www.adlibris.com/storkund/search?phrase=' + isbn + '" width="720px" height="700px"></iframe></div>').insertAfter(this);
+
  $('#lastpatrons').on('click', function(event){ // Öppna listan med senaste låntagare
  
  });
+
    var lp = Cookies.get('lastpatrons');
 +
    var names = lp.split(",");
 +
    var pl = Cookies.get('patronlinks');
 +
    var links = pl.split(",");
 +
    var ts = Cookies.get('timestamps');
 +
    var times = ts.split(",");
 +
    var list = $("#patron-dropdown");
 +
    var parent = list.parent();
 +
    var location = window.location.hostname;
  
  $('.pvframelink').on('mouseout', function() {
+
    list.detach().empty().each(function(i){
    $('.previewbox').remove();
+
      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);
 +
        }
 +
      }
 +
    });
 
   });
 
   });
 
  
 
</pre>
 
</pre>
  
== Låntagare / Sökning ==
+
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
 
+
<pre>
'''Spara senaste låntagare som lånat eller återlämnat med hjälp av cookies, spara även de 15 senaste med timestamp när.'''
+
.timestamps {
 +
  color:red;
 +
  padding-right:10px;
 +
}
  
[[Fil:Senastelantagare.PNG]]
+
</pre>
 +
 
 +
== Cirkulation / Reservation ==
 +
 
 +
'''Snabbaccess till senaste låntagare vid reservation.'''
 +
 
 +
[[Fil:Senastelantagarereservation.PNG]]
  
 
<pre>
 
<pre>
  
  // *************************************************************************************
+
// *************************************************************************************
   // - Header / Search
+
   // - Cirkulation / Reservation
 
   //
 
   //
   // Spara senaste låntagare som lånat eller återlämnat med hjälp av cookies
+
   // Snabbaccess till senaste låntagare vid reservation
   // ver 2.4
+
   // ver 2.3
   // ( Kompatibel med 20.11 )
+
   // ( Kompatibel med 22.05 )
  
   var midnight = new Date();
+
   if ($('#circ_request').length) {
  midnight.setHours(23, 59, 59, 0);
+
    const queryString = window.location.search;
 +
    const urlParams = new URLSearchParams(queryString);
 +
    var biblionumber = urlParams.get('biblionumber');
  
 +
    if (Cookies.get('lastpatron')) {
 +
      var name = Cookies.get('lastpatron');
 +
      var link = $('#holds_patronsearch').attr('action');
 +
      //var biblionumber = $('input[name="biblionumber"').val();
 +
      var location = window.location.hostname;
 +
      var patronlink = Cookies.get('patronlink');
 +
      $('<br /><br /><span>Reservera för senaste låntagaren: </span><a href="https://' + location + '/cgi-bin/koha/reserve/request.pl?biblionumber=' + biblionumber + '&' + patronlink + '" id="hold">' + name + '</a>').appendTo('#holds_patronsearch_pane');
  
  $('#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
+
      $('<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>').appendTo('#holds_patronsearch_pane');
    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=/ ";
+
       $('#lastpatrons_res').on('click', function(event) { // Öppna listan med senaste låntagare
  
    } else {
+
        var reslp = Cookies.get('lastpatrons');
      var patronname = $(this).text();
+
        var resnames = reslp.split(",");
      document.cookie = "lastpatron=" + patronname + "; expires=" + midnight + "; path=/ ";
+
        var respl = Cookies.get('patronlinks');
    };
+
        var reslinks = respl.split(",");
 +
        var rests = Cookies.get('timestamps');
 +
        var restimes = rests.split(",");
 +
        var reslist = $("#patron-dropdown2");
 +
        var resparent = reslist.parent();
 +
        var location = window.location.hostname;
 +
        var reslink = $('#holds_patronsearch').attr('action');
  
    var patronlink = checkedinpatron.slice(checkedinpatron.indexOf('?') + 1);
+
        reslist.detach().empty().each(function(i) {
    document.cookie = "patronlink=" + patronlink + "; expires=" + midnight + "; path=/ ";
+
          for (var x = 0; x < resnames.length; x++) {
 +
            $(this).append('<li><a href="https://' + location + '/cgi-bin/koha/reserve/' + link + biblionumber + '&' + 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);
 +
            }
 +
          }
 +
        });
 +
      });
 +
    }
 +
  }
  
    savePatron();
 
  
  });
+
</pre>
  
 +
== Cirkulation / Tidsstämpel==
  
  $('div.patroninfo h5').each(function() { // Spara senaste låntagaren som laddats
+
'''Ta bort tidsstämpeln på återlämnade böcker.'''
    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=/ ";
+
<pre>
    document.cookie = "patronlink=" + patronlink + "; expires=" + midnight + "; path=/ ";
 
  
    savePatron();
+
// *************************************************************************************
 +
  // - Cirkulation
 +
  //
 +
  // Ta bort tidsstämpeln på återlämnade böcker
 +
  // ( Kompatibel med 20.11 )
  
 +
  $("td.ci-duedate:contains('23:59')").each(function() {
 +
    var text = $(this).html().replace('23:59', '');
 +
    $(this).html(text);
 
   });
 
   });
  
 +
</pre>
  
  function savePatron() { // Spara ner låntagare i listan ifall hen inte finns med förut
+
== Cirkulation / Exemplar ==
  
    var d = new Date();
+
'''Markerar raden med det aktuella exemplaret efter sökt streckkod.'''
    time = d.toTimeString();
 
    time = time.split(' ')[0];
 
  
    document.cookie = "timestamp=" + time + "; expires=" + midnight + "; path=/ ";
+
[[Fil:Markerarad.PNG]]
  
    var name = $.cookie('lastpatron');
+
<pre>
    var link = $.cookie('patronlink');
 
    var time = $.cookie('timestamp');
 
  
    if ($.cookie('lastpatrons')) {
+
  // *************************************************************************************
 +
  // - Cirkulation
 +
  //
 +
  // Markerar raden med det aktuella exemplaret efter sökt streckkod
 +
  // ( Kompatibel med 21.11 )
  
      var theString = $.cookie('lastpatrons');
+
  $('#cat-search-block .submit').on('click', function() { // Vanlig katalogsökning
      var lastpatrons = theString.split(",");
+
    localStorage.setItem('search-form', $('#search-form').val());
      var theString2 = $.cookie('patronlinks');
+
  });
      var patronlinks = theString2.split(",");
 
      var theString3 = $.cookie('timestamps');
 
      var timestamps = theString3.split(",");
 
  
       if (patronlinks.indexOf(link) > -1) {
+
  $('form[action="search.pl"] .btn').on('click', function() { // Avancerad sökning
 +
    $('input[type="text"]').each(function() {
 +
      var value = $(this).val();
 +
       if (value !== '') {
 +
        localStorage.setItem('search-form', value);
 +
      }
 +
    });
 +
  });
 +
 
 +
  if ($('#catalog_detail').length) {
 +
    var storedsearch = localStorage.getItem('search-form');
 +
    if (storedsearch != null) {
 +
      $('#holdings a[href^="/cgi-bin/koha/catalogue/moredetail.pl"]').each(function() {
 +
      if ($(this).text() == storedsearch) {
 +
          $(this).closest('tr').children().css('background-color', '#d4efb7');
 +
          localStorage.removeItem('search-form');
 +
        }
 +
      });
 +
      $('#otherholdings a[href^="/cgi-bin/koha/catalogue/moredetail.pl"]').each(function() {
 +
      if ($(this).text() == storedsearch) {
 +
          $(this).closest('tr').children().css('background-color', '#d4efb7');
 +
          localStorage.removeItem('search-form');
 +
          waitForEl('li[aria-controls="holdings"]', function() {
 +
            return $('a[href="#otherholdings"]').trigger('click');
 +
          });
 +
        }
 +
      });
 +
    }
 +
  }
  
        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);
+
</pre>
    patronlinks.unshift(link);
 
    timestamps.unshift(time);
 
  
    if (lastpatrons.length > 15) {
+
== Exemplar / Nytt exemplar ==
      lastpatrons.pop();
 
      patronlinks.pop();
 
      timestamps.pop();
 
    };
 
  
    document.cookie = "lastpatrons=" + lastpatrons + "; expires=" + midnight + "; path=/ ";
+
'''Lägger in taggen #additema så fokus hamnar på exemplarinläggningen vid Nytt exemplar.'''
    document.cookie = "patronlinks=" + patronlinks + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "timestamps=" + timestamps + "; expires=" + midnight + "; path=/ ";
 
  
  };
+
<pre>
  
 +
// *************************************************************************************
 +
  // - Exemplar
 +
  //
 +
  // Lägger in taggen #additema så fokus hamnar på ememplarinläggningen vid Nytt exemplar
 +
  // ( Kompatibel med 20.11 )
  
   if ($.cookie('lastpatron')) { // Visa knappen ifall det finns en sparad låntagare
+
   $('#cataloguing_additem_newitem #f').attr('action', '/cgi-bin/koha/cataloguing/additem.pl#additema');
    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();
+
</pre>
  
  $('#lastpatron').mouseover(function(event) {
+
== Katalog / Resultat ==
    event.preventDefault();
 
    $("#clearlpatron").hide();
 
    $("#patronspan").show();
 
  });
 
  
  $('#lastpatron').mouseout(function(event) {
+
'''Visa fler/färre på resultatsidan, Märker även tillgängligheten med grön/röd.'''
    event.preventDefault();
 
    $("#clearlpatron").show();
 
    $("#patronspan").hide();
 
  });
 
  
  $('#lastpatron').on('click', function(event) { // Öppna senaste låntagare
+
[[Fil:visaflerfarre.PNG]]
    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
+
<pre>
  
    $.removeCookie('patronlink', {
+
  // *************************************************************************************
      path: '/'
+
  // - Katalog / Resultat / Listor
    });
+
  //
    $.removeCookie('lastpatron', {
+
  // Visa fler/färre på resultatsidan och på listor
      path: '/'
+
  // Märker även tillgängligheten med grön/röd
    });
+
  // ver 3.4
    $.removeCookie('lastpatrons', {
+
  // ( Kompatibel med 22.05 )
      path: '/'
+
 
    });
+
  if ($('#catalog_results').length) {
    $.removeCookie('patronlinks', {
+
    //if ($('.logged-in-branch-name:first()').text().length > 0) {
      path: '/'
+
       var loggedinbranch = $('.logged-in-branch-name:first()').text();
    });
+
      localStorage.setItem('loggedinbranch', loggedinbranch);
    $.removeCookie('timestamp', {
+
    //}
       path: '/'
 
    });
 
    $.removeCookie('timestamps', {
 
      path: '/'
 
    });
 
  
     $('#lastpatron').hide();
+
     $('.availability').each(function() {
    $('#clearlpatron').hide();
+
      var lin = $(this).find('li').length;
    $('#lastpatrons').hide();
 
  });
 
  
 +
      if (lin > 0) {
 +
        $('li', this).hide().addClass('toggleable');
 +
        $(this).append('<span class="more">Visa fler...</span>');
 +
      }
 +
    });
  
  // Knapp för att visa flera av senaste låntagare
+
    $('#lists_shelves #searchresults td:nth-child(5)').each(function() {
 +
      var lin = $(this).find('li').length;
  
  $('<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');
+
      if (lin > 1) {
 +
        $('li', this).hide().addClass('toggleable');
 +
        $(this).append('<span class="more">Visa fler...</span>');
 +
      }
 +
    });
  
 +
    $('.availability li').each(function() {
 +
      //var loggedinbranch = $('.logged-in-branch-name:first()').text();
 +
      if ($(this).text().indexOf(loggedinbranch) > -1) {
  
  $('#lastpatrons').on('click', function(event) { // Öppna listan med senaste låntagare
+
        $(this).removeClass('toggleable').show();
  
    var lp = $.cookie('lastpatrons');
+
        $(this).parent().hasClass('onloan_items_loop_items') || $(this).parent().hasClass('other_items_loop_items') ? $(this).css('background','#ffe7e7') : $(this).css('background','#d4efb7');
    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++) {
+
        if ($(this).parent().hasClass('onloan_items_loop_items') || $(this).parent().hasClass('other_items_loop_items')) {
        $(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>');
+
          $(this).css('background','#ffe7e7');
         if (x == names.length - 1) {
+
         } else {
           $(this).appendTo(parent);
+
           $(this).css('background','#d4efb7');
 
         }
 
         }
      }
+
        */
    });
 
  });
 
</pre>
 
  
'''OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"'''
+
        // Karlsborg - Undenäs - Mölltorp
<pre>
 
.timestamps {
 
  color:red;
 
  padding-right:10px;
 
}
 
  
</pre>
+
        if (loggedinbranch.indexOf('Karlsborg') > -1 || loggedinbranch.indexOf('Undenäs') > -1 || loggedinbranch.indexOf('Mölltorp') > -1) {
 +
          $('.availability li').each(function() {
 +
            if ($(this).text().indexOf('Karlsborg') > -1 || $(this).text().indexOf('Undenäs') > -1 || $(this).text().indexOf('Mölltorp') > -1) {
 +
              $(this).removeClass('toggleable').show();
 +
              $(this).parent().hasClass('onloan_items_loop_items') || $(this).parent().hasClass('other_items_loop_items') ? $(this).css('background','#ffe7e7') : $(this).css('background','#d4efb7');
 +
            }
 +
          });
 +
        }
  
== Cirkulation / Reservation ==
+
        // Tidaholm - KVA
  
'''Snabbaccess till senaste låntagare vid reservation.'''
+
        if (loggedinbranch.indexOf('Tidaholm') > -1) {
 
+
          $('.availability li').each(function() {
[[Fil:Senastelantagarereservation.PNG]]
+
            if ($(this).text().indexOf('Tidaholm') > -1) {
 
+
              $(this).removeClass('toggleable').show();
<pre>
+
              $(this).parent().hasClass('onloan_items_loop_items') || $(this).parent().hasClass('other_items_loop_items') ? $(this).css('background','#ffe7e7') : $(this).css('background','#d4efb7');
 
+
             }
  // *************************************************************************************
+
           });
  // - Cirkulation / Reservation
 
  //
 
  // Snabbaccess till senaste låntagare vid reservation
 
  // ver 2.2
 
  // ( Kompatibel med 20.11 )
 
 
 
  if ($.cookie('lastpatron')) {
 
    var name = $.cookie('lastpatron');
 
    var link = $('#holds_patronsearch').attr('action');
 
    var biblionumber = $('#holds_patronsearch input[name="biblionumber"').attr('value');
 
    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 + biblionumber + '&' + 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 + biblionumber + '&' + 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);
 
           }
 
 
         }
 
         }
       });
+
       }
 
     });
 
     });
  };
 
  
 +
    $('.availability, #lists_shelves #searchresults td:nth-child(5)').on('click', '.more', function() {
 +
      $(this).hasClass('less') ? $(this).text('Visa fler...').removeClass('less') : $(this).text('Visa färre...').addClass('less');
 +
      $(this).parent().children('ul').children('li.toggleable').slideToggle("fast");
 +
    });
 +
  }
  
 
</pre>
 
</pre>
  
== Cirkulation / Tidsstämpel==
+
== Övergripande / Genvägar ==
  
'''Ta bort tidsstämpeln återlämnade böcker.'''
+
'''När man trycker Pause-Break knappen laddas kohas startsida.'''
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
// *************************************************************************************
   // - Cirkulation
+
   // - Övergripande
 
   //
 
   //
   // Ta bort tidsstämpeln på återlämnade böcker
+
   // When Pause-Break button is pressed it will return to main page
 
   // ( Kompatibel med 20.11 )
 
   // ( Kompatibel med 20.11 )
  
   $("td.ci-duedate:contains('23:59')").each(function() {
+
   document.onkeydown = function keypress(e) {
     var text = $(this).html().replace('23:59', '');
+
     e = (e || window.event);
    $(this).html(text);
+
    if (e.keyCode == 19) {
   });
+
      try {
 +
        e.preventDefault();
 +
      } //Non-IE
 +
      catch (x) {
 +
        e.returnValue = false;
 +
      } //IE (verkade inte fungera!)
 +
      window.location.href = "https://" + window.location.hostname;
 +
    };
 +
   }
 +
 
  
 
</pre>
 
</pre>
  
== Cirkulation / Exemplar ==
+
== Översättningar / Svenska ==
 
 
'''Markerar raden med det aktuella exemplaret efter sökt streckkod.'''
 
 
 
[[Fil:Markerarad.PNG]]
 
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
// *************************************************************************************
   // - Cirkulation
+
   // - Översättningar / Svenska
 
   //
 
   //
  // Markerar raden med det aktuella exemplaret efter sökt streckkod
 
  // ( Kompatibel med 20.11 )
 
  
   $('#cat-search-block .submit').on('click', function() { // Vanlig katalogsökning
+
   $('label[for="mobile"]').text(function() {
    $('input[type="text"]').each(function() {
+
    return $(this).text().replace('Annan telefon', 'Mobiltelefon');
      var id = $(this).attr('id');
 
      var value = $(this).val();
 
      localStorage.setItem(id, value);
 
    });
 
 
   });
 
   });
  
   $('form[action="search.pl"] .btn').on('click', function() { // Avancerad sökning
+
   $('#circmessages h3').html(function() {
     $('input[type="text"]').each(function() {
+
     return $(this).html().replace('Till', 'Upplysningar');
      var value = $(this).val();
 
      if (value !== '') {
 
        localStorage.setItem('search-form', value);
 
      }
 
    });
 
 
   });
 
   });
  
   if ($('#catalog_detail').length) {
+
   $('#printquickslip').text(function() {
    $('td a[href^="/cgi-bin/koha/catalogue/moredetail.pl"]').text(function() {
+
    return $(this).text().replace('Skriv ut snabbkvitto', 'Skriv ut endast nya lån');
      var storedsearch = localStorage.getItem('search-form');
+
  });
      if ($(this).text() == storedsearch) {
 
        $(this).closest('tr').children().css('background-color', '#d4efb7');
 
        localStorage.removeItem('search-form');
 
      }
 
    });
 
  };
 
 
 
  
 
</pre>
 
</pre>
  
== Exemplar / Nytt exemplar ==
+
== Katalog / Sortering ==
  
'''Lägger in taggen #additema så fokus hamnar på exemplarinläggningen vid Nytt exemplar.'''
+
'''Sortera biblioteken i träfflistan i alfabetisk ordning.'''
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
  // *************************************************************************************
   // - Exemplar
+
   // - Katalog
 
   //
 
   //
   // Lägger in taggen #additema så fokus hamnar på ememplarinläggningen vid Nytt exemplar
+
   // Sortera biblioteken i träfflistan i alfabetisk ordning
 +
  // ver 1
 
   // ( Kompatibel med 20.11 )
 
   // ( Kompatibel med 20.11 )
  
   $('#cataloguing_additem_newitem #f').attr('action', '/cgi-bin/koha/cataloguing/additem.pl#additema');
+
   $(".availability ul").each(function() {
 
+
    $(this).html(
 +
      $(this).children("li").sort(function(a, b) {
 +
        return $(a).text().toUpperCase().localeCompare(
 +
          $(b).text().toUpperCase());
 +
      })
 +
    );
 +
  });
 +
 
 
</pre>
 
</pre>
  
== Katalog / Resultat ==
+
== Katalog / Tillgängligt ==
  
'''Visa fler/färre resultatsidan, Märker även tillgängligheten med grön/röd.'''
+
'''Markera "Tillgänglig" med grönt detaljsidan.'''
  
[[Fil:visaflerfarre.PNG]]
+
[[Fil:Grontillganglig.PNG]]
  
 
<pre>
 
<pre>
  
  // *************************************************************************************
+
// *************************************************************************************
   // - Katalog / Resultat / Listor
+
   // - Katalog
 
   //
 
   //
   // Visa fler/färre resultatsidan och på listor
+
   // Markera "Tillgänglig" med grönt detaljsidan
  // Märker även tillgängligheten med grön/röd
+
   // ver 1
   // ver 3.3
 
 
   // ( Kompatibel med 20.11 )
 
   // ( Kompatibel med 20.11 )
  
   if ($('#catalog_results').length) {
+
   $('#bibliodetails .status').each(function() {
     if ($('.logged-in-branch-name:first()').text().length > 0) {
+
     if ($(this).text().indexOf('Tillgänglig') > -1 | $(this).text().indexOf('Available') > -1) {
       var loggedinbranch = $('.logged-in-branch-name:first()').text();
+
       $(this).css('color', 'green');
      localStorage.setItem('loggedinbranch', loggedinbranch);
 
 
     };
 
     };
 +
  });
  
    $('.availability').each(function() {
 
      var LiN = $(this).find('li').length;
 
  
      if (LiN > 0) {
+
</pre>
        $('li', this).hide().addClass('toggleable');
 
        $(this).append('<span class="more">Visa fler...</span>');
 
      }
 
    });
 
  
    $('#lists_shelves #searchresults td:nth-child(5)').each(function() {
+
== Låntagare / Dölj fält ==
      var LiN = $(this).find('li').length;
+
 
 +
'''Göm Alternativ adress och Mer information som standard vid låntagaranmälan'''
  
      if (LiN > 1) {
+
<pre>
        $('li', this).hide().addClass('toggleable');
 
        $(this).append('<span class="more">Visa fler...</span>');
 
      }
 
    });
 
  
    $('.availability li').each(function() {
+
// *************************************************************************************
      var loggedinbranch = $('.logged-in-branch-name:first()').text();
+
  // - Låntagare
      if ($(this).text().indexOf(loggedinbranch) > -1) {
+
  //
 +
  // Göm Alternativ adress och Mer information som standard vid låntagaranmälan
 +
  // ver 2.1
 +
  // ( Kompatibel med 20.11 )
  
        $(this).removeClass('toggleable').show();
+
  $('#memberentry_address ol, #memberentry_patron_attributes ol').hide();
  
        if ($(this).parent().prev().hasClass('status') | $(this).parent().prev().hasClass('unavailable')) {
+
</pre>
          $(this).css('background', '#ffe7e7');
 
        } else {
 
          $(this).css('background', '#d4efb7');
 
        };
 
  
        // Karlsborg - Undenäs - Mölltorp
+
== Katalog / Resultat ==
  
        if (loggedinbranch.indexOf('Karlsborg') > -1 | loggedinbranch.indexOf('Undenäs') > -1 | loggedinbranch.indexOf('Mölltorp') > -1) {
+
'''Satsraderingsknapp på resultatsidan'''
          $('.availability li').each(function() {
 
            if ($(this).text().indexOf('Karlsborg') > -1 | $(this).text().indexOf('Undenäs') > -1 | $(this).text().indexOf('Mölltorp') > -1) {
 
              $(this).removeClass('toggleable').show();
 
  
              if ($(this).parent().prev().hasClass('status') | $(this).parent().prev().hasClass('unavailable')) {
+
[[Fil:Satsradering i resultat.JPG]]
                $(this).css('background', '#ffe7e7');
 
              } else {
 
                $(this).css('background', '#d4efb7');
 
              };
 
            };
 
          });
 
        };
 
  
        // Tidaholm - KVA
+
<pre>
  
        if (loggedinbranch.indexOf('Tidaholm') > -1) {
+
// *************************************************************************************
          $('.availability li').each(function() {
+
  // - Katalog / Resultat
            if ($(this).text().indexOf('Tidaholm') > -1) {
+
  //
              $(this).removeClass('toggleable').show();
+
  // Satsraderingsknapp på resultatsidan
 +
  // ver 1
 +
  // 2019-05-13
 +
  // ( Kompatibel med 20.11 )
  
              if ($(this).parent().prev().hasClass('status') | $(this).parent().prev().hasClass('unavailable')) {
+
  if ($('#catalog_results').length) {
                $(this).css('background', '#ffe7e7');
 
              } else {
 
                $(this).css('background', '#d4efb7');
 
              };
 
            };
 
          });
 
        };
 
      };
 
    });
 
  
     $('.availability, #lists_shelves #searchresults td:nth-child(5)').on('click', '.more', function() {
+
     $('#selection_ops').append('<div class="btn-group"><button id="deleteposts" class="btn btn-default btn-xs" type="submit"><i class="fa fa-trash"></i> Radera</button></div>');
      if ($(this).hasClass('less')) {
 
        $(this).text('Visa fler...').removeClass('less');
 
      } else {
 
        $(this).text('Visa färre...').addClass('less');
 
      }
 
      $(this).parent().children('ul').children('li.toggleable').slideToggle("fast");
 
    });
 
  };
 
  
 +
    $('#deleteposts').on('click', function() {
  
</pre>
+
      var selIDs = [];
 +
      var link = 'https://' + window.location.hostname + '/cgi-bin/koha/tools/batch_delete_records.pl?recordnumber_list=';
  
== Övergripande / Genvägar ==
+
      $('.selection').each(function() {
 +
        if ($(this).is(':checked')) {
 +
          selIDs.push($(this).attr('value'));
 +
        };
 +
      });
  
'''När man trycker på Pause-Break knappen laddas kohas startsida.'''
+
      for (i = 0; i < selIDs.length; i++) {
 +
        link = link + selIDs[i] + '%0D%0A';
 +
      }
 +
 
 +
      link = link.substring(0, link.length - 6) + '&op=list';
 +
 
 +
      if (selIDs.length > 0) {
 +
        window.open(link);
 +
      } else {
 +
        alert('Välj vilka poster du vill radera först...');
 +
      };
 +
    });
 +
  };
 +
</pre>
 +
 
 +
== Periodika / Spara ==
 +
 
 +
'''Spara exemplar när man drar streckkoden'''
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
// *************************************************************************************
   // - Övergripande
+
   // - Periodika
 
   //
 
   //
   // When Pause-Break button is pressed it will return to main page
+
   // Vid registrering av nytt exemplar så får man frågan om man vill spara ifall man drar streckkoden.
 +
  // Man behöver alltså inte klicka på knappen "Spara" vid registrering av exemplar med streckkod.
 +
  // ver 1.1
 +
  // 2019-12-09
 
   // ( Kompatibel med 20.11 )
 
   // ( Kompatibel med 20.11 )
  
   document.onkeydown = function keypress(e) {
+
   if ($('#ser_serials-edit').length) {
    e = (e || window.event);
+
 
    if (e.keyCode == 19) {
+
    $('input[id^="tag_952_subfield_p"]').each(function() {
      try {
+
      $(this).keypress(function(event) {
        e.preventDefault();
+
        var keycode = event.keyCode || event.which;
      } //Non-IE
+
        if (keycode == '13') {
      catch (x) {
+
          if ($(this).val()) {
        e.returnValue = false;
+
            var r = confirm('Vill du spara?');
       } //IE (verkade inte fungera!)
+
            if (r == true) {
      window.location.href = "https://" + window.location.hostname;
+
              $('.action input[type="submit"]').trigger('click');
     };
+
            }
 +
          }
 +
        }
 +
       });
 +
     });
 
   }
 
   }
  
 +
</pre>
  
</pre>
+
== Katalog / Exemplar ==
 +
 
 +
'''Knapp för uppdatera datum vid exemplarsredigering'''
  
== Översättningar / Svenska ==
+
[[Fil:uppdatera knapp.JPG]]
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
  // *************************************************************************************
   // - Översättningar / Svenska
+
   // - Katalog / Exemplar
 
   //
 
   //
 +
  // Date acquired - Uppdatera-knapp
 +
  // ver 1
 +
  // 2019-05-21
 +
  // ( Kompatibel med 20.11 )
  
   $('label[for="mobile"]').text(function() {
+
   if ($('#cat_additem').length) {
    return $(this).text().replace('Annan telefon', 'Mobiltelefon');
+
    $('#subfield952d .buttonDot').each(function() {
   });
+
      $(this).html('<button type="button">Uppdatera</button>')
 +
    });
 +
   };
  
  $('#circmessages h3').html(function() {
+
</pre>
    return $(this).html().replace('Till', 'Upplysningar');
 
  });
 
  
  $('#printquickslip').text(function() {
+
== Övergripande / Katalog ==
    return $(this).text().replace('Skriv ut snabbkvitto', 'Skriv ut endast nya lån');
 
  });
 
  
</pre>
+
'''Klickbar lista över senaste besökta katalogposter'''
  
== Katalog / Sortering ==
+
[[Fil:senaste poster.JPG]]
 
 
'''Sortera biblioteken i träfflistan i alfabetisk ordning.'''
 
  
 
<pre>
 
<pre>
  
 
   // *************************************************************************************
 
   // *************************************************************************************
   // - Katalog
+
   // - Låntagare / Registrering
 
   //
 
   //
   // Sortera biblioteken i träfflistan i alfabetisk ordning
+
   // Bekräfta E-postadress vid registrering
   // ver 1
+
   // ver 1.4
   // ( Kompatibel med 20.11 )
+
  // 2022-10-12
 +
   // Kompatibelt med 22.05
 +
 
 +
  function emailVal() {
  
  $(".availability ul").each(function() {
+
    $('<br /><input type="text" id="email_2" name="email_2" size="45" style="margin-top:6px" value="" placeholder="Ange e-postadress igen..." class="decapitalizer noEnterSubmit" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off>').insertAfter('#email');
     $(this).html(
+
     if ($('#email').val().length && $('#email_2').val().length) {
      $(this).children("li").sort(function(a, b) {
+
      document.getElementById("saverecord").disabled = true;
        return $(a).text().toUpperCase().localeCompare(
+
    }
          $(b).text().toUpperCase());
+
    if ($('#email').val().length) {
       })
+
 
    );
+
      $('#email_2').val($('#email').val());
  });
+
       $('#email_2').css('background','lightgreen');
  
</pre>
+
      if ($('#email').val() != $('#email_2').val()) {
 +
        document.getElementById("saverecord").disabled = true;
 +
      } else {
 +
        document.getElementById("saverecord").disabled = false;
 +
        $('#email').keyup(function() {
 +
          $('#email_2').attr('value','');
 +
          document.getElementById("saverecord").disabled = true;
 +
          $('#email_2').css('background','#f8b7b7');
 +
          $('#email_2').attr('value','');
 +
        });
 +
  /*
 +
        $('#email_2').remove();
 +
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
 +
  */
 +
      }
 +
    }
  
== Katalog / Tillgängligt ==
+
    $('#email_2').keyup(function() {
 +
      var email1 = $('#email').val();
 +
      var email2 = $('#email_2').val();
 +
      if (email1 == email2) {
 +
        $('#email_2').css('background','lightgreen');
 +
        document.getElementById("saverecord").disabled = false;
 +
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
 +
        $('#email_2').remove();
  
'''Markera "Tillgänglig" med grönt på detaljsidan.'''
+
      } else {
 +
        $('#email_2').css('background','#f8b7b7');
 +
        document.getElementById("saverecord").disabled = true;
 +
      }
 +
    });
 +
  }
  
[[Fil:Grontillganglig.PNG]]
 
  
<pre>
+
  if ($('#pat_memberentrygen').length) {
 +
    var queryString = window.location.search;
 +
    var qstring = new URLSearchParams(queryString);
 +
    var add = qstring.get('op');
  
// *************************************************************************************
+
    if (add == 'add') {
  // - Katalog
+
      $('#email').attr('autocomplete','off');
  //
+
      $('#email').val('').change();
  // Markera "Tillgänglig" med grönt på detaljsidan
+
     }
  // ver 1
 
  // ( Kompatibel med 20.11 )
 
 
 
  $('#bibliodetails .status').each(function() {
 
    if ($(this).text().indexOf('Tillgänglig') > -1 | $(this).text().indexOf('Available') > -1) {
 
      $(this).css('color', 'green');
 
     };
 
  });
 
  
 +
    $('#email').val().length == -1 ? emailVal() : $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
 +
    /*
 +
    if ($('#email').val().length == -1) {
 +
      emailVal();
 +
    } else {
 +
      $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
 +
    }
 +
    */
 +
    $('#email').keyup(function() {
 +
      $('#email_2').attr('value','');
 +
      if ($('#emailOK').length) {
 +
        $('#emailOK').remove();
 +
        emailVal();
 +
      }
 +
    });
 +
  }
  
 
</pre>
 
</pre>
  
== Låntagare / Dölj fält ==
+
'''OBS detta stycker behöver läggas in under IntranetUserCSS'''
 
 
'''Göm Alternativ adress och Mer information som standard vid låntagaranmälan'''
 
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
/* Stilmall för Senaste poster-funktion */
  // - Låntagare
 
  //
 
  // Göm Alternativ adress och Mer information som standard vid låntagaranmälan
 
  // ver 2.1
 
  // ( Kompatibel med 20.11 )
 
  
   $('#memberentry_address ol, #memberentry_patron_attributes ol').hide();
+
#lastposts {
 +
   font: 13px/1.22 arial,helvetica,clean,sans-serif;
 +
  padding: 5px 40px;
 +
}
  
</pre>
+
#posts-dropdown li {
 +
  background: unset;
 +
  border: unset;
 +
  width: 100%;
 +
}
  
== Katalog / Resultat ==
+
#posts-dropdown li a {
 +
  padding: 5px 20px;
 +
}
  
'''Satsraderingsknapp på resultatsidan'''
+
.bType {
 +
  color: crimson;
 +
}
  
[[Fil:Satsradering i resultat.JPG]]
+
.bIsbn {
 +
  padding-left: 43px;
 +
  font-size: smaller;
 +
  width: 150px !important;
 +
  display: inline-block;
 +
}
  
<pre>
+
.bPub {
 +
  font-size: smaller;
 +
  padding-left: 15px;
 +
}
  
// *************************************************************************************
+
/* */
  // - Katalog / Resultat
 
  //
 
  // Satsraderingsknapp på resultatsidan
 
  // ver 1
 
  // 2019-05-13
 
  // ( Kompatibel med 20.11 )
 
  
  if ($('#catalog_results').length) {
 
  
    $('#selection_ops').append('<div class="btn-group"><button id="deleteposts" class="btn btn-default btn-xs" type="submit"><i class="fa fa-trash"></i> Radera</button></div>');
+
.more {
 +
  color:red;
 +
  cursor:pointer;
 +
}
  
    $('#deleteposts').on('click', function() {
+
.timestamps {
 +
  color:red;
 +
  padding-right:10px;
 +
}
  
      var selIDs = [];
+
#entryform legend {
      var link = 'https://' + window.location.hostname + '/cgi-bin/koha/tools/batch_delete_records.pl?recordnumber_list=';
+
  cursor:pointer;
 +
}
  
      $('.selection').each(function() {
+
#circ_needsconfirmation li{
        if ($(this).is(':checked')) {
+
  padding: 10px;
          selIDs.push($(this).attr('value'));
+
}
        };
 
      });
 
  
      for (i = 0; i < selIDs.length; i++) {
+
#circ_needsconfirmation #lastdate, #circ_needsconfirmation #lastdateloading {
        link = link + selIDs[i] + '%0D%0A';
+
  padding: 20px 0px;
      }
+
}
  
      link = link.substring(0, link.length - 6) + '&op=list';
+
#circ_needsconfirmation #lastdateloading {
 +
  color: #d00;
 +
}
  
      if (selIDs.length > 0) {
+
#oppettider {
        window.open(link);
+
  max-width: 400px;
      } else {
+
  margin: auto;
        alert('Välj vilka poster du vill radera först...');
+
}
      };
 
    });
 
  };
 
</pre>
 
  
== Periodika / Spara ==
+
#searchresults .status, #searchresults .unavailable {
 +
  padding: 10px 0 0;
 +
  font-weight: bold;
 +
}
  
'''Spara exemplar när man drar streckkoden'''
+
.editmsg {
 +
  padding: 5px 0px 5px 10px;
 +
}
  
<pre>
+
.bcopy, .breturn {
 +
  margin: 0 5px 0 0;
 +
}
  
// *************************************************************************************
 
  // - Periodika
 
  //
 
  // Vid registrering av nytt exemplar så får man frågan om man vill spara ifall man drar streckkoden.
 
  // Man behöver alltså inte klicka på knappen "Spara" vid registrering av exemplar med streckkod.
 
  // ver 1.1
 
  // 2019-12-09
 
  // ( Kompatibel med 20.11 )
 
  
   if ($('#ser_serials-edit').length) {
+
#hold-found2 .print {
 +
   background-image: linear-gradient(to bottom, #00dd00 0, #009900 100%);
 +
  color: #fff;
 +
  text-shadow: none;
 +
}
 +
 
 +
#hold-found2 .print:hover, #hold-found2 .print:focus  {
 +
  background-color: #006000;
 +
}
  
    $('input[id^="tag_952_subfield_p"]').each(function() {
 
      $(this).keypress(function(event) {
 
        var keycode = event.keyCode || event.which;
 
        if (keycode == '13') {
 
          if ($(this).val()) {
 
            var r = confirm('Vill du spara?');
 
            if (r == true) {
 
              $('.action input[type="submit"]').trigger('click');
 
            }
 
          }
 
        }
 
      });
 
    });
 
  }
 
  
</pre>
 
  
== Katalog / Exemplar ==
+
.hiddenbutton {
 +
  float: inline-end;
 +
}
  
'''Knapp för uppdatera datum vid exemplarsredigering'''
 
  
[[Fil:uppdatera knapp.JPG]]
+
.fjpostbox {
 +
  background-color: gold;
 +
  padding: 6px 20px 10px 10px;
 +
  margin-left: 5px;
 +
  border-radius: 5px;
 +
  float:left;
 +
}
  
<pre>
+
.bcSel {
 +
  background-color: gold;
 +
}
  
  // *************************************************************************************
+
.shelvingloc {
  // - Katalog / Exemplar
+
   color: olive;
   //
+
   white-space: nowrap;
   // Date acquired - Uppdatera-knapp
+
   display: block;
  // ver 1
+
}
   // 2019-05-21
 
  // ( Kompatibel med 20.11 )
 
  
  if ($('#cat_additem').length) {
+
.datelastseen {
    $('#subfield952d .buttonDot').each(function() {
+
  white-space: nowrap;
      $(this).html('<button type="button">Uppdatera</button>')
+
}
    });
 
  };
 
  
 
</pre>
 
</pre>
  
== Övergripande / Katalog ==
+
== Låntagare / Registrering ==
  
'''Klickbar lista över senaste besökta katalogposter'''
+
'''Extra fält för att bekräfta e-post adress och undvika felstavningar'''
  
[[Fil:senaste poster.JPG]]
+
[[Fil:bekräfta e-post.JPG]]
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
  // *************************************************************************************
   // - Övergripande
+
   // - Låntagare / Registrering
 
   //
 
   //
   // Senaste katalogposter-lista
+
   // Bekräfta E-postadress vid registrering
   // ver 1.2
+
   // ver 1.4
   // 2020-03-11
+
   // 2022-10-12
   // Kompatibel med 20.11
+
   // Kompatibelt med 22.05
  Date.prototype.addDays = function(days) {
 
    var date = new Date(this.valueOf());
 
    date.setDate(date.getDate() + days);
 
    return date;
 
  };
 
  
 +
  function emailVal() {
  
  var midnight = new Date();
+
    $('<br /><input type="text" id="email_2" name="email_2" size="45" style="margin-top:6px" value="" placeholder="Ange e-postadress igen..." class="decapitalizer noEnterSubmit" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off>').insertAfter('#email');
  midnight.setHours(23, 59, 59, 0);
+
    if ($('#email').val().length && $('#email_2').val().length) {
  midnight = midnight.addDays(3); // Spara i 3 dagar
+
      document.getElementById("saverecord").disabled = true;
 +
    }
 +
    if ($('#email').val().length) {
 +
 
 +
      $('#email_2').val($('#email').val());
 +
      $('#email_2').css('background','lightgreen');
  
  function checkCookies() {
+
       if ($('#email').val() != $('#email_2').val()) {
    try {
+
         document.getElementById("saverecord").disabled = true;
       if (($.cookie('bTitles').split(',').length + $.cookie('bLinks').split(',').length + $.cookie('bTimestamps').split(',').length + $.cookie('bTypes').split(',').length + $.cookie('bIsbns').split(',').length + $.cookie('bPubs').split(',').length) / 6 != $.cookie('bTitles').split(',').length) {
 
         console.log('Rensat!');
 
 
       } else {
 
       } else {
         console.log('Listan är felfri!');
+
         document.getElementById("saverecord").disabled = false;
      };
+
        $('#email').keyup(function() {
    } catch (err) {
+
          $('#email_2').attr('value','');
      $.removeCookie('bTitles', {
+
          document.getElementById("saverecord").disabled = true;
        path: '/'
+
          $('#email_2').css('background','#f8b7b7');
      });
+
          $('#email_2').attr('value','');
      $.removeCookie('bLinks', {
+
        });
        path: '/'
+
  /*
      });
+
        $('#email_2').remove();
      $.removeCookie('bTypes', {
+
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
        path: '/'
+
  */
      });
+
       }
      $.removeCookie('bIsbns', {
 
        path: '/'
 
      });
 
      $.removeCookie('bPubs', {
 
        path: '/'
 
      });
 
      $.removeCookie('bTimestamps', {
 
        path: '/'
 
       });
 
 
     }
 
     }
  };
 
  
  if ($('#catalog_detail').length) {
+
    $('#email_2').keyup(function() {
 +
      var email1 = $('#email').val();
 +
      var email2 = $('#email_2').val();
 +
      if (email1 == email2) {
 +
        $('#email_2').css('background','lightgreen');
 +
        document.getElementById("saverecord").disabled = false;
 +
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
 +
        $('#email_2').remove();
  
    var cookiedookie = "Cookies Enabled: " + navigator.cookieEnabled;
+
      } else {
     console.log(cookiedookie);
+
        $('#email_2').css('background','#f8b7b7');
 +
        document.getElementById("saverecord").disabled = true;
 +
      }
 +
     });
 +
  }
  
    var bibnr = $('#menu a:first').attr('href');
 
    bibnr = bibnr.slice(bibnr.indexOf('=') + 1);
 
  
    var title = $('.title').text().replace(/\s+/g, " ");
+
  if ($('#pat_memberentrygen').length) {
     title = title.replace(/,/g, " ");
+
    var queryString = window.location.search;
 +
    var qstring = new URLSearchParams(queryString);
 +
     var add = qstring.get('op');
  
     var type = $('.results_summary.type').text();
+
     if (add == 'add') {
    type = type.slice(type.indexOf(' ')).trim();
+
      $('#email').attr('autocomplete','off');
 +
      $('#email').val('').change();
 +
    }
  
     var isbn = $(".results_summary.isbn").text().slice(5, -1);
+
     $('#email').val().length == -1 ? emailVal() : $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
    isbn = isbn.replace('-', '');
+
    /*
     if (isbn.indexOf(';') > -1) {
+
     if ($('#email').val().length == -1) {
       isbn = isbn.replace(';', ' ').replace(/\s+/g, ' ').trim();
+
       emailVal();
       isbnarr = isbn.split(' ');
+
    } else {
      isbn = isbnarr[0].toString();
+
      $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
    };
+
    }
    isbn = isbn.replace(/\D/g, '');
+
    */
    if (isbn.length < 1) {
+
    $('#email').keyup(function() {
      isbn = '(ej angiven)';
+
       $('#email_2').attr('value','');
     };
+
      if ($('#emailOK').length) {
 +
        $('#emailOK').remove();
 +
        emailVal();
 +
      }
 +
     });
 +
  }
  
    if ($('.results_summary.publisher').length) {
+
</pre>
      var publisher = $('.results_summary.publisher').text();
 
      publisher = publisher.replace(/,/g, " ").slice(publisher.indexOf(':') + 2);
 
    } else if ($('.results_summary .label')) {
 
      $('.results_summary .label').each(function(publisher) {
 
        var text = $(this).text();
 
        if (text.indexOf('Förläggare') > -1 || text.indexOf('Publisher') > -1) {
 
          var publisher = $(this).parent().text();
 
          publisher = publisher.replace(/,/g, " ").slice(publisher.indexOf(':') + 2);
 
          console.log(publisher);
 
          sessionStorage.setItem('pub', publisher);
 
        };
 
      });
 
      var publisher = sessionStorage.getItem('pub');
 
    } else {
 
      var publisher = '(ej angiven)';
 
    };
 
  
    document.cookie = "bTitle=" + title + "; expires=" + midnight + "; path=/ ";
+
== Plocklista ==
    document.cookie = "bLink=" + bibnr + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "bType=" + type + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "bIsbn=" + isbn + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "bPub=" + publisher + "; expires=" + midnight + "; path=/ ";
 
  
    checkCookies();
+
'''Plocklista med omslagsbilder'''
    savePost();
 
  };
 
  
 +
[[Fil:plocklista2.JPG]]
  
  function savePost() { // Spara ner katalogpost i listan ifall den inte finns med förut
+
<pre>
  
    var d = new Date();
+
  // *************************************************************************************
    time = d.toTimeString();
+
  // - Plocklista
    time = time.split(' ')[0];
+
  //
 +
  // Plocklista med omslagsbilder
 +
  // ver 1.1
 +
  // 2021-06-07
 +
  // Kompatibelt med 20.11
  
    document.cookie = "bTimestamp=" + time + "; expires=" + midnight + "; path=/ ";
 
  
    var title = $.cookie('bTitle');
+
  function getImagePlocklista() {
     var bibnr = $.cookie('bLink');
+
     $('.hq-pubdata').each(function() {
    var type = $.cookie('bType');
+
      if ($(this).text().indexOf('ISBN:') > 0) {
    var isbn = $.cookie('bIsbn');
+
        var isbn = $(this).text();
    var pub = $.cookie('bPub');
+
        isbn = isbn.slice(isbn.indexOf('ISBN:') + 6);
    var time = $.cookie('bTimestamp');
+
        isbn = isbn.slice(0, isbn.indexOf('|')).replace(/\D/g, '');
 
+
        //console.log(isbn);
    if ($.cookie('bTitles')) {
+
        if (isbn.slice(0, 3) == '978') {
 
+
          var subfolder = isbn.slice(0, 6);
      var bTitles = $.cookie('bTitles').split(",");
+
         } else {
      var bLinks = $.cookie('bLinks').split(",");
+
          isbn = '978' + isbn.slice(0, -1);
      var bTimestamps = $.cookie('bTimestamps').split(",");
+
          var subfolder = isbn.slice(0, 6);
      var bTypes = $.cookie('bTypes').split(",");
+
          isbnNr = parseInt(isbn, 10);
      var bIsbns = $.cookie('bIsbns').split(",");
+
          var sum = 0;
      var bPubs = $.cookie('bPubs').split(",");
+
          for (var x = 0; x < isbn.length; x++) {
 
+
            if (x === 0) {
      if (bLinks.indexOf(bibnr) > -1) {
+
              sum = sum + parseInt(isbn[x], 10);
 
+
            } else if (x % 2 === 0) {
        var indexnr = $.inArray(bibnr, bLinks);
+
              sum = sum + parseInt(isbn[x], 10);
         bLinks.splice(indexnr, 1);
+
            } else {
        bTitles.splice(indexnr, 1);
+
              sum = sum + (parseInt(isbn[x], 10) * 3);
        bTimestamps.splice(indexnr, 1);
+
            }
        bTypes.splice(indexnr, 1);
+
          }
        bIsbns.splice(indexnr, 1);
+
          sum = 10 - (sum % 10);
        bPubs.splice(indexnr, 1);
+
          if (sum == 10) {
      };
+
            sum = 0;
    } else {
+
          }
      var bTitles = [];
+
          isbn = isbnNr.toString();
      var bLinks = [];
+
          isbn = isbn.concat(sum.toString());
      var bTimestamps = [];
+
        }
      var bTypes = [];
+
        if (isbn.length > 2) {
      var bIsbns = [];
+
          $(this).closest('tr').children('.hq-notes').append('<img class="coverIMG" src="http://bokinfo.se/Images/Products/Small/' + subfolder + '/' + isbn + '.jpg" style="max-height:120px;max-width:100px;">');
      var bPubs = [];
 
    };
 
 
 
    bTitles.unshift(title);
 
    bLinks.unshift(bibnr);
 
    bTimestamps.unshift(time);
 
    bTypes.unshift(type);
 
    bIsbns.unshift(isbn);
 
    bPubs.unshift(pub);
 
 
 
    if (bTitles.length > 15) {
 
      bTitles.pop();
 
      bLinks.pop();
 
      bTimestamps.pop();
 
      bTypes.pop();
 
      bIsbns.pop();
 
      bPubs.pop();
 
    };
 
 
 
    document.cookie = "bTitles=" + bTitles + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "bLinks=" + bLinks + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "bTimestamps=" + bTimestamps + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "bTypes=" + bTypes + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "bIsbns=" + bIsbns + "; expires=" + midnight + "; path=/ ";
 
    document.cookie = "bPubs=" + bPubs + "; expires=" + midnight + "; path=/ ";
 
 
 
  };
 
 
 
  // Knapp för att visa senaste besökta katalogposter
 
 
 
  if ($.cookie('bLinks')) {
 
    $('#header_search .ui-tabs-nav').append('<span> </span><div class="btn-group" style="padding:5px;"><a href="" id="lastposts" class="dropdown-toggle" data-toggle="dropdown">Senaste poster<span class="caret"></span></a><ul id="posts-dropdown" class="dropdown-menu"></ul></div>');
 
  };
 
 
 
 
 
  $('#lastposts').on('click', function(event) { // Öppna listan med senaste katalogposter
 
 
 
    var names = $.cookie('bTitles').split(",");
 
    var links = $.cookie('bLinks').split(",");
 
    var times = $.cookie('bTimestamps').split(",");
 
    var types = $.cookie('bTypes').split(",");
 
    var isbns = $.cookie('bIsbns').split(",");
 
    var pubs = $.cookie('bPubs').split(",");
 
    var list = $("#posts-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/catalogue/detail.pl?biblionumber=' + links[x] + '"><span class="timestamps">' + times[x].slice(0, 5) + ' </span>' + names[x] + ' <span class="bType"> - ' + types[x] + '</span><br /><span class="bIsbn">ISBN: ' + isbns[x] + '</span><span class="bPub">Utgivning: ' + pubs[x] + '</span></a></li>');
 
        if (x == names.length - 1) {
 
          $(this).appendTo(parent);
 
 
         }
 
         }
 +
        $(".coverIMG").on("error", function() {
 +
          //        $(this).append('<span class="no-image">Ingen omslagsbild finns tillgänglig</span>');
 +
          $(this).remove();
 +
        });
 
       }
 
       }
      $(this).append('<li><a href="" id="clearposts" style="width:100%"><span><i class="fa fa-trash"></i> Rensa listan</span></a></li>');
 
      $('#clearposts').on('click', function(event) { // Rensa listan
 
        event.preventDefault();
 
        $.removeCookie('bTitle', {
 
          path: '/'
 
        });
 
        $.removeCookie('bTitles', {
 
          path: '/'
 
        });
 
        $.removeCookie('bLink', {
 
          path: '/'
 
        });
 
        $.removeCookie('bLinks', {
 
          path: '/'
 
        });
 
        $.removeCookie('bType', {
 
          path: '/'
 
        });
 
        $.removeCookie('bTypes', {
 
          path: '/'
 
        });
 
        $.removeCookie('bIsbn', {
 
          path: '/'
 
        });
 
        $.removeCookie('bIsbns', {
 
          path: '/'
 
        });
 
        $.removeCookie('bPub', {
 
          path: '/'
 
        });
 
        $.removeCookie('bPubs', {
 
          path: '/'
 
        });
 
        $.removeCookie('bTimestamp', {
 
          path: '/'
 
        });
 
        $.removeCookie('bTimestamps', {
 
          path: '/'
 
        });
 
        $('#lastposts').hide();
 
      });
 
 
     });
 
     });
   });
+
   }
 +
 
 +
 
 +
  if ($('#circ_view_holdsqueue').length) {
 +
    waitForEl('#holdst tbody', function() {
 +
      //      $('#holdst').css('max-width','1000px');
 +
      getImagePlocklista();
 +
    });
 +
  }
  
 
</pre>
 
</pre>
  
== Låntagare / Registrering ==
+
== Övergripande / Plocklista ==
  
'''Extra fält för att bekräfta e-post adress och undvika felstavningar'''
+
'''Skriv ut knapp med omslagsbilder och checkbox för att exkludera egna reservationer'''
  
[[Fil:bekräfta e-post.JPG]]
+
[[Fil:plocklista3.JPG]]
  
 
<pre>
 
<pre>
  
  // *************************************************************************************
+
   // - Plocklista
   // - Låntagare / Registrering
 
 
   //
 
   //
   // Bekräfta E-postadress vid registrering
+
   // 1. "Skriv ut"-knapp som får med omslagsbilderna
 +
  // 2. Checkbox för att exkludera egna reservationer på hembiblioteket
 
   // ver 1.3
 
   // ver 1.3
   // 2019-10-30
+
   // 2023-02-24
   // Kompatibelt med 20.11
+
   // Kompatibelt med 22.05
  
   function emailVal() {
+
   if ($('#circ_view_holdsqueue').length) {
  
     $('<br /><input type="text" id="email_2" name="email_2" size="45" style="margin-top:6px" value="" placeholder="Ange e-postadress igen..." class="decapitalizer noEnterSubmit" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off>').insertAfter('#email');
+
     waitForEl('.dt-buttons', function() {
    if ($('#email').attr('value').length && $('#email_2').attr('value').length) {
 
      document.getElementById("saverecord").disabled = true;
 
    }
 
    if ($('#email').attr('value').length) {
 
  
       $('#email_2').attr('value', $('#email').attr('value'));
+
       $('#holdst_wrapper .dt-buttons').append('<button id="printqueue" class="dt-button buttons-collection buttons-print" tabindex="0" type="button" aria-controls="holdst" href="#" title="" data-original-title="Skriv ut sidan"><span><i class="fa fa-lg fa-print"></i> <span class="dt-button-text">Skriv ut</span></span></button><label><input id="remOwnRes" type="checkbox" style="margin-left:10px;"> Exkludera lokala reservationer</label>');
      $('#email_2').css('background', 'lightgreen');
 
  
       if ($('#email').attr('value') != $('#email_2').attr('value')) {
+
       $('#printqueue').on('click', function() {
        document.getElementById("saverecord").disabled = true;
+
        $('aside').hide();
      } else {
+
         var width = $('#holdst').css('width');
         document.getElementById("saverecord").disabled = false;
+
        $('#holdst').css('width','unset');
        $('#email').keyup(function() {
+
        $('.hq-patroncategory').hide();
          $('#email_2').attr('value', '');
+
        window.print();
          document.getElementById("saverecord").disabled = true;
+
        $('aside').show();
          $('#email_2').css('background', '#f8b7b7');
+
        $('#holdst').css('width', width);
          $('#email_2').attr('value', '');
+
         $('.hq-patroncategory').show();
         });
+
       });
       }
 
    }
 
  
    $('#email_2').keyup(function() {
+
       var origText = $('.results').text();
       var email1 = $('#email').attr('value');
 
      var email2 = $('#email_2').attr('value');
 
      if (email1 == email2) {
 
        $('#email_2').css('background', 'lightgreen');
 
        document.getElementById("saverecord").disabled = false;
 
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
 
        $('#email_2').remove();
 
  
       } else {
+
       $('#remOwnRes').on('click', function() {
        $('#email_2').css('background', '#f8b7b7');
+
         var resCount = 0;
         document.getElementById("saverecord").disabled = true;
 
      }
 
    });
 
  }
 
  
 +
        if ($('#remOwnRes').is(':checked')) {
 +
          $('#holdst tbody .hq-sendto').each(function() {
 +
            if ($(this).text() == $('.logged-in-branch-name:first').text()) {
 +
              $(this).parent('tr').hide();
 +
              resCount = resCount + 1;
 +
            }
 +
          });
 +
          $('.results').text($('.results').text() + ' (Varav ' + resCount + ' exemplar är dolda lokala reservationer)');
 +
        }
 +
        if ($('#remOwnRes').is(':unchecked')) {
 +
          $('#holdst tbody .hq-sendto').each(function() {
 +
            if ($(this).text() == $('.logged-in-branch-name:first').text()) {
 +
              $(this).parent('tr').show();
 +
            }
 +
          });
 +
          $('.results').text(origText);
 +
        }
 +
      });
 +
    });
  
   if ($('#pat_memberentrygen').length) {
+
   }
    if ($('#email').attr('value').length == -1) {
 
      emailVal();
 
    } else {
 
      $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
 
    };
 
 
 
    $('#email').keyup(function() {
 
      $('#email_2').attr('value', '');
 
      if ($('#emailOK').length) {
 
        $('#emailOK').remove();
 
        emailVal();
 
      };
 
    });
 
  };
 
  
 
</pre>
 
</pre>
  
== Plocklista ==
+
== Övergripande / Plocklista ==
  
'''Plocklista med omslagsbilder'''
+
'''Plocklista för inloggat bibliotek'''
  
[[Fil:plocklista2.JPG]]
+
[[Fil:plocklista.JPG]]
  
 
<pre>
 
<pre>
  
  // *************************************************************************************
 
 
   // - Plocklista
 
   // - Plocklista
 
   //
 
   //
   // Plocklista med omslagsbilder
+
   // 1. "Skriv ut"-knapp som får med omslagsbilderna
   // ver 1.1
+
  // 2. Checkbox för att exkludera egna reservationer på hembiblioteket
   // 2021-06-07
+
   // ver 1.3
   // Kompatibelt med 20.11
+
   // 2023-02-24
 +
   // Kompatibelt med 22.05
  
 +
  if ($('#circ_view_holdsqueue').length) {
  
  function getImagePlocklista() {
+
    waitForEl('.dt-buttons', function() {
    $('.hq-pubdata').each(function() {
+
 
       if ($(this).text().indexOf('ISBN:') > 0) {
+
      $('#holdst_wrapper .dt-buttons').append('<button id="printqueue" class="dt-button buttons-collection buttons-print" tabindex="0" type="button" aria-controls="holdst" href="#" title="" data-original-title="Skriv ut sidan"><span><i class="fa fa-lg fa-print"></i> <span class="dt-button-text">Skriv ut</span></span></button><label><input id="remOwnRes" type="checkbox" style="margin-left:10px;"> Exkludera lokala reservationer</label>');
         var isbn = $(this).text();
+
 
         isbn = isbn.slice(isbn.indexOf('ISBN:') + 6);
+
       $('#printqueue').on('click', function() {
         isbn = isbn.slice(0, isbn.indexOf('|')).replace(/\D/g, '');
+
        $('aside').hide();
         //console.log(isbn);
+
         var width = $('#holdst').css('width');
         if (isbn.slice(0, 3) == '978') {
+
         $('#holdst').css('width','unset');
          var subfolder = isbn.slice(0, 6);
+
         $('.hq-patroncategory').hide();
         } else {
+
         window.print();
          isbn = '978' + isbn.slice(0, -1);
+
         $('aside').show();
          var subfolder = isbn.slice(0, 6);
+
        $('#holdst').css('width', width);
          isbnNr = parseInt(isbn, 10);
+
         $('.hq-patroncategory').show();
          var sum = 0;
+
      });
           for (var x = 0; x < isbn.length; x++) {
+
 
             if (x === 0) {
+
      var origText = $('.results').text();
               sum = sum + parseInt(isbn[x], 10);
+
 
            } else if (x % 2 === 0) {
+
      $('#remOwnRes').on('click', function() {
              sum = sum + parseInt(isbn[x], 10);
+
        var resCount = 0;
            } else {
+
 
               sum = sum + (parseInt(isbn[x], 10) * 3);
+
        if ($('#remOwnRes').is(':checked')) {
 +
           $('#holdst tbody .hq-sendto').each(function() {
 +
             if ($(this).text() == $('.logged-in-branch-name:first').text()) {
 +
               $(this).parent('tr').hide();
 +
               resCount = resCount + 1;
 
             }
 
             }
           }
+
           });
          sum = 10 - (sum % 10);
+
           $('.results').text($('.results').text() + ' (Varav ' + resCount + ' exemplar är dolda lokala reservationer)');
           if (sum == 10) {
 
            sum = 0;
 
          }
 
          isbn = isbnNr.toString();
 
          isbn = isbn.concat(sum.toString());
 
 
         }
 
         }
         if (isbn.length > 2) {
+
         if ($('#remOwnRes').is(':unchecked')) {
           $(this).closest('tr').children('.hq-notes').append('<img class="coverIMG" src="http://bokinfo.se/Images/Products/Small/' + subfolder + '/' + isbn + '.jpg" style="max-height:120px;max-width:100px;">');
+
           $('#holdst tbody .hq-sendto').each(function() {
 +
            if ($(this).text() == $('.logged-in-branch-name:first').text()) {
 +
              $(this).parent('tr').show();
 +
            }
 +
          });
 +
          $('.results').text(origText);
 
         }
 
         }
        $(".coverIMG").on("error", function() {
+
      });
          //        $(this).append('<span class="no-image">Ingen omslagsbild finns tillgänglig</span>');
 
          $(this).remove();
 
        });
 
      }
 
 
     });
 
     });
 +
 
   }
 
   }
  
 +
</pre>
  
   if ($('#circ_view_holdsqueue').length) {
+
== Periodika ==
     waitForEl('#holdst tbody', function() {
+
 
      //     $('#holdst').css('max-width','1000px');
+
'''Automatiskt fokus och markering på sökrutan/titel samt uppdateraknapp av datumet till dagens datum vid inleverans av exemplar'''
       getImagePlocklista();
+
 
 +
<pre>
 +
  // - Periodika
 +
  //
 +
  // Automatiskt fokus och markering på sökrutan/titel,
 +
  // samt uppdateraknapp av datumet till dagens datum vid inleverans av exemplar."
 +
  // Vid "klicka för lägga till exemplar" ställs markören automatiskt på streckkod
 +
  // ver 1.3
 +
  // 2023-02-04
 +
  // Kompatibelt med 22.05
 +
 
 +
  if ($('#ser_serials-home, #ser_serials-search, #ser_subscription-detail, #ser_serials-edit, #ser_serials-collection').length) {
 +
    $('#title_filter').focus();
 +
    $('#title_filter').select();
 +
  }
 +
 
 +
   if ($('#ser_serials-edit').length) {
 +
     $('#serials_edit tbody tr td:nth-child(2)').each(function() {
 +
      $(this).append('<a class="upDate"><i class="fa fa-refresh" aria-hidden="true"></i></a>');
 +
      $('.upDate').on('click', function() {
 +
        var today = new Date();
 +
        var dd = String(today.getDate()).padStart(2, '0');
 +
        var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
 +
        var yyyy = today.getFullYear();
 +
        today = yyyy + '-' + mm + '-' + dd;
 +
        //$(this).siblings('input').val(today);
 +
        //$(this).parent('td').siblings('td:nth-child(4)').children('input').val(today);
 +
      $(this).closest('tr').find('input[name="publisheddate"]').val(today).change();
 +
        $(this).closest('tr').find('input[name="planneddate"]').val(today).change();
 +
      });
 +
    });
 +
  }
 +
 
 +
  if ($('#ser_serials-edit').length) {
 +
    $('a[id^=label]').on('click', function() {
 +
      $(this).parent().find('input[id^="tag_952_subfield_p"]').focus();
 +
       $(this).parent().find('input[id^="tag_952_subfield_p"]').select();
 
     });
 
     });
 
   }
 
   }
Rad 2 559: Rad 2 697:
 
</pre>
 
</pre>
  
== Övergripande / Plocklista ==
+
== Katalog / Katalogisering ==
  
'''Skriv ut knapp med omslagsbilder och checkbox för att exkludera egna reservationer'''
+
'''Automatisk ändring av frameworkcode vid vald itemtype'''
 
 
[[Fil:plocklista3.JPG]]
 
  
 
<pre>
 
<pre>
  
   // - Plocklista
+
   // - Katalog / Katalogisering
 
   //
 
   //
   // 1. "Skriv ut"-knapp som får med omslagsbilderna
+
   // Automatiskt ändring av Framworkcode vid vald itemtype
  // 2. Checkbox för att exkludera egna reservationer på hembiblioteket
 
 
   // ver 1.1
 
   // ver 1.1
   // 2021-06-07
+
   // 2020-01-23
   // Kompatibelt med 20.11
+
   // Kompatibelt med 22.05
  
   if ($('#circ_view_holdsqueue').length) {
+
   if ($('#cat_addbiblio').length) {
    waitForEl('.dt-buttons', function() {
 
      $('#holdst_wrapper .dt-buttons').append('<button id="printqueue" class="dt-button buttons-collection buttons-print" tabindex="0" type="button" aria-controls="holdst" href="#" title="" data-original-title="Skriv ut sidan"><span><i class="fa fa-lg fa-print"></i> <span class="dt-button-text">Skriv ut</span></span></button><label><input id="remOwnRes" type="checkbox" style="margin-left:10px;"> Exkludera lokala reservationer</label>');
 
  
       $('#printqueue').on('click', function() {
+
    function cfwk(frameworkcode) {
        window.print();
+
       $("#frameworkcode").val(frameworkcode);
      });
+
      Changefwk();
 +
    }
  
       var origText = $('.results').text();
+
    function chkFwc() {
 
+
       var fwcArray = [
      $('#remOwnRes').on('click', function() {
+
        ['BARNBOK', 'BKS'],
         var resCount = 0;
+
        ['BOK', 'BKS'],
 
+
        ['FILM', 'VR'],
         if ($('#remOwnRes').is(':checked')) {
+
        ['BARN LJUD', 'SR'],
           $('#holdst tbody .hq-sendto').each(function() {
+
        ['BARNMP3', 'SR'],
             if ($(this).text() == $('.logged-in-branch-name:first').text()) {
+
        ['MUSCDBARN', 'SR'],
               $(this).parent('tr').hide();
+
        ['BARN TIDSK', 'SER'],
              resCount = resCount + 1;
+
        ['BLURAY', 'VR'],
 +
        ['LJUDBOK', 'SR'],
 +
        ['MP3', 'SR'],
 +
        ['DAISY', 'DAIS'],
 +
        ['TIDSKRIFT', 'SER'],
 +
        ['VHS', 'VR'],
 +
         ['BARNTAL', 'DAIS']
 +
      ];
 +
 
 +
      for (i = 0; i < fwcArray.length; i++) {
 +
         if ($('select[id^="tag_942_subfield_c"]').find('option:selected').val() == fwcArray[i][0]) {
 +
           if ($('#frameworkcode').attr('value') == fwcArray[i][1]) {
 +
            console.log('Redan ändrad frameworkcode');
 +
          } else {
 +
             if ($("#frameworkcode").val() != 'FA') {
 +
               cfwk(fwcArray[i][1]);
 
             }
 
             }
           });
+
           }
          $('.results').text($('.results').text() + ' (Varav ' + resCount + ' exemplar är dolda lokala reservationer)');
 
 
         }
 
         }
        if ($('#remOwnRes').is(':unchecked')) {
+
      }
          $('#holdst tbody .hq-sendto').each(function() {
+
    }
            if ($(this).text() == $('.logged-in-branch-name:first').text()) {
+
 
              console.log('YEAH!');
+
    chkFwc();
              $(this).parent('tr').show();
+
 
            }
+
    $('select[id^="tag_942_subfield_c"]').change(function() {
          });
+
      if ($("#frameworkcode").val() != 'FA') {
          $('.results').text(origText);
+
        chkFwc();
        }
+
       }
       });
 
 
     });
 
     });
 
   }
 
   }
 +
 
</pre>
 
</pre>
  
== Övergripande / Plocklista ==
+
== Katalog / Exemplar ==
  
'''Plocklista för inloggat bibliotek'''
+
'''Kloning av exemplar'''
  
[[Fil:plocklista.JPG]]
+
[[Fil:kloning.JPG]]
 +
[[Fil:kloning2.JPG]]
  
 
<pre>
 
<pre>
  
// *************************************************************************************
+
   // - Katalog / Exemplar
   // - Övergripande
 
 
   //
 
   //
   // Plocklista för inloggat bibliotek
+
   // Kloning av exemplar
   // ver 1
+
   // ver 2
   // 2019-10-31
+
   // 2022-05-12
   // Kompatibelt med 20.11
+
   // Kompatibelt med 22.05
  
   $('<li><a href="" id="plock">Plocklista ()</a></li>').appendTo('#toplevelmenu');
+
   if ($('#catalog_detail').length) {
  $('#plock').attr('href', 'https://' + window.location.hostname + '/cgi-bin/koha/circ/view_holdsqueue.pl?branchlimit=' + $('.logged-in-branch-code:first').text() + '&run_report=1');
+
    $('.itemselection_actions').append('<a class="itemselection_action_clone" href="' + $('#newitem').attr('href') + '"><i class="fa fa-copy"></i> Klona valt exemplar</a>');
  $('#plock').text('Plocklista (' + $('.logged-in-branch-code:first').text() + ')');
+
    $('#bibliodetails input').change(function() {
 +
      $('#bibliodetails input:checkbox:checked').length > 1 ? $('.itemselection_action_clone').hide() : $('.itemselection_action_clone').show();
 +
    });
  
</pre>
+
    $('.itemselection_action_clone').on('click', function(event) {
 
+
      event.preventDefault();
== Periodika ==
+
      var itype = $('#bibliodetails input:checkbox:checked').parent().siblings('.itype').text().trim();
 +
      var homebranch = $('#bibliodetails input:checkbox:checked').parent().siblings('.homebranch').text().trim();
 +
      var shelvingloc = homebranch.slice(homebranch.indexOf('↳') + 1).trim();
 +
      homebranch = homebranch.slice(0, homebranch.indexOf('↳')).trim();
 +
      var collection = $('#bibliodetails input:checkbox:checked').parent().siblings('.homebranch').next('td').text().trim();
 +
      var itemcallnumber = $('#bibliodetails input:checkbox:checked').parent().siblings('.itemcallnumber').text().trim();
 +
      var iteminfo = {itype:itype, homebranch: homebranch, shelvingloc: shelvingloc, collection: collection, itemcallnumber: itemcallnumber};
 +
      var iteminfo = JSON.stringify(iteminfo);
  
'''Automatiskt fokus och markering på sökrutan/titel samt uppdateraknapp av datumet till dagens datum vid inleverans av exemplar'''
+
       sessionStorage.setItem('iteminfo', iteminfo);
 
+
       window.location = $('#newitem').attr('href');
<pre>
 
  // - Periodika
 
  //
 
  // Automatiskt fokus och markering på sökrutan/titel,
 
  // samt uppdateraknapp av datumet till dagens datum vid inleverans av exemplar.
 
  // ver 1
 
  // 2019-11-14
 
  // Kompatibelt med 20.11
 
 
 
  if ($('#ser_serials-home').length) {
 
    $('#title_filter').focus();
 
    $('#title_filter').select();
 
  }
 
 
 
  if ($('#ser_serials-edit').length) {
 
    $('#serials_edit tbody tr td:nth-child(2)').each(function() {
 
       $(this).append('<a class="upDate"><i class="fa fa-refresh" aria-hidden="true"></i></a>');
 
       $('.upDate').on('click', function() {
 
        var today = new Date();
 
        var dd = String(today.getDate()).padStart(2, '0');
 
        var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
 
        var yyyy = today.getFullYear();
 
        today = yyyy + '-' + mm + '-' + dd;
 
        $(this).siblings('input').attr('value', today);
 
        $(this).parent('td').siblings('td:nth-child(4)').children('input').attr('value', today);
 
      });
 
 
     });
 
     });
 
   }
 
   }
  
</pre>
+
  if ($('#cat_additem').length) {
 +
    if (sessionStorage.getItem("iteminfo") !== null) {
 +
      var iteminfo = JSON.parse(sessionStorage.getItem('iteminfo'));
  
== Katalog / Katalogisering ==
 
  
'''Automatisk ändring av frameworkcode vid vald itemtype'''
+
      $('#subfield952o input').val(iteminfo.itemcallnumber);
  
<pre>
+
      setTimeout(function() {
 +
 
 +
        $('select[id^="tag_952_subfield_8"]').children('option').each(function() {
 +
          if ($(this).text() == iteminfo.collection) {
 +
            $('select[id^="tag_952_subfield_8"]').val($(this).val()).trigger('change');
 +
          }
 +
        });
 +
 
 +
        $('select[id^="tag_952_subfield_c"]').children('option').each(function() {
 +
          if ($(this).text() == iteminfo.shelvingloc) {
 +
            $('select[id^="tag_952_subfield_c"]').val($(this).val()).trigger('change');
 +
          }
 +
        });
 +
 
 +
        $('select[id^="tag_952_subfield_y"]').children('option').each(function() {
 +
          if ($(this).text() == iteminfo.itype) {
 +
            $('select[id^="tag_952_subfield_y"]').val($(this).val()).trigger('change');
 +
          }
 +
        });
  
  // - Katalog / Katalogisering
+
        $('input[id^="tag_952_subfield_d"]').focus();
  //
+
        $('input[id^="tag_952_subfield_p"]').focus().select();
  // Automatiskt ändring av Framworkcode vid vald itemtype
 
  // ver 1.1
 
  // 2020-01-23
 
  // Kompatibelt med 20.11
 
  
  if ($('#cat_addbiblio').length) {
+
      }, 1000);
  
    function cfwk(frameworkcode) {
+
       sessionStorage.removeItem("iteminfo");
       $("#frameworkcode").val(frameworkcode);
 
      Changefwk();
 
 
     }
 
     }
 +
  }
 +
 +
</pre>
  
    function chkFwc() {
+
== Låntagare / Ny låntagare ==
      var fwcArray = [
+
 
        ['BARNBOK', 'BKS'],
+
'''Flytta fältet för mobiltelefon till överst'''
        ['BOK', 'BKS'],
 
        ['FILM', 'VR'],
 
        ['BARN LJUD', 'SR'],
 
        ['BARNMP3', 'SR'],
 
        ['MUSCDBARN', 'SR'],
 
        ['BARN TIDSK', 'SER'],
 
        ['BLURAY', 'VR'],
 
        ['LJUDBOK', 'SR'],
 
        ['MP3', 'SR'],
 
        ['DAISY', 'DAIS'],
 
        ['TIDSKRIFT', 'SER'],
 
        ['VHS', 'VR'],
 
        ['BARNTAL', 'DAIS']
 
      ];
 
  
      for (i = 0; i < fwcArray.length; i++) {
+
[[Fil:mobiltele.JPG]]
        if ($('select[id^="tag_942_subfield_c"]').find('option:selected').val() == fwcArray[i][0]) {
 
          if ($('#frameworkcode').attr('value') == fwcArray[i][1]) {
 
            console.log('Redan ändrad frameworkcode');
 
          } else {
 
            if ($("#frameworkcode").val() != 'FA') {
 
              cfwk(fwcArray[i][1]);
 
            }
 
          }
 
        }
 
      }
 
    }
 
  
    chkFwc();
+
<pre>
  
    $('select[id^="tag_942_subfield_c"]').change(function() {
+
  // - Låntagare / Ny låntagare
      if ($("#frameworkcode").val() != 'FA') {
+
  //
        chkFwc();
+
  // Flytta fältet för mobiltelefon till överst
      }
+
  // ver 1
    });
+
  // 2020-01-21
 +
  // Kompatibelt med 20.11
 +
 
 +
  if ($('#pat_memberentrygen').length) {
 +
    $('#memberentry_contact ol li:nth-child(3)').prependTo('#memberentry_contact ol');
 
   }
 
   }
  
 
</pre>
 
</pre>
  
== Katalog / Exemplar ==
+
== Övergripande / Sökning ==
  
'''Kloning av exemplar'''
+
'''Känner av om det är ISBN i sökfältet och ändrar automatiskt till ISBN-sökning'''
  
[[Fil:kloning.JPG]]
+
[[Fil:isbnsökning.JPG]]
[[Fil:kloning2.JPG]]
 
  
 
<pre>
 
<pre>
  
   // - Katalog / Exemplar
+
   // *************************************************************************************
 +
  // Övergripande - Sökning
 
   //
 
   //
   // Kloning av exemplar
+
   // Känner av om det är ett ISBN i sökfältet
   // ver 1
+
   // ver 1.4
   // 2020-01-08
+
   // ( Kompatibel med 22.05 )
  // Kompatibelt med 20.11
 
  
   if ($('#catalog_detail').length) {
+
   $('#search-form').keydown(function(e) {
    $('.itemselection_actions').append('<a class="itemselection_action_clone" href="' + $('#newitem').attr('href') + '"><i class="fa fa-copy"></i> Klona valt exemplar</a>');
 
    $('#bibliodetails input').change(function() {
 
      if ($('#bibliodetails input:checkbox:checked').length > 1) {
 
        $('.itemselection_action_clone').hide();
 
      } else {
 
        $('.itemselection_action_clone').show();
 
      }
 
    });
 
  
     $('.itemselection_action_clone').on('click', function(event) {
+
     var eventhandler = function(e) {
       event.preventDefault();
+
       e.preventDefault();    
      var itype = $('#bibliodetails input:checkbox:checked').parent().siblings('.itype').text().trim();
+
    }
      var homebranch = $('#bibliodetails input:checkbox:checked').parent().siblings('.homebranch').text().trim();
+
         
      var shelvingloc = homebranch.slice(homebranch.indexOf('↳') + 1).trim();
+
    var keycode = e.keyCode || e.which;
      homebranch = homebranch.slice(0, homebranch.indexOf('')).trim();
+
    var isbn = $(this).val();
      var collection = $('#bibliodetails input:checkbox:checked').parent().siblings('.homebranch').next('td').text().trim();
+
    isbn = isbn.replace(/[^X-Xx-x0-9]+/g,'');
       var itemcallnumber = $('#bibliodetails input:checkbox:checked').parent().siblings('.itemcallnumber').text().trim();
+
    if (keycode == '13') {
      var iteminfo = [itype, homebranch, shelvingloc, collection, itemcallnumber];
+
       $("#myform").bind('submit', eventhandler);
 +
    }
  
      sessionStorage.setItem('iteminfo', iteminfo);
+
    switch(isbn.length) {
      window.location = $('#newitem').attr('href');
 
    });
 
  }
 
  
  if ($('#cat_additem').length) {
+
      case 10:
    if (sessionStorage.getItem("iteminfo") !== null) {
+
        if (keycode == '13') {
      var iteminfo = sessionStorage.getItem('iteminfo').split(',');
+
          if (confirm('Är detta ett ISBN-nummer?')) {
 +
            $('.advsearch').val('nb');
 +
          }
 +
          $("#myform").unbind('submit', eventhandler);
 +
        }
 +
        break;
  
       if (iteminfo.length > 5) {
+
       case 13:
        $('#subfield952o input').attr('value', iteminfo[4] + ',' + iteminfo[5]);
+
        if ($(this).val().slice(0,3).indexOf('978') > -1 || $(this).val().slice(0,3).indexOf('979') > -1) {
      } else {
+
          $('.advsearch').val('nb');
        $('#subfield952o input').attr('value', iteminfo[4]);
+
        }
      }
+
        break;
  
       setTimeout(function() {
+
       default:
 +
        if ($('.advsearch').val() == 'nb') {
 +
          $('.advsearch').val('kw');
 +
        }
 +
    }
 +
  });
  
        $('select[id^="tag_952_subfield_8"]').children('option').each(function() {
+
</pre>
          if ($(this).text() == iteminfo[3]) {
 
            $('select[id^="tag_952_subfield_8"]').select2('val', $(this).attr('value'));
 
          }
 
        });
 
  
        $('select[id^="tag_952_subfield_c"]').children('option').each(function() {
+
== Katalogisering / Sökning ==
          if ($(this).text() == iteminfo[2]) {
 
            $('select[id^="tag_952_subfield_c"]').select2('val', $(this).attr('value'));
 
          }
 
        });
 
  
        $('select[id^="tag_952_subfield_y"]').children('option').each(function() {
+
'''Tar bort bindestreck i ISBN-fältet vid sökning i z3950'''
          if ($(this).text() == iteminfo[0]) {
 
            $('select[id^="tag_952_subfield_y"]').select2('val', $(this).attr('value'));
 
          }
 
        });
 
  
        $('input[id^="tag_952_subfield_d"]').focus();
+
<pre>
        $('input[id^="tag_952_subfield_p"]').focus().select();
 
  
      }, 1000);
+
  // *************************************************************************************
 +
  // Katalogisering - Sökning
 +
  //
 +
  // Ta bort bindestreck i ISBN-fältet vid sökning i z3950
 +
  // ver 1.2
 +
  // ( Kompatibel med 22.05 )
  
      sessionStorage.removeItem("iteminfo");
+
  function fixISBN() {
     }
+
    isbn = $('#isbn').val();
 +
    isbn = isbn.replace(/[^X-Xx-x0-9]+/g,'');
 +
     $('#isbn').val(isbn);
 
   }
 
   }
  
</pre>
+
  if ($('#cat_z3950_search').length) {
  
== Låntagare / Ny låntagare ==
+
    fixISBN();
 +
    $('#isbn').focusout(function() {
 +
      fixISBN();
 +
    });
  
'''Flytta fältet för mobiltelefon till överst'''
+
    if ($('#isbn').val().length >= 10) {
 
+
      $('.submit').trigger('click');
[[Fil:mobiltele.JPG]]
+
    }
 
+
    $(document).on("keydown", "form", function(event) {
<pre>
+
      if (event && event.which == 13) {
 
+
        event.preventDefault();
  // - Låntagare / Ny låntagare
+
        fixISBN();
  //
+
        $('.submit').trigger('click');
  // Flytta fältet för mobiltelefon till överst
+
      }
  // ver 1
+
    });
  // 2020-01-21
 
  // Kompatibelt med 20.11
 
 
 
  if ($('#pat_memberentrygen').length) {
 
    $('#memberentry_contact ol li:nth-child(3)').prependTo('#memberentry_contact ol');
 
 
   }
 
   }
  
 
</pre>
 
</pre>
  
== Övergripande / Sökning ==
+
== Katalog Detaljsidan / Alex ==
  
'''Känner av om det är ISBN i sökfältet och ändrar automatiskt till ISBN-sökning'''
+
'''Alex-integrering som visar författarinformation på detaljsidan'''
  
[[Fil:isbnsökning.JPG]]
+
[[Fil:alex.JPG]]
 +
[[Fil:alex2.JPG]]
  
 
<pre>
 
<pre>
  
 
   // *************************************************************************************
 
   // *************************************************************************************
   // Övergripande - Sökning
+
   // Katalog - Detaljsidan
 
   //
 
   //
   // Känner av om det är ett ISBN i sökfältet
+
   // Alex-integrering som visar författarinformation på detaljsidan.
   // ver 1.1
+
   // ver 1.0
   // ( Kompatibel med 20.11 )
+
  // OBS! Kräver speciellt perl-script på serversidan!
 +
   // ( Kompatibel med 22.05 )
  
   $('#search-form').keyup(function() {
+
   jQuery.fn.justtext = function() {
 +
    return $(this).clone()
 +
      .children()
 +
      .remove()
 +
      .end()
 +
      .text();
 +
  };
  
    var isbn = $(this).attr('value');
+
  function getAlex(writer, title) {
    isbn = isbn.replace(/[^X-Xx-x0-9]+/g, '');
 
  
     switch (isbn.length) {
+
     var alexpw = 'zryyn05wNN';
 +
    var alexWriter = writer;
 +
    var alexTitle = title;
 +
    var cardnumber = '90055991498A7';
  
       case 10:
+
    $.ajaxSetup({
         $('.advsearch').val('nb');
+
       error: function(xhr, status, error) {
        break;
+
         console.log("An AJAX error occured: " + status + "\nError: " + error);
 +
      }
 +
    });
  
      case 13:
+
    var jsondata;
        if ($(this).attr('value').slice(0, 3).indexOf('978') > -1 || $(this).attr('value').slice(0, 3).indexOf('979') > -1) {
 
          $('.advsearch').val('nb');
 
        };
 
        break;
 
  
      default:
+
    $.get('/cgi-bin/alex-link?&writer=' + alexWriter + '&title=' + alexTitle).done(function(data) {
        if ($('.advsearch').val() == 'nb') {
+
      jsondata = data;
          $('.advsearch').val('kw');
+
      // console.log(data);
        }
 
    };
 
  });
 
  
</pre>
+
      try {
 +
        alexFound = jsondata.response.writers.found.toString();
 +
      } catch {
 +
        alexFound = '0';
 +
      }
  
== Katalogisering / Sökning ==
+
      if (alexFound == '1') {
 +
        alexArticle = jsondata.response.writers.writer.article.toString().trim();
 +
        if (alexArticle.slice(-2).indexOf('.') == -1) {
 +
          alexArticle = alexArticle.concat('...');
 +
        }
 +
        alexImageUrl = jsondata.response.writers.writer.imageUrl.toString();
 +
        if (alexImageUrl.indexOf('noimage') > -1) {
 +
          alexImageUrl = '';
 +
          alexImageText = '';
 +
        } else {
 +
          alexImageText = jsondata.response.writers.writer.imageText.toString();
 +
          if (alexImageText.indexOf('[object]') > -1) {
 +
            alexImageText = '';
 +
          }
 +
        }
 +
        alexName = jsondata.response.writers.writer.name.toString();
 +
        alexBornDeadText = jsondata.response.writers.writer.bornDeadText.toString();
 +
        alexLogotype = jsondata.response.writers.writer.alexLogotype.toString();
 +
        alexLinkUrl = jsondata.response.writers.writer.alexLinkUrl.toString();
 +
      }
 +
      $('<div id="alexdone" style="display:none"></div>').appendTo('body');
 +
    });
 +
  };
  
'''Tar bort bindestreck i ISBN-fältet vid sökning i z3950'''
 
  
<pre>
+
  function alexDiv(element) {
 +
    $('<div class="previewbox" style="position:absolute;display:inline;border:solid 1px #d0d0d0;right:unset;bottom:unset;"><div id="alexwindow" style="width:600px;height:160px;margin:20px;"><div style="float:left;"><img src="' + alexImageUrl + '" height="190px" style="display:block;padding-right:10px"><span style="font-size:smaller;">' + alexImageText + '</span></div><h3 class="author">' + alexName + '</h3><h5>' + alexBornDeadText + '</h5><br /><span><span>' + alexArticle + '</span><br /><span style="display:block;float:right;padding-top:5px;">(Mer information finns på Alex.se)</span></div><div style="float:right;padding:0 10px 10px 0"><img src="' + alexLogotype + '" style="float:right;width:80px;"></div></div>').insertAfter(element);
 +
  };
  
   // *************************************************************************************
+
   function alexDivDetail() {
  // Katalogisering - Sökning
+
    $('<div id="alextd" style="max-width:400px;float:right;position:absolute;display:inline;right:18px;background-color:#fff"></div>').insertBefore('#catalogue_detail_biblio');
  //
+
    $('#alextd').append('<div id="alexwindow"></div>');
  // Ta bort bindestreck i ISBN-fältet vid sökning i z3950
+
    //$('#alexwindow').append('<span id="closeAlex">X</span>');
  // ver 1.1
+
    $('#alextd').append('<span id="openAlex">Visa Alex</span>');
  // ( Kompatibel med 20.11 )
+
    $('#openAlex').hide();
  
  if ($('#cat_z3950_search').length) {
+
    $('#alexwindow').append('<table id="alexTable"><tbody><tr></tr></tbody></table>');
 
+
     $('#alextd').on('click', function() {
     function fixISBN() {
+
       $('#alexwindow').toggle();
      isbn = $('#isbn').attr('value');
+
       $('#openAlex').toggle();
       isbn = isbn.replace(/[^X-Xx-x0-9]+/g, '');
 
       $('#isbn').attr('value', isbn);
 
    }
 
  
    fixISBN();
 
    $('#isbn').focusout(function() {
 
      fixISBN();
 
 
     });
 
     });
 +
    $('#alexwindow tr').append('<td id="alexInfo"></td>');
 +
    $('#alexInfo').append('<h5 class="author">' + alexName + '</h5>');
 +
    $('#alexInfo').append('<h5 style="font-size:85%">' + alexBornDeadText + '</h5>');
 +
    $('#alexInfo').append('<span id="alexArticle" class="results_summary" style="font-size:85%">' + alexArticle + '</span>');
 +
    $('#alexInfo').append('<span class="results_summary"><a href="' + alexLinkUrl + '" target="_blank">Läs mer på Alex.se</a></span>');
 +
    $('#alexInfo').append('<div style="display:block;float:right"><img src="' + alexLogotype + '" style="width:80px;"></div>');
 +
    $('#alexwindow tr').append('<td id="alexImg"><img src="' + alexImageUrl + '" style="display:block;max-width:160px;padding:5px 3px 0 5px;"></td>');
 +
    $('#alexImg').append('<span class="results_summary" style="font-size:80%;padding-left:5px;">' + alexImageText + '</span>');
  
     if ($('#isbn').val().length >= 10) {
+
     setTimeout(function() {
      $('.submit').trigger('click');
+
      $('#alexwindow').hide(500);
     }
+
      $('#openAlex').show(200);
    $(document).on("keydown", "form", function(event) {
+
    }, 2000);
       if (event && event.which == 13) {
+
  };
         event.preventDefault();
+
 
        fixISBN();
+
  var alexFound;
        $('.submit').trigger('click');
+
  var alexArticle;
 +
  var alexImageUrl;
 +
  var alexImageText;
 +
  var alexName;
 +
  var alexBornDeadText;
 +
  var alexLogotype;
 +
  var alexLinkUrl;
 +
 
 +
  if ($('#catalog_detail').length) {
 +
    var title = $('#catalogue_detail_biblio .title').justtext().replace(/\//g, '');
 +
     var author = $('#catalogue_detail_biblio .author:first a').justtext().replace(/-/g, " ");
 +
    getAlex(author, title);
 +
    waitForEl('#alexdone', function() {
 +
       if (alexFound == '1') {
 +
         alexDivDetail();
 
       }
 
       }
 +
      $('#alexdone').remove();
 
     });
 
     });
 
   }
 
   }
Rad 2 914: Rad 3 080:
 
</pre>
 
</pre>
  
== Katalog Detaljsidan / Alex ==
+
'''OBS detta behöver läggas till i IntranetUserCSS'''
  
'''Alex-integrering som visar författarinformation på detaljsidan'''
+
<pre>
  
[[Fil:alex.JPG]]
+
/* ALEX */
[[Fil:alex2.JPG]]
 
  
<pre>
+
#alextd {
 +
/*    max-width: 200px; */
 +
  float: right;
 +
  border: 1px solid #e58a37;
 +
  border-radius: 3px;
 +
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
 +
  padding: 10px;
 +
  z-index: 1;
 +
  cursor: pointer;
 +
}
  
  // *************************************************************************************
 
  // Katalog - Detaljsidan
 
  //
 
  // Alex-integrering som visar författarinformation på detaljsidan.
 
  // ver 1.0
 
  // OBS! Kräver speciellt perl-script på serversidan!
 
  // ( Kompatibel med 20.11 )
 
  
  jQuery.fn.justtext = function() {
+
#alextd table, #alextd td {
    return $(this).clone()
+
  border: none;
      .children()
+
  background-color: #fff;
      .remove()
+
}
      .end()
 
      .text();
 
  };
 
  
   function getAlex(writer, title) {
+
#closeAlex {
 
+
   position: absolute;
    var alexpw = 'zryyn05wNN';
+
  display: inline;
    var alexWriter = writer;
+
  right: 2px;
    var alexTitle = title;
+
  top: 0px;
    var cardnumber = '90055991498A7';
+
  font-size: large;
 +
  color: #999;
 +
  cursor: pointer;
 +
  padding: 0 0 30px 30px;
 +
}
  
    $.ajaxSetup({
+
#closeAlex:hover {
      error: function(xhr, status, error) {
+
  color: #d00;
        console.log("An AJAX error occured: " + status + "\nError: " + error);
+
}
      }
 
    });
 
  
    var jsondata;
+
#openAlex {
 +
  color: #666;
 +
  cursor: pointer;
 +
 
 +
}
  
    $.get('/cgi-bin/alex-link?&writer=' + alexWriter + '&title=' + alexTitle).done(function(data) {
+
</pre>
      jsondata = data;
 
      // console.log(data);
 
  
      try {
+
'''OBS detta perlscript behövs för att Alexintegrationen ska fungera'''
        alexFound = jsondata.response.writers.found.toString();
 
      } catch {
 
        alexFound = '0';
 
      }
 
  
      if (alexFound == '1') {
+
Det behöver även ändras lite i koden för att få in bibliotekets lösenord.
        alexArticle = jsondata.response.writers.writer.article.toString().trim();
+
 
        if (alexArticle.slice(-2).indexOf('.') == -1) {
+
<pre>
          alexArticle = alexArticle.concat('...');
 
        }
 
        alexImageUrl = jsondata.response.writers.writer.imageUrl.toString();
 
        if (alexImageUrl.indexOf('noimage') > -1) {
 
          alexImageUrl = '';
 
          alexImageText = '';
 
        } else {
 
          alexImageText = jsondata.response.writers.writer.imageText.toString();
 
          if (alexImageText.indexOf('[object]') > -1) {
 
            alexImageText = '';
 
          }
 
        }
 
        alexName = jsondata.response.writers.writer.name.toString();
 
        alexBornDeadText = jsondata.response.writers.writer.bornDeadText.toString();
 
        alexLogotype = jsondata.response.writers.writer.alexLogotype.toString();
 
        alexLinkUrl = jsondata.response.writers.writer.alexLinkUrl.toString();
 
      }
 
      $('<div id="alexdone" style="display:none"></div>').appendTo('body');
 
    });
 
  };
 
  
 +
#!/usr/bin/perl -w
  
  function alexDiv(element) {
+
# Alex implementering
    $('<div class="previewbox" style="position:absolute;display:inline;border:solid 1px #d0d0d0;right:unset;bottom:unset;"><div id="alexwindow" style="width:600px;height:160px;margin:20px;"><div style="float:left;"><img src="' + alexImageUrl + '" height="190px" style="display:block;padding-right:10px"><span style="font-size:smaller;">' + alexImageText + '</span></div><h3 class="author">' + alexName + '</h3><h5>' + alexBornDeadText + '</h5><br /><span><span>' + alexArticle + '</span><br /><span style="display:block;float:right;padding-top:5px;">(Mer information finns på Alex.se)</span></div><div style="float:right;padding:0 10px 10px 0"><img src="' + alexLogotype + '" style="float:right;width:80px;"></div></div>').insertAfter(element);
+
# av Johan Sahlberg (johan.sahlberg@tidaholm.se), 2019
  };
 
  
  function alexDivDetail() {
+
# Search string example:
    $('<div id="alextd" style="max-width:400px;float:right;position:absolute;display:inline;right:18px;background-color:#fff"></div>').insertBefore('#catalogue_detail_biblio');
+
# ./alex-test.pl password=[password] writer=Guillou,%20Jan title= librarycard=900559914987A
    $('#alextd').append('<div id="alexwindow"></div>');
 
    //$('#alexwindow').append('<span id="closeAlex">X</span>');
 
    $('#alextd').append('<span id="openAlex">Visa Alex</span>');
 
    $('#openAlex').hide();
 
  
    $('#alexwindow').append('<table id="alexTable"><tbody><tr></tr></tbody></table>');
+
use Modern::Perl;
    /*
+
use CGI qw ( -utf8 );
      $('#closeAlex').on('click', function() {
+
use HTML::Entities;
        $('#alexwindow').hide();
+
use strict;
        $('#openAlex').show();
+
use warnings;
      });
 
      $('#openAlex').on('click', function() {
 
        $('#alexwindow').show();
 
        $('#openAlex').hide();
 
      });
 
    */
 
    $('#alextd').on('click', function() {
 
      $('#alexwindow').toggle();
 
      $('#openAlex').toggle();
 
  
    });
+
my $query = CGI->new();
    $('#alexwindow tr').append('<td id="alexInfo"></td>');
 
    $('#alexInfo').append('<h5 class="author">' + alexName + '</h5>');
 
    $('#alexInfo').append('<h5 style="font-size:85%">' + alexBornDeadText + '</h5>');
 
    $('#alexInfo').append('<span id="alexArticle" class="results_summary" style="font-size:85%">' + alexArticle + '</span>');
 
    $('#alexInfo').append('<span class="results_summary"><a href="' + alexLinkUrl + '" target="_blank">Läs mer på Alex.se</a></span>');
 
    $('#alexInfo').append('<div style="display:block;float:right"><img src="' + alexLogotype + '" style="width:80px;"></div>');
 
    $('#alexwindow tr').append('<td id="alexImg"><img src="' + alexImageUrl + '" style="display:block;max-width:160px;padding:5px 3px 0 5px;"></td>');
 
    $('#alexImg').append('<span class="results_summary" style="font-size:80%;padding-left:5px;">' + alexImageText + '</span>');
 
  
    setTimeout(function() {
+
my $password = ''; # Fyll i bibliotekets lösenord för Alex
      $('#alexwindow').hide(500);
+
my $writer = $query->param('writer');
      $('#openAlex').show(200);
+
my $title = $query->param('title');
    }, 2000);
+
my $librarycard = $query->param('librarycard');
  };
 
  
  var alexFound;
+
use LWP::UserAgent;
  var alexArticle;
+
use HTTP::Request;
  var alexImageUrl;
 
  var alexImageText;
 
  var alexName;
 
  var alexBornDeadText;
 
  var alexLogotype;
 
  var alexLinkUrl;
 
  
  if ($('#catalog_detail').length) {
+
my $ua = new LWP::UserAgent;
    var title = $('#catalogue_detail_biblio .title').justtext().replace(/\//g, '');
+
$ua->agent("Perl API Client/1.0");
    var author = $('#catalogue_detail_biblio .author:first a').justtext().replace(/-/g, " ");
 
    getAlex(author, title);
 
    waitForEl('#alexdone', function() {
 
      if (alexFound == '1') {
 
        alexDivDetail();
 
      }
 
      $('#alexdone').remove();
 
    });
 
  }
 
  
</pre>
+
# Setup variables
 +
my $string="partnerintegration/Writer";
 +
my $host="www.alex.se";
 +
my $protocol="https";
  
'''OBS detta behöver läggas till i intranetusercss'''
+
#build the url
 +
my $url = "$protocol://$host/$string/" .  "?Password=$password&Writer=$writer&Title=%title&LibraryCard=%librarycard";
 +
#my $url = "https://www.alex.se/partnerintegration/Writer/?Password=zryyn05wNN&Writer=Guillou,%20Jan&Title=&LibraryCard=900559914987A";
  
<pre>
+
#Fetch the actual data from the query
 +
my $request = HTTP::Request->new("GET" => $url);
 +
$request->content_type('application/json');
 +
 
 +
my $response = $ua->request($request);
  
/* ALEX */
+
my $cgi = CGI->new;
 +
print $cgi->header(-type => "application/json", -charset => "utf-8");
  
#alextd {
+
use JSON;
//  max-width: 200px;
+
use XML::Simple;
  float: right;
 
  border: 1px solid #e58a37;
 
  border-radius: 3px;
 
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
 
  padding: 10px;
 
  z-index: 1;
 
  cursor: pointer;
 
}
 
  
 +
# Create the object of XML Simple
 +
my $xmlSimple = new XML::Simple(KeepRoot  => 1);
  
#alextd table, #alextd td {
+
# Load the xml file in object
  border: none;
+
my $dataXML = $xmlSimple->XMLin($response->content);
  background-color: #fff;
 
}
 
  
#closeAlex {
+
# use encode json function to convert xml object in json.
  position: absolute;
+
my $jsonString = encode_json($dataXML);
  display: inline;
 
  right: 2px;
 
  top: 0px;
 
  font-size: large;
 
  color: #999;
 
  cursor: pointer;
 
  padding: 0 0 30px 30px;
 
}
 
  
#closeAlex:hover {
+
# finally print json
  color: #d00;
+
print $url;
}
+
print $jsonString;
 
 
#openAlex {
 
  color: #666;
 
  cursor: pointer;
 
 
 
}
 
  
 
</pre>
 
</pre>
  
'''OBS detta perlscript behövs för att Alexintegrationen ska fungera'''
+
== Exemplar / Radering ==
  
Det behöver även ändras lite i koden för att få in bibliotekets lösenord.
+
'''Förikryssad checkbox för att "Radera poster om inga exemplar kvarstår'''
  
 
<pre>
 
<pre>
  
#!/usr/bin/perl -w
+
  // *************************************************************************************
 +
  // Exemplar - Radering
 +
  //
 +
  // Förikryssad checkbox för "Radera poster om inga exemplar kvarstår."
 +
  // ver 1.0
 +
  // ( Kompatibel med 22.05 )
  
# Alex implementering
+
  if ($('#tools_batchMod-del').length) {
# av Johan Sahlberg (johan.sahlberg@tidaholm.se), 2019
+
    if ($('#del_records').length) {
 
+
      document.getElementById("del_records").checked = true;
# Search string example:
+
    }
# ./alex-test.pl password=[password] writer=Guillou,%20Jan title= librarycard=900559914987A
+
  }
  
use Modern::Perl;
+
</pre>
use CGI qw ( -utf8 );
 
use HTML::Entities;
 
use strict;
 
use warnings;
 
  
my $query = CGI->new();
+
== Låntagare - Ny/Redigera ==
  
my $password = ''; # Fyll i bibliotekets lösenord för Alex
+
'''Generera lånekortsnummer och pin-kod beroende på kommuntillhörighet'''
my $writer = $query->param('writer');
 
my $title = $query->param('title');
 
my $librarycard = $query->param('librarycard');
 
  
use LWP::UserAgent;
+
[[Fil:lånekortsnummer.JPG]]
use HTTP::Request;
+
[[Fil:pinkod.JPG]]
  
my $ua = new LWP::UserAgent;
+
<pre>
$ua->agent("Perl API Client/1.0");
 
  
# Setup variables
+
  // *************************************************************************************
my $string="partnerintegration/Writer";
+
  // Låntagare - Ny/redigera
my $host="www.alex.se";
+
  //
my $protocol="https";
+
  // Generera lånekortsnummer och PIN-kod
 +
  //
 +
  // ver 1.1 (2022-10-10)
 +
  // ( Kompatibel med 22.05 )
  
#build the url
+
  if ($('#pat_memberentrygen').length) {
my $url = "$protocol://$host/$string/" . "?Password=$password&Writer=$writer&Title=%title&LibraryCard=%librarycard";
+
    $('<span><button id="genCardNo">Generera lånekortsnummer</button></span>').insertAfter('#cardnumber');
#my $url = "https://www.alex.se/partnerintegration/Writer/?Password=zryyn05wNN&Writer=Guillou,%20Jan&Title=&LibraryCard=900559914987A";
+
    $('<span><button id="genPIN">Generera PIN-kod</button></span>').insertAfter('#password');
 +
    $('#genCardNo').on('click', function(e) {
 +
      e.preventDefault();
  
#Fetch the actual data from the query
+
      var patron_attr_personnr = $('input[value="PERSNUMMER"]').siblings('textarea');
my $request = HTTP::Request->new("GET" => $url);
+
      var persNr = $(patron_attr_personnr).val();
$request->content_type('application/json');
 
  
my $response = $ua->request($request);
+
      var y = new Date().getFullYear().toString().slice(2);
 +
      var m = new Date().getMonth();
 +
      if (m < 10) {
 +
        m = m.toString(10);
 +
        m = '0' + m;
 +
      } else {
 +
        m = m.toString(10);
 +
      }
  
my $cgi = CGI->new;
+
      var d = new Date().getDate().toString();
print $cgi->header(-type => "application/json", -charset => "utf-8");
+
      if (d < 10) {
 +
        d = d.toString(10);
 +
        d = '0' + d;
 +
      } else {
 +
        d = d.toString(10);
 +
      }
  
use JSON;
+
      var h = new Date().getHours();
use XML::Simple;
+
      if (h > 9) {
 
+
        h = h.toString(25).toUpperCase();
# Create the object of XML Simple
+
      } else {
my $xmlSimple = new XML::Simple(KeepRoot  => 1);
+
        h = h.toString(10);
 +
      }
  
# Load the xml file in object
+
      var min = new Date().getTime().toString();
my $dataXML = $xmlSimple->XMLin($response->content);
+
      min = min.slice(-2);
  
# use encode json function to convert xml object in json.
+
      var lib = $('#libraries').find('option:selected').val();
my $jsonString = encode_json($dataXML);
+
      var libcode;
 +
      switch (lib) {
 +
        case '8BYO':
 +
        case '8REG':
 +
        case 'FGBS':
 +
        case 'GULL':
 +
        case 'HOVA':
 +
          libcode = '1447';
 +
          break;
  
# finally print json
+
        case 'HJO':
print $url;
+
          libcode = '1684';
print $jsonString;
+
          break;
  
</pre>
+
        case '8BYL':
 +
        case '8BYM':
 +
        case 'KABO':
 +
        case 'KSTR':
 +
          libcode = '1446';
 +
          break;
  
== Exemplar / Radering ==
+
        case 'KBRO':
 +
        case 'LKAV':
 +
          libcode = '1496';
 +
          break;
  
'''Förikryssad checkbox för att "Radera poster om inga exemplar kvarstår'''
+
        case '8BYQ':
 +
        case 'MARI':
 +
        case 'MKRI':
 +
        case 'MVAN':
 +
          libcode = '1493';
 +
          break;
  
<pre>
+
        case '8BXQ':
 +
        case '8BXZ':
 +
        case '8BYA':
 +
        case '8BYB':
 +
        case '8BYC':
 +
        case '8BYR':
 +
        case 'SKBO':
 +
        case 'SKKO':
 +
        case 'SKPO':
 +
        case 'SKSB':
 +
          libcode = '1496';
 +
          break;
  
  // *************************************************************************************
+
        case '8NYB':
  // Exemplar - Radering
+
        case 'TIBOALDRE':
  //
+
        case 'TIKF':
  // Förikryssad checkbox för "Radera poster om inga exemplar kvarstår."
+
          libcode = '1472';
  // ver 1.0
+
          break;
  // ( Kompatibel med 20.11 )
 
  
  if ($('#tools_batchMod-del').length) {
+
        case 'TIDA':
    if ($('#del_records').length) {
+
        case 'TKRI':
      document.getElementById("del_records").checked = true;
+
        case 'TEKE':
    }
+
        case 'TFOR':
  }
+
        case 'THOK':
 +
        case 'TRBG':
 +
        case 'TVAL':
 +
          libcode = '1498';
 +
          break;
  
</pre>
+
        case '8BYI':
 +
        case '8BYS':
 +
        case 'TORE':
 +
          libcode = '1473';
 +
          break;
  
== Låntagare - Ny/Redigera ==
+
        case 'VAGY':
 +
          libcode = '1493';
 +
          break;
  
'''Generera lånekortsnummer och pin-kod beroende på kommuntillhörighet'''
+
        case 'SKGY':
 +
        case 'SKGZ':
 +
          libcode = '1496';
 +
          break;
 +
      };
  
[[Fil:lånekortsnummer.JPG]]
+
 
[[Fil:pinkod.JPG]]
+
      if (persNr.length > 0) {
 +
        var date = persNr.slice(0, 6) + h + libcode + d;
 +
      } else {
 +
        var date = y + m + d + h + libcode + min;
 +
      }
 +
      //console.log(date);
 +
      $('#cardnumber').val(date);
 +
      if ($('#userid').length < 1) {
 +
        $('#userid').val(date);
 +
      }
 +
 
 +
      // PIN-kod
 +
 
 +
      var pin = Math.floor((Math.random() * (9999 - 1000) + 1000));
 +
      $('#password, #password2').val(pin);
 +
    });
 +
 
 +
    $('#genPIN').on('click', function(e) {
 +
      e.preventDefault();
 +
      var pin = Math.floor((Math.random() * (9999 - 1000) + 1000));
 +
      $('#password, #password2').val(pin);
 +
    });
 +
  }
 +
 
 +
 
 +
</pre>
 +
 
 +
== Katalog / Reservationer ==
 +
 
 +
'''Dialogruta om man klickar på pilen ned för att lägga personen sist i listan'''
 +
 
 +
[[Fil:pilner.JPG]]
  
 
<pre>
 
<pre>
  
 
   // *************************************************************************************
 
   // *************************************************************************************
   // Låntagare - Ny/redigera
+
   // Katalog - Reservationer
 
   //
 
   //
   // Generera lånekortsnummer och PIN-kod
+
   // Dialogruta om man klickar på pilen ned för att lägga personen sist i listan
 
   //
 
   //
   // ver 1.0 (2021-02-16)
+
   // ver 1.1 (2022-10-13)
   // ( Kompatibel med 20.11 )
+
   // ( Kompatibel med 22.05 )
  
   if ($('#pat_memberentrygen').length) {
+
   if ($('#circ_request').length) {
     $('<span><button id="genCardNo">Generera lånekortsnummer</button></span>').insertAfter('#cardnumber');
+
     //var holdstable = $('.holds_table').dataTable();
     $('<span><button id="genPIN">Generera PIN-kod</button></span>').insertAfter('#password');
+
     //holdstable.on('draw.dt', function() {
     $('#genCardNo').on('click', function(e) {
+
     $('#existing_holds td:nth-child(3) a:nth-child(3)').each(function() {
      e.preventDefault();
+
      $(this).on('click', function(e) {
 +
        var question = confirm('Är du säker?');
 +
        if (question == false) {
 +
          e.preventDefault();
 +
        }
 +
      });
 +
    });
 +
  }
  
      var persNr = $('#patron_attr_3').attr('value');
+
== Katalog / Reservationer ==
  
      var y = new Date().getFullYear().toString().slice(2);
+
'''Markerade pausade reservationer'''
      var m = new Date().getMonth();
 
      if (m < 10) {
 
        m = m.toString(10);
 
        m = '0' + m;
 
      } else {
 
        m = m.toString(10);
 
      }
 
  
      var d = new Date().getDate().toString();
+
[[Fil:suspend.JPG]]
      if (d < 10) {
 
        d = d.toString(10);
 
        d = '0' + d;
 
      } else {
 
        d = d.toString(10);
 
      }
 
  
      var h = new Date().getHours();
+
<pre>
      if (h > 9) {
 
        h = h.toString(25).toUpperCase();
 
      } else {
 
        h = h.toString(10);
 
      }
 
  
      var min = new Date().getTime().toString();
+
  // *************************************************************************************
      min = min.slice(-2);
+
  // Katalog - Reservationer
 +
  //
 +
  // Markera suspenderade reservationer
 +
  //
 +
  // ver 1.2 (2022-10-10)
 +
  // ( Kompatibel med 22.05 )
  
      var lib = $('#libraries').find('option:selected').val();
+
  if ($('#circ_request').length) {
       var libcode;
+
    $('form[action="modrequest.pl"] tbody td button').each(function() {
      switch (lib) {
+
       $(this).mouseover(function() {
         case '8BYO':
+
         $(this).siblings().show();
        case '8REG':
+
      });
        case 'FGBS':
 
        case 'GULL':
 
        case 'HOVA':
 
          libcode = '1447';
 
          break;
 
  
         case 'HJO':
+
      var susStatus = $(this).text();
          libcode = '1684';
+
 
          break;
+
      //console.log(susStatus);
 +
      if (susStatus.includes('Återuppta')) {
 +
         $(this).parent().parent().children('td').css('opacity', '0.3');
 +
        $(this).parent().parent().children('td:nth-child(5)').append('<span>På paus...</span>');
 +
        $(this).parent('td').css('opacity', '1');
 +
        $(this).css('border', '2px outset #f00');
 +
      }
 +
    });
 +
  }
  
        case '8BYL':
 
        case '8BYM':
 
        case 'KABO':
 
        case 'KSTR':
 
          libcode = '1446';
 
          break;
 
  
        case 'KBRO':
+
</pre>
        case 'LKAV':
 
          libcode = '1496';
 
          break;
 
  
        case '8BYQ':
+
== Katalog / Lokal placering ==
        case 'MARI':
 
        case 'MKRI':
 
        case 'MVAN':
 
          libcode = '1493';
 
          break;
 
  
        case '8BXQ':
+
'''Tar bort skapandet av lokala placeringar vid katalogsökning'''
        case '8BXZ':
 
        case '8BYA':
 
        case '8BYB':
 
        case '8BYC':
 
        case '8BYR':
 
        case 'SKBO':
 
        case 'SKKO':
 
        case 'SKPO':
 
        case 'SKSB':
 
          libcode = '1496';
 
          break;
 
  
        case '8NYB':
+
<pre>
        case 'TIBOALDRE':
 
        case 'TIKF':
 
          libcode = '1472';
 
          break;
 
  
        case 'TIDA':
+
  // *************************************************************************************
        case 'TKRI':
+
  // Ta bort skapande av Lokala placeringar vid sökning
        case 'TEKE':
+
  // ver 1.0 (2021-09-16)
        case 'TFOR':
+
  // Kompatibelt med 20.11
        case 'THOK':
+
  //
         case 'TRBG':
+
 
        case 'TVAL':
+
  if ($('#cat_additem').length) {
          libcode = '1498';
+
    if ($('.is_superlibrarian').length) {
           break;
+
      waitForEl('.select2-search__field', function() {
 +
         $(this).on('keydown', function() {
 +
          $(document).on('DOMNodeInserted', function(e) {
 +
            if(e.target.localName == "li"){
 +
              $('.select2-results li:first').hide();
 +
            }
 +
           });
 +
        });
 +
      });
 +
    }
 +
  }
 +
 
 +
</pre>
  
        case '8BYI':
+
== Plocklista / Reservationer ==
        case '8BYS':
 
        case 'TORE':
 
          libcode = '1473';
 
          break;
 
  
        case 'VAGY':
+
'''Lägger till fältet senast sedd under streckkod i plocklistan'''
          libcode = '1493';
 
          break;
 
  
        case 'SKGY':
+
[[Fil:senastsedd.JPG]]
        case 'SKGZ':
 
          libcode = '1496';
 
          break;
 
      };
 
  
 +
<pre>
  
      if (persNr.length > 0) {
+
// *************************************************************************************
        var date = persNr.slice(0, 6) + h + libcode + d;
+
// Plocklista
      } else {
+
//
        var date = y + m + d + h + libcode + min;
+
// Senast sedd för exemplaret som föreslagits
      }
+
// ver 1.1
      console.log(date);
+
// 2022-10-22
      $('#cardnumber').attr('value', date);
+
// Kompatibel med 22.05
      if ($('#userid').length < 1) {
 
        $('#userid').attr('value', date);
 
      }
 
  
      // PIN-kod
+
  function controlDate(date, today) {
 
+
    var returndate = date.replace(/\D/g, '');
      var pin = Math.floor((Math.random() * (9999 - 1000) + 1000));
+
    //var thisday = today.replace(/\D/g, '');
      $('#password, #password2').attr('value', pin);
+
    var rYear = returndate.slice(0,4);
     });
+
     var rMonth = returndate.slice(4,6);
 
+
     var rDay = returndate.slice(6,8);
     $('#genPIN').on('click', function(e) {
+
    returndate = new Date();
      e.preventDefault();
+
    returndate.setFullYear(rYear,rMonth -1,rDay);
      var pin = Math.floor((Math.random() * (9999 - 1000) + 1000));
+
    var diffTime = Math.abs(today - returndate);
      $('#password, #password2').attr('value', pin);
+
    var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
     });
+
    if (diffDays < 3) {
 +
      //console.log('Mindre än 3 dagar');
 +
      return true;
 +
     } else {
 +
      return false;
 +
    }
 
   }
 
   }
  
</pre>
 
  
== Katalog / Reservationer ==
 
  
'''Dialogruta om man klickar på pilen ned för att lägga personen sist i listan'''
+
  if ($('#circ_view_holdsqueue').length) {
 +
    var today = new Date();
  
[[Fil:pilner.JPG]]
+
     $('.hq-barcode strong').each(function() {
 
+
       var barcode = $(this).text();
<pre>
+
       var thisbarcode = $(this).parent();
 
+
       $.ajax({
  // *************************************************************************************
+
        url: 'https://' + window.location.hostname + '/api/v1/items/?external_id=' + barcode + '&_match=exact',
  // Katalog - Reservationer
+
        cache: true,
  //
+
        success: function(data) {
  // Dialogruta om man klickar på pilen ned för att lägga personen sist i listan
+
          if(data[0] != null) {
  //
+
            var lastseen = data[0].last_seen_date;
  // ver 1.0 (2021-02-16)
+
            if (controlDate(lastseen, today)) {
  // ( Kompatibel med 20.11 )
+
              $('<div style="margin-top:10px;color:#900">Senast sedd: ' + lastseen + '</div>').appendTo(thisbarcode);
 
+
            } else {
  if ($('#circ_request').length) {
+
              $('<div style="margin-top:10px">Senast sedd: ' + lastseen + '</div>').appendTo(thisbarcode);
     $('form[action="modrequest.pl"] tbody td:nth-child(2) a:nth-child(3)').on('click', function(e) {
+
            }
       if (confirm('Är du säker?')) {
+
          }
 
+
         }
       } else {
 
        e.preventDefault();
 
       }
 
    });
 
  }
 
 
 
</pre>
 
 
 
== Katalog / Reservationer ==
 
 
 
'''Markerade pausade reservationer'''
 
 
 
[[Fil:suspend.JPG]]
 
 
 
<pre>
 
 
 
  // *************************************************************************************
 
  // Katalog - Reservationer
 
  //
 
  // Markera suspenderade reservationer
 
  //
 
  // ver 1.1 (2021-06-08)
 
  // ( Kompatibel med 20.11 )
 
 
 
  if ($('#circ_request').length) {
 
    $('form[action="modrequest.pl"] tbody td input[type="button"]').each(function() {
 
      $(this).mouseover(function() {
 
         $(this).siblings().show();
 
 
       });
 
       });
 
      var susStatus = $(this).attr('value');
 
 
      if (susStatus == 'Aktivera') {
 
        $(this).parent().parent().children('td:nth-child(4)').append('<span>På paus...</span>');
 
        $(this).parent().parent().children('td').css('opacity', '0.2');
 
        $(this).parent('td').css('opacity', '1');
 
        $(this).css('border', '2px outset #f00');
 
      }
 
 
     });
 
     });
  }
 
 
</pre>
 
 
== Katalog / Lokal placering ==
 
 
'''Tar bort skapandet av lokala placeringar vid katalogsökning'''
 
 
<pre>
 
 
  // *************************************************************************************
 
  // Ta bort skapande av Lokala placeringar vid sökning
 
  // ver 1.0 (2021-09-16)
 
  // Kompatibelt med 20.11
 
  //
 
 
 
  if ($('#cat_additem').length) {
 
    if ($('.is_superlibrarian').length) {
 
      waitForEl('.select2-search__field', function() {
 
        $(this).on('keydown', function() {
 
          $(document).on('DOMNodeInserted', function(e) {
 
            if(e.target.localName == "li"){
 
              $('.select2-results li:first').hide();
 
            }
 
          });
 
        });
 
      });
 
    }
 
 
   }
 
   }
  
 
</pre>
 
</pre>

Nuvarande version från 6 september 2024 kl. 08.53

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);
  }
};

Slutet VIKTIGT

Glöm inte att avsluta längst ner i din IntranetUserJS :).

}); /* SLUTET */

Periodika / Ta emot

Lättare att se hembibliotekets prenumeration genom att markera den grön och förstora rutan vid sökning.

Periodika.png

  
    // *************************************************************************************
    // - Periodika / Ta emot
    //
    // Som standard endast hembibliotekets prenumerationer
    // Lättare att se hembibliotekets prenumerationer om sökning på alla
    // ver 2.4
    // 2022-11-15
    // ( Kompatibel med 23.05 )

    if ($('#subscription_search').length) {

        $('.form-extra-content').append('<label><input id="localSerials" type="checkbox" style="margin-left:10px;" checked> Sök endast egna prenumerationer</label>');

        if (document.getElementById('localSerials').checked) {
            $('#subscription_search form').prepend('<input type="hidden" id="locSerCB" name="branch_filter" value="' + $('.logged-in-branch-code:first').text() + '">');
        }
        $('#localSerials').change(function () {
            if (document.getElementById('localSerials').checked) {
                $('#subscription_search form').prepend('<input type="hidden" id="locSerCB" name="branch_filter" value="' + $('.logged-in-branch-code:first').text() + '">');
            } else {
                $('#locSerCB').remove();
            }
        });

    }

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.

Sprakfalt.png

  // *************************************************************************************
  // - Katalog / Sökning
  //
  // Välj språk vid sökning
  // ver 1.3 (uppdaterad med minoritetsspråken och Ukrainska)
  // ( Kompatibel med 23.05 )

  if ($('#header_search').length || $('#catalog_advsearch').length) {
    if ($('#catalog_advsearch').length) {
      $('#language-limit').remove();
      $('<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:yid">Jiddisch</option><option value="ln,rtrn:hrv">Kroatiska</option><option value="ln,rtrn:chi">Kinesiska</option><option value="ln,rtrn:9mk">Meänkieli</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:rom">Romani</option><option value="ln,rtrn:rum">Rumänska</option><option value="ln,rtrn:rus">Ryska</option><option value="ln,rtrn:smi OR ln,rtrn:sme OR ln,rtrn:smn OR ln,rtrn:smj OR ln,rtrn:sms OR ln,rtrn:sma">Samiska</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:ukr">Ukrainska</option><option value="ln,rtrn:urd">Urdu</option></select>').appendTo('#language p');

    } else {
      $('<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:yid">Jiddisch</option><option value="ln,rtrn:hrv">Kroatiska</option><option value="ln,rtrn:chi">Kinesiska</option><option value="ln,rtrn:9mk">Meänkieli</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:rom">Romani</option><option value="ln,rtrn:rum">Rumänska</option><option value="ln,rtrn:rus">Ryska</option><option value="ln,rtrn:smi OR ln,rtrn:sme OR ln,rtrn:smn OR ln,rtrn:smj OR ln,rtrn:sms OR ln,rtrn:sma">Samiska</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:ukr">Ukrainska</option><option value="ln,rtrn:urd">Urdu</option></select>').insertAfter('#header_search #search-form');
    }
  }


Cirkulation / Återlämning

Meddelande om återlämnad Magasin-bok.

Magasinsmeddelande.png

  // *************************************************************************************
  // - Cirkulation / Återlämning
  //
  // Meddelande om återlämnad Magasin-bok
  // ver 1.4
  // ( Kompatibel med 23.05 )

  if ($('#circ_returns').length) {
    if ($('#checkedintable tbody tr:first .ci-collection').text().includes('Magasin')) {
      //console.log('Magasin!');
      $('main .row:first div:first').prepend('<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.

Omlanknapp.PNG

    // *************************************************************************************
    // - Cirkulation
    //
    // Låna om-knapp för varje utlånat exemplar
    // ver 1.4
    // 2022-05-02
    // ( Kompatibel med 23.05 )


    function renewButtons() {
        $('.renew:visible').each(function () {
            var itemId = $(this).val();
            $(this).parent().parent().append('<button type="button" class="btn btn-default btn-xs renewlink" value="' + itemId + '">Låna om</button>');
        });

        $('.renewlink').on('click', function (event) {
            event.preventDefault();
            var id = $(this).val();
            $(".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>');
        });
    }

    if ($('#circ_circulation, #pat_moremember').length) {
        issueT = $('#issues-table');
        issueT.on('draw.dt', function () {
            renewButtons();
        });

    }

Katalog / Reservationer

Hämta mer information om reservationer på detaljsidan.

Reservationsinfo.PNG

    // *************************************************************************************
    // - Katalog / Detalj
    //
    // Hämta mer information om reservationer på detaljsidan
    // ver 2.3
    // Hämtar information om reservationer via rest-API
    // 2023-09-12
    // ( Kompatibel med 23.05 )

    if ($('#catalog_detail').length) {
        var bibnr = $('input[name="bib"]').val();
        if ($('.number_box').length) {
            $.get('/api/v1/holds/?biblio_id=' + bibnr + '&_per_page=300&_match=exact').done(function (data) {
                var inTransit = 0;
                var waiting = 0;
                var suspended = 0;
                for (i = 0; i < data.length; i++) {
                    if (data[i].status == "T") {
                        inTransit++;
                    }
                    if (data[i].status == "W") {
                        waiting++;
                    }
                    if (data[i].suspended == true) {
                        suspended++;
                    }
                }
                var leftRes = data.length - inTransit - waiting;

                if (leftRes > 0) {
                    $('.number_box').parent().append('<span class="resDetail">Antal i kö: ' + leftRes + '</span>');
                }
                if (inTransit > 0) {
                    $('.number_box').parent().append('<span class="resDetail">Transport: ' + inTransit + '</span>');
                }
                if (waiting > 0) {
                    $('.number_box').parent().append('<span class="resDetail">Aviserade: ' + waiting + '</span>');
                }
                if (suspended > 0) {
                    $('.number_box').parent().append('<span class="resDetail">Pausade: ' + suspended + '</span>');
                }
            });
        }
    }

Katalog / Shelving location

Lägg till en pil och ändra färg på shelving locations på detaljsidan.

Shelvinglocationpil.PNG

  // *************************************************************************************
  // - Katalog / Detalj
  //
  // Shelvinglocations på detaljsidan
  // ver 1
  // ( Kompatibel med 23.05 )

  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.

Sammanslagning.PNG

    // *************************************************************************************
    // - Katalog / Resultat
    //
    // Slå samman-knapp på resultatsidan
    // ver 1.1
    // 2023-09-12
    // ( Kompatibel med 23.05 )

    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 = '/cgi-bin/koha/cataloguing/merge.pl?';

            $('.selection').each(function () {
                if ($(this).is(':checked')) {
                    selIDs.push($(this).val());
                }
            });

            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.

Knapparstreckkod.PNG

    // *************************************************************************************
    // - Cirkulation
    //
    // Knappar Kopiera streckkod och Återlämna bredvid streckkod på utlåningssidan
    // ver 1.6
    // 2023-09-12
    // ( Kompatibel med 23.05 )


    if ($('#circ_circulation').length || $('#pat_moremember').length) {
        var firstload = true;
        $('#issues-table'); //.dataTable();
        $('#issues-table').on('draw.dt', function () {
            if (firstload) {
                $('#issues-table tbody tr td:nth-child(2)').each(function () {
                    $(this).append('</br><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a>');
                });

                $('#holds-table tbody tr td:nth-child(4)').each(function () {
                    $(this).append('</br><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i><a 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) {
                    for (i = 1; i < 3; i++) {
                        event.preventDefault();

                        $('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);

                        document.execCommand('copy');

                        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)) {
                        sessionStorage.setItem('lastbarcode', bc);
                        window.location.href = '/cgi-bin/koha/circ/returns.pl?barcode=' + bc;
                    }

                });
            }
        });
    }


    // *************************************************************************************
    // - Katalog / Detaljer
    //
    // Knappar för Kopiera, Återlämna och Radera bredvid streckkod på detaljssidan
    // ver 2.3 (2023-12-20)
    // ( Kompatibel med 23.05 )

    if ($('#catalog_detail').length) {

        var cellnr = $('#holdings_barcode').index() + 1;

        $('#holdings_table tbody tr td:nth-child(' + cellnr + '), #otherholdings_table tbody tr td:nth-child(' + cellnr + ')').each(function () {
            $(this).append('<br /><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i></a><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a><a 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) {
            for (i = 1; i < 3; i++) {
                event.preventDefault();

                $('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);
                document.execCommand('copy');
                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)) {
                sessionStorage.setItem('lastbarcode', bc);
                window.location.href = '/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 = $('input[name="bib"]').val();
            var link = '/cgi-bin/koha/tools/batchMod.pl?op=show&del=1&itemnumber=' + itemnr + '&biblionumber=' + bibnr + '&src=CATALOGUING';
            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"


/* Knappar för kopiera och återlämna  */
.bcopy, .breturn, .btrash {
  margin: 3px 5px 0 0;
  background: #ffc32b none;
  border: 1px solid #ffc32b;
}

.bcopy:hover, .breturn:hover, .btrash:hover {
  background:#ffd15e none;
  border: 1px solid #ffd15e;
}

.bcSel {
  background-color: #ffc32b;
  border-radius: 7px;
  padding:0 5px;
}
/* */


Cirkulation / Knappar

Skapar knappar för Kopiera streckkod Återlämna och Radera bredvid streckkod på utlåningssidan.

Knapparutlaning.PNG

    // *************************************************************************************
    // - Katalog / Detaljer
    //
    // Knappar för Kopiera, Återlämna och Radera bredvid streckkod på detaljssidan
    // ver 2.3 (2023-12-20)
    // ( Kompatibel med 23.05 )

    if ($('#catalog_detail').length) {

        var cellnr = $('#holdings_barcode').index() + 1;

        $('#holdings_table tbody tr td:nth-child(' + cellnr + '), #otherholdings_table tbody tr td:nth-child(' + cellnr + ')').each(function () {
            $(this).append('<br /><a class="btn btn-default btn-xs bcopy" data-toggle="tooltip" title="Kopiera"><i class="fa fa-copy"></i></a><a class="btn btn-default btn-xs breturn" data-toggle="tooltip" title="Återlämna"><i class="fa fa-sign-in"></i></a><a 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) {
            for (i = 1; i < 3; i++) {
                event.preventDefault();

                $('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);
                document.execCommand('copy');
                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)) {
                sessionStorage.setItem('lastbarcode', bc);
                window.location.href = '/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 = $('input[name="bib"]').val();
            var link = '/cgi-bin/koha/tools/batchMod.pl?op=show&del=1&itemnumber=' + itemnr + '&biblionumber=' + bibnr + '&src=CATALOGUING';
            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"

/* Knappar för kopiera och återlämna  */
.bcopy, .breturn, .btrash {
  margin: 3px 5px 0 0;
  background: #ffc32b none;
  border: 1px solid #ffc32b;
}

.bcopy:hover, .breturn:hover, .btrash:hover {
  background:#ffd15e none;
  border: 1px solid #ffd15e;
}

.bcSel {
  background-color: #ffc32b;
  border-radius: 7px;
  padding:0 5px;
}
/* */

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.


  // *************************************************************************************
  // - Katalog / Exemplar
  //
  // Ä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.
  // ver 1.3
  // 2022-05-18
  // ( Kompatibel med 23.05 )

  if ($('#cat_additem').length) {
    var oldVal = $('select[id^="tag_952_subfield_y"]').val();
    $('#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"]').val('BARNBOK').trigger('change');
      } else {
        $('select[id^="tag_952_subfield_y"]').val(oldVal).trigger('change');
      }
    });
  }


Katalog / Exemplar

Döljer onödiga fält vid exemplarredigering/registrering.

Doldafalt.PNG


  // *************************************************************************************
  // - Periodika / Exemplar
  //
  // Döljer onödiga fält vid exemplarredigering/registrering
  // ver 1.1
  // 2022-05-02
  // ( Kompatibel med 23.05 )

  if ($('#ser_serials-edit').length) {

    var hiddenArr = ['0','1','2','4','5','6','e','f','g','j','t','u','w'];

    $('.subfield_line label').each(function() {
	  for (i = 0; i < hiddenArr.length; i++) {
      	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.


 // *************************************************************************************
  // - Låntagare / Registrering
  //
  // Stor bokstav i början på alla namn och adresser på låntagaranmälan och redigering
  // ver 1.1
  // ( Kompatibel med 23.05 )

  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.


  // *************************************************************************************
  // Endast småbokstäver i e-postfält
  // ver 1.1
  // ( Kompatibel med 23.05 )

  jQuery.fn.decapitalize = function() {
    $(this).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;
      }));
      $(this).val(txt.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.

  OBS! Onödigt efter version 22.05 då denna funktion är inbyggd.

Meddelande.png

  // *************************************************************************************
  // - Cirkulation / Utlåning o detalj för låntagare
  //
  // Meddelanden på låntagarsidan går nu redigera så man slipper skriva en nya varje gång.
  // ver 1.3
  // ( Kompatibel med 22.05 )

  if ($('#pat_moremember, #circ_circulation').length) {
    $('<a class="editmsg btn btn-link btn-sm" href="#"><i class="fa fa-edit"></i>Ändra</a>').insertAfter('#messages span');

    $('.editmsg').on('click', function() {

      var delmsglink = $(this).next().attr('href');
      var msg =  $(this).closest('li').find('span em').text().slice(1,-1);
      localStorage.setItem('editmsg', msg);

      $('#addnewmessageLabel').trigger('click');

      $('#borrower_message').val(msg);

      $(this).siblings('span').hasClass('circ-hlt') ? $('#message_type').val('L') : $('#message_type').val('B');

      $('.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.

Streckkodsrutan.PNG


  // *************************************************************************************
  // Exemplar
  //
  // 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.
  // ver 1.1
  // ( Kompatibel med 23.05 )

  $('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()) {
      $(this).select();
    }
  });



Cirkulation / Reservationer

Visar antal reservationer i kö vid utlån.

Antalreservationervidutlan.PNG

    // *************************************************************************************
    // - Cirkulation
    //
    // Antal reservationer i kö vid utlån (REST-api)
    // ver 3.4
    // 2024-06-05
    // ( Kompatibel med 23.05 )

    if ($('#circ_needsconfirmation').length) {
        var barcode = $('#circ_needsconfirmation input[name="barcode"]').val();
        if ($('#circ_needsconfirmation ul li').text().includes('Efterfrågat') || $('#circ_needsconfirmation ul li').text().includes('High demand')) {
            $('#circ_needsconfirmation ul').append('<li style="padding:15px 0">Antal reservationer i kö:\t <span id="antal"><i>Hämtar...</i><div class="loader"></div></span></li>');
            $.ajax({
                url: '/api/v1/items/?external_id=' + barcode + '&_match=exact',
                cache: true,
                success: function (bibnr) {
                    bibnr = bibnr[0].biblio_id;
                    $.ajax({
                        url: '/api/v1/holds/?biblio_id=' + bibnr + '&_per_page=500&_match=exact',
                        cache: true,
                        success: function (data) {
                            var inTransit = 0;
                            var waiting = 0;
                            var suspended = 0;
                            for (i = 0; i < data.length; i++) {
                                if (data[i].status == "T") {
                                    inTransit++;
                                }
                                if (data[i].status == "W") {
                                    waiting++;
                                }
                                if (data[i].suspended == true) {
                                    suspended++;
                                }
                            }
                            var leftRes = data.length - inTransit - waiting - suspended;
                            if (leftRes < 2) {
                                if (document.getElementById("override_high_holds_tmp").checked == false) {
                                    console.log('CHECKED!');
                                    $('#override_high_holds_tmp').trigger('click');
                                }
                            }
                            var link = '/cgi-bin/koha/reserve/request.pl?biblionumber=' + bibnr;
                            $('#antal').html('<b>' + leftRes + '</b><a href="' + link + '" target="_blank"> (Öppna kön i ny flik)</a>');

                            $('<li>I transport: <b>' + inTransit + '</b> - Aviserade: <b>' + waiting + '</b> - Pausade: <b>' + suspended + '</b></li>').appendTo('#circ_needsconfirmation ul');
                        }
                    });
                },
                error: function () {
                    $('#antal').html('<b>Okänt</b> (Något blev fel...)');
                }
            });
        }
    }

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.

Sparadelandatum.PNG

    // *************************************************************************************
    // - Cirkulation
    //
    // 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.
    // ver 4.4
    // Hämtar via REST-api
    // 2023-09-12
    // ( Kompatibel med 23.05 )

    $('#circ_needsconfirmation').each(function () { // Bekräfta lån-rutan
        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... <div class="loader"></div></h4>');
            var lastdate = 0;
            var borrower = $('#circ_needsconfirmation input[name="borrowernumber"]').val();
            var barcode = $('#circ_needsconfirmation input[name="barcode"]').val();
            $.ajax({
                url: '/api/v1/items/?external_id=' + barcode + '&_match=exact',
                cache: true,
                success: function (item) {
                    $.ajax({
                        url: '/api/v1/checkouts?patron_id=' + borrower + '&checked_in=true&_match=exact&q={"item_id":"' + item[0].item_id + '"}',
                        cache: true,
                        success: function (data) {
                            lastdate = data.length ? data[0].checkout_date.slice(0, 10) : null;
                            $('#circ_needsconfirmation #lastdateloading').remove();
                            var retMessage = lastdate ? '<b>' + lastdate + '</b>' : '<b>Okänt</b> <i>(före övergång till koha)</i>';
                            $('#circ_needsconfirmation ul').append('<li style="padding-top:10px" id="lastdate">Senast lånad:\t ' + retMessage + '</li>');
                        },
                        error: function () {
                            $('#circ_needsconfirmation #lastdateloading').remove();
                            $('#circ_needsconfirmation ul').append('<li style="padding-top:10px" id="lastdate">Senast lånad:\t <b>Okänt</b> <i>(före övergång till koha)</i></li>');
                        }
                    });
                }
            });
        }
    });

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.


  // *************************************************************************************
  // - Exemplar
  //
  // 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.
  // ver 1.1
  // ( Kompatibel med 23.05 )

  if ($('#cat_additem').length) {
    $('#cataloguing_additem_newitem #f').has('#edititem').each(function() {
      if ($('select[id^="tag_952_subfield_y"]').val() != "FJARRLAN") {
        $('#subfield952p input').keypress(function(event) {
          var keycode = event.keyCode || event.which;
          if(keycode == '13') {
            if ($(this).val()) {
              //console.log('Klick!');
              $('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.


  // *************************************************************************************
  // - Låntagare
  //
  // Personnummer endast 10 siffror och flytta fältet till ovan födelsedatum samt autofyll födelsedagsdatum,
  // Känner av att det är ett giltligt personnr annars rensar den fältet och ger ett meddelande.
  // Kontrollerar även nu oxå att inte personnumret finns sedan innan registrerat i katalogen.
  // Fyller även i automatiskt om det är en kvinna eller man.
  // ver 3.4
  // 2023-05-11
  // Kompatibel med 22.05

  var validatePersonalNumber = function(input) { // Valideringsscript för svenskt personnummer
    // Kontrollera godkänd längd och form
    if (!input) return false;

    if (input.indexOf('-') == -1) {
      input.length === 10 ? input = input.slice(0, 6) + "-" + input.slice(6) : input = input.slice(0, 8) + "-" + input.slice(8);
      /*
      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;
  };

  var patron_attr_personnr = $('input[value="PERSNUMMER"]').siblings('textarea');

  $(patron_attr_personnr).parent().insertBefore('li label[for="dateofbirth"]'); // Flyttar personnrfältet till innan födelsedagsdatumfältet

  $(patron_attr_personnr).attr('maxlength', '10').attr('placeholder', '10 siffror (ÅÅMMDDNNNN)').attr('style', 'width: 174px; height: 22px;'); // Ge fältet rätt attribut

  $(patron_attr_personnr).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

      var millenium = patronyear > year ? '19' : '20';
      $('input#dateofbirth').val(millenium + $(this).val().slice(0, 2) + '-' + $(this).val().slice(2, 4) + '-' + $(this).val().slice(4, 6)).trigger('change');

      $('input#userid').val($(this).val()); // Kopierar även personnr till OPAC Användarnamnet

      chkpnr = $(this).val();

      $.get('https://' + window.location.hostname + '/cgi-bin/koha/svc/report?id=1017&sql_params=' + chkpnr).done(function(datan) {
        console.log(datan);

        if (datan.length != 0) {
          alert('Personnumret finns redan registrerat!');
          $(patron_attr_personnr).css('background', 'red').focus().select();
        } else {
          $(patron_attr_personnr).css('background', '#d4efb7');
        }
      });

      var gender = $(this).val().charAt(8); // Kontrollera om det är en man eller kvinna och fyll i kön automatiskt
      gender = parseInt(gender, 10);
      if ($('#sex-female').length) {
        gender % 2 == 0 ? document.getElementById("sex-female").checked = true : document.getElementById("sex-male").checked = true;
      }
    } else {
      $(patron_attr_personnr).val(null); // Rensa fältet
      alert("Personnummret är felaktigt, var god ändra."); // Varna för fel personnr
      setTimeout(function() {
        $(patron_attr_personnr).focus();
      }, 1); // Ställ markören i fältet igen
    };
  });


  $('#dateofbirth').focus(function() {
    console.log(validatePersonalNumber($(patron_attr_personnr).val()));
    if (validatePersonalNumber($(patron_attr_personnr).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 = $(patron_attr_personnr).val().slice(0, 2); // Kollar personnummrets två första siffror och sparar det till variable

      var millenium = patronyear > year ? '19' : '20';
      $('input#dateofbirth').val(millenium + $(patron_attr_personnr).val().slice(0, 2) + '-' + $(patron_attr_personnr).val().slice(2, 4) + '-' + $(patron_attr_personnr).val().slice(4, 6));
    }
  });


Låntagare / Smsnummer

Lägger automatiskt in samma nummer som fylls i fältet Annan telefon(other phone) till SMSnummer.


  // *************************************************************************************
  // - Låntagare
  //
  // Lägger automatiskt in samma nummer som fylls i mobilnummer till SMSnummer,
  // samt kopiera mobilnr till hemtelefon om inget nummer finns där innan.
  // ver 1.4
  // ( Kompatibel med 23.05 )

  if ($('#pat_memberentrygen').length) {
    if ($('input#SMSnumber').length) {
      $('input#mobile').change(function() {
        var telnr = $(this).val();
        telnr = telnr.slice(1);
        $('input#SMSnumber').val('+46' + telnr);
        $('input#phone').val() == "" ? $('input#phone').val('0' + telnr) : null;
      });

      if ($('input#SMSnumber').val().length > 0) {
        if ($('input#SMSnumber').val().slice(0, 2).indexOf('46') > -1) {
          var telnr = $('input#SMSnumber').val();
          telnr = telnr.slice(2);
          $('input#SMSnumber').val('+46' + telnr);
        } else {
          if ($('input#SMSnumber').val().slice(0, 1).indexOf('+') == -1) {
            var telnr = $('input#SMSnumber').val();
            telnr = telnr.slice(1);
            $('input#SMSnumber').val('+46' + telnr);
          }
        }
      }
    }
  }


Låntagare / Nummerfält

Tillåt endast siffror i telefonnummer och personnummer.


  // *************************************************************************************
  // - Låntagare
  //
  // Tillåt endast siffror i personnummer och mobiltelefonnummer (med förklaring om endast svenska nummer)
  // ver 1.2
  // ( Kompatibel med 23.05 )

  $("input#mobile" || patron_attr_personnr).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();
    }
  });

  $('<span class="hint"> Endast svenska mobilnummer</span>').insertAfter("input#mobile");

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.

Duplicera.PNG


 // *************************************************************************************
  // - Exemplar
  //
  // Lägga in flera exemplar av samma bok utan extra knapptryck
  // Markering av senast inlagt exemplar i listan med grönt
  // ver 1.2
  // ( Kompatibel med 23.05 )

  if (!$('#cat_additem').length) {
    localStorage.removeItem('addmulti');
  };

  $('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.


 // *************************************************************************************
  // - Startsidan
  //
  // Gömmer redigeringsknapparna för nyheterna
  // ( Kompatibel med 23.05 )

  $("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.

Felsökning.PNG


    // *************************************************************************************
    // - Katalog / Sökning
    //
    // Felsökning i "Låna ut", ta med sökning till katalog, samt spara senast sökning så den visas i sökfältet som markerad text.
    // ver 1.5
    // 2023-09-07
    // ( Kompatibel med 23.05 )

    if ($('#pat_member').length) {
        const params = new Proxy(new URLSearchParams(window.location.search), {
            get: (searchParams, prop) => searchParams.get(prop),
        });
        let string = params.searchmember;
        var location = window.location.hostname;

        if (string != null) {
            $('<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" style="margin-bottom:10px">Sök i katalogen</button>').insertAfter('#toolbar');
            $('#searchcat').focus();

            $('#searchcat').on('click', function (event) {

                localStorage.setItem('lastsearch', string);
                window.location.assign("/cgi-bin/koha/catalogue/search.pl?idx=kw&q=" + string);
            });
        }
    }

    $('#patronsearch').bind('submit', function (event) {
        if ($('#findborrower').val() == '') {
            event.preventDefault();
            $('#searchcat').trigger('click');
        }
    });

    $('#catalog_results #search-form, #catalog_detail #search-form').val(localStorage.getItem('lastsearch')).select();

    $('#main_intranet-main').ready(function () {
        localStorage.removeItem('lastsearch');
    });


    $('#cat-search-block').bind('submit', function () {
        var string = $('#search-form').val();
        localStorage.setItem('lastsearch', string);
    });

Katalog / Resultat

Klickbara hyllsignaturer.


    // *************************************************************************************
    // - Katalog / Resultat
    //
    // Klickbara hyllsignaturer
    // ver 1.1
    // 2023-09-07
    // ( Kompatibel med 23.05 )

    $('td.itemcallnumber').each(function () {
        var itemcallnr = $(this).text().slice(1);
        var location = window.location.hostname;
        $(this).html('<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&q=' + itemcallnr + '">' + itemcallnr + '</a>');
    });

Katalog / Klassifikation

Gör klassifikationer i katalogposten klickbara.

    // *************************************************************************************
    // - Katalog
    //
    // Gör klassifikationer i katalogposten klickbara
    // ver 2.3
    // 2023-09-07
    // ( Kompatibel med 23.05 )

    $(".results_summary.oc").each(function () {
        var oc = $(this).text();
        var newtext = oc.slice(0, oc.indexOf(':') + 1);
        $(this).text(newtext);
        oc = oc.slice(oc.indexOf(':') + 1);
        ocarr = oc.trim().split(' | ');
        for (i = 0; i < ocarr.length; i++) {
            $(this).append('<a href="/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.

Adlibrisbtjlegimus.PNG


  // *************************************************************************************
  // - Katalog
  //
  // Gör ISBN i katalogposten klickbara för att komma till Adlibris, Btj, Legimus och LIBRIS
  // Knapp i toolbar för länk till LibrisXL
  // Samt förhandsvisning av post hos Adlibris när man har muspekaren över Adlibris-länken.
  // Omslagsbilder på resultat- och detaljsidan, valbart om man vill visa eller inte.
  // ver 2.4
  // 2022-10-14
  // ( Kompatibel med 22.05 )

  // Omslagbild från Bokinfo samt från Overdrives E-böcker på sökresultat

  function getImageResult(isbn) {
    if (isbn.slice(0, 3) == '978') {
      isbn = isbn.slice(0, 13);
      var subfolder = isbn.slice(0, 6);
    } else {
      isbn = '978' + isbn.slice(0, -1);
      var subfolder = isbn.slice(0, 6);
      isbnNr = parseInt(isbn, 10);
      var sum = 0;
      for (var x = 0; x < isbn.length; x++) {
        if (x === 0) {
          sum = sum + parseInt(isbn[x], 10);
        } else if (x % 2 === 0) {
          sum = sum + parseInt(isbn[x], 10);
        } else {
          sum = sum + (parseInt(isbn[x], 10) * 3);
        }
      }
      sum = 10 - (sum % 10);
      if (sum == 10) {
        sum = 0;
      };
      isbn = isbnNr.toString();
      isbn = isbn.concat(sum.toString());
    }

    if (isbn.length > 2) {
      return isbn;
    }
  };

  if ($('#catalog_results').length) {

    $('<label><input id="IMGchk" type="checkbox" style="margin:0 3px 0 5px;">Visa omslagsbilder</label>').appendTo('#selection_ops');

    if ($('#IMGchk').length) {
      if (localStorage.getItem("showimages") === null) {
        document.getElementById("IMGchk").checked = true;
        localStorage.setItem('showimages', 'on');
      }
      localStorage.getItem('showimages') == "on" ? document.getElementById("IMGchk").checked = true : document.getElementById("IMGchk").checked = false;
    }

    $('#IMGchk').change(function() {
      if ($(this).is(':checked')) {
        localStorage.setItem('showimages', 'on');
        $('.coverIMG, .coverIMGbig').css('display', 'unset');
      }
      if ($(this).is(':unchecked')) {
        localStorage.setItem('showimages', 'off');
        $('.coverIMG, .coverIMGbig').css('display', 'none');
      }
    });
  }

  $(".results_summary.isbn").each(function() {
    var isbn = $(this).text().slice(5);
    isbn = isbn.replace(/x/g, 'X');
    isbn = isbn.replace(/[^0-9X;]/g, '');
    if (isbn.indexOf(';') > -1) {
      isbn = isbn.replace(';', ' ').replace(/\s+/g, ' ').trim();
      isbnarr = isbn.split(' ');
      isbn = isbnarr[0].toString();
    }
    if (isbn.slice(0,3) == '978') {
      //console.log('978');
      isbn = isbn.slice(0,13);
    } else {
      //console.log(isbn);
      isbn = isbn.slice(0,10);
    }

    //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/storkund/search?phrase=' + 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>');
    // LibrisXL
    //$('.isbncont', this).append('<a href="https://libris.kb.se/katalogisering/search/libris?identifiedBy.value=' + isbn +'&identifiedBy.%40type=ISBN&_limit=20&%40type=Instance&_sort=" target="_blank">LibrisXL</a>');

    //var thisisbn = $(this);

    localStorage.getItem('showimages') == "on" ? $('.coverIMG, .coverIMGbig').css('display', 'unset') : $('.coverIMG, .coverIMGbig').css('display', 'none');

    var imgISBN = getImageResult(isbn);
    var subfolder = imgISBN.slice(0, 6);

    //testImage('http://bokinfo.se/Images/Products/Medium/' + subfolder + '/' + imgISBN + '.jpg');


    if ($(this).closest('td').find('.result-biblio-itemtype').text().trim() == 'E-bok' || $(this).closest('td').find('.result-biblio-itemtype').text().trim() == 'E-ljudbok') {
      odCoverLink = $(this).closest('td').find('.results_summary.online_access a:last').attr('href');
      $(this).closest('td').prepend('<img class="coverIMG" alt="" src="' + odCoverLink + '" style="">');
    } else {

      $(this).closest('td').prepend('<img class="coverIMG" id="img_' + imgISBN + '"alt="" src="https://bokinfo.se/Images/Products/Medium/' + subfolder + '/' + imgISBN + '.jpg" onerror="javascript: console.log(\'Cover not loaded\')">');

      //document.getElementById('img_' + imgISBN).addEventListener('error', function() {console.log('No cover loaded for' + imgISBN);});

      if ($('#catalog_detail').length) {
        $('<table id="imgtable"><td id="bookimg"></td><td id="details"></td></div>').insertBefore('#catalogue_detail_biblio');
        $('#bookimg').append('<img class="coverIMGbig" alt="" src="https://bokinfo.se/Images/Products/Medium/' + subfolder + '/' + imgISBN + '.jpg" style="">');
        $('#catalogue_detail_biblio').appendTo('#details');
        $(".coverIMG, .coverIMGbig").on("error", function() {
          $(this).remove();
          $('#catalogue_detail_biblio').insertBefore('#imgtable');
          $('#imgtable').remove();
        });
      }
      $(".coverIMG, .coverIMGbig").on("error", function() {
        $(this).remove();
      });
    }
  });

  if ($('#catalog_detail').length) {
    var bibnr = $('input[name="bib"]').val();
    if (bibnr) {
      $.ajax({
        url: 'https://' + window.location.hostname + '/api/v1/biblios/' + bibnr,
        type: "GET",
        accepts: {
        "*": "application/marc-in-json"
        },
        contentType: "application/marc-in-json;charset=ISO-8859-15",
        complete: function(data) {
          //console.log(data.responseJSON.fields);
          data.responseJSON.fields.forEach(function(item) {
            if (Object.keys(item)[0] == '003') {
              if (Object.values(item)[0] == 'SE-LIBR') {
                data.responseJSON.fields.forEach(function(item) {
                  if (Object.keys(item)[0] == '001') {
                    //console.log(Object.values(item)[0]);
                    librisnr = Object.values(item)[0];
                    $('<div class="btn-group"><a id="librisxl" class="btn btn-default" href="https://libris.kb.se/katalogisering/search/libris?q=' + librisnr + '&%40type=Instance" target="_blank"><i class="fa fa-edit"></i> LibrisXL</a></div>').insertBefore($('#placehold').parent());
                  }
                });
              }
            }
          });
        }
      });
    }
  }


  $('.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/storkund/search?phrase=' + isbn + '" width="720px" height="700px"></iframe></div>').insertAfter(this);

  });

  $('.pvframelink').on('mouseout', function() {
    $('.previewbox').remove();
  });


OBS Denna kod behöver klistras in i IntranetUserCSS för att det ska fungera

/* Förhandsvisningsfönstret för Adlibrislänk */

.previewbox { 
  display:none;
  background: #fff;
  z-index: +100;
  -webkit-box-shadow: 10px 10px 5px 0px rgba(160,160,160,1);
  -moz-box-shadow: 10px 10px 5px 0px rgba(160,160,160,1);
  box-shadow: 10px 10px 5px 0px rgba(160,160,160,1);
  position: fixed;
  right: 50px;
  bottom: 50px;
}

a.pvframelink:hover + .previewbox { /* Visa förhandsvisningsfönstret */
  display:block;   
}

.pvframe { /* Padding och border för förhandsvisningsfönstret */
  padding: 20px;
  border: 1px solid #d0d0d0;
}

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.

Senastelantagare.PNG


  // *************************************************************************************
  // - Header / Search
  //
  // Spara senaste låntagare som lånat eller återlämnat med hjälp av cookies
  // ver 3.2
  // 2022-10-20
  // ( Kompatibel med 22.05 )

  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');
    checkedinpatron = checkedinpatron.slice(checkedinpatron.indexOf('=') + 1);
    var patronname;
    var patronlink = $(this).attr('href');

    $.ajax({
      url: 'https://' + window.location.hostname + '/api/v1/patrons/',
      data: {"patron_id" : checkedinpatron },
      cache: true
    }).done(function(data) {
      patronname = data[0].firstname + ' ' + data[0].surname + ' (' + data[0].cardnumber + ')';

      var checkedin = $('#circ_returns').length ? ' [ Återlämnat ]' : '';
      document.cookie = "lastpatron=" + patronname + checkedin + "; expires=" + midnight + "; path=/; Samesite=Strict" ;

      patronlink = patronlink.slice(patronlink.indexOf('?') + 1);
      document.cookie = "patronlink=" + patronlink + "; expires=" + midnight + "; path=/; Samesite=Strict" ;

      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=/; SameSite=Strict" ;
    document.cookie = "patronlink=" + patronlink + "; expires=" + midnight + "; path=/; SameSite=Strict" ;

    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=/; Samesite=Strict" ;

    var name = Cookies.get('lastpatron');
    var link = Cookies.get('patronlink');
    var time = Cookies.get('timestamp');

    if (Cookies.get('lastpatrons')) {

      var theString = Cookies.get('lastpatrons');
      var lastpatrons = theString.split(",");
      var theString2 = Cookies.get('patronlinks');
      var patronlinks = theString2.split(",");
      var theString3 = Cookies.get('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=/; Samesite=Strict";
    document.cookie = "patronlinks=" + patronlinks + "; expires=" + midnight + "; path=/; Samesite=Strict" ;
    document.cookie = "timestamps=" + timestamps + "; expires=" + midnight + "; path=/; Samesite=Strict" ;

  };


  if (Cookies.get('lastpatron')) { // Visa knappen ifall det finns en sparad låntagare
    var lpatron = Cookies.get('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 (Cookies.get('lastpatron')) {
      event.preventDefault();
      var patronlink = Cookies.get('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

    Cookies.remove('patronlink', { path: '/' });
    Cookies.remove('lastpatron', { path: '/' });
    Cookies.remove('lastpatrons', { path: '/' });
    Cookies.remove('patronlinks', { path: '/' });
    Cookies.remove('timestamp', { path: '/' });
    Cookies.remove('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 = Cookies.get('lastpatrons');
    var names = lp.split(",");
    var pl = Cookies.get('patronlinks');
    var links = pl.split(",");
    var ts = Cookies.get('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);
        }
      }
    });
  });

OBS. Detta stycke här under måste även läggas till i "IntranetUserCSS"

.timestamps {
  color:red;
  padding-right:10px;
}

Cirkulation / Reservation

Snabbaccess till senaste låntagare vid reservation.

Senastelantagarereservation.PNG


// *************************************************************************************
  // - Cirkulation / Reservation
  //
  // Snabbaccess till senaste låntagare vid reservation
  // ver 2.3
  // ( Kompatibel med 22.05 )

  if ($('#circ_request').length) {
    const queryString = window.location.search;
    const urlParams = new URLSearchParams(queryString);
    var biblionumber = urlParams.get('biblionumber');

    if (Cookies.get('lastpatron')) {
      var name = Cookies.get('lastpatron');
      var link = $('#holds_patronsearch').attr('action');
      //var biblionumber = $('input[name="biblionumber"').val();
      var location = window.location.hostname;
      var patronlink = Cookies.get('patronlink');
      $('<br /><br /><span>Reservera för senaste låntagaren: </span><a href="https://' + location + '/cgi-bin/koha/reserve/request.pl?biblionumber=' + biblionumber + '&' + patronlink + '" id="hold">' + name + '</a>').appendTo('#holds_patronsearch_pane');

      $('<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>').appendTo('#holds_patronsearch_pane');

      $('#lastpatrons_res').on('click', function(event) { // Öppna listan med senaste låntagare

        var reslp = Cookies.get('lastpatrons');
        var resnames = reslp.split(",");
        var respl = Cookies.get('patronlinks');
        var reslinks = respl.split(",");
        var rests = Cookies.get('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 + biblionumber + '&' + 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);
            }
          }
        });
      });
    }
  }


Cirkulation / Tidsstämpel

Ta bort tidsstämpeln på återlämnade böcker.


// *************************************************************************************
  // - Cirkulation
  //
  // Ta bort tidsstämpeln på återlämnade böcker
  // ( Kompatibel med 20.11 )

  $("td.ci-duedate:contains('23:59')").each(function() {
    var text = $(this).html().replace('23:59', '');
    $(this).html(text);
  });

Cirkulation / Exemplar

Markerar raden med det aktuella exemplaret efter sökt streckkod.

Markerarad.PNG


  // *************************************************************************************
  // - Cirkulation
  //
  // Markerar raden med det aktuella exemplaret efter sökt streckkod
  // ( Kompatibel med 21.11 )

  $('#cat-search-block .submit').on('click', function() { // Vanlig katalogsökning
    localStorage.setItem('search-form', $('#search-form').val());
  });

  $('form[action="search.pl"] .btn').on('click', function() { // Avancerad sökning
    $('input[type="text"]').each(function() {
      var value = $(this).val();
      if (value !== '') {
        localStorage.setItem('search-form', value);
      }
    });
  });

  if ($('#catalog_detail').length) {
    var storedsearch = localStorage.getItem('search-form');
    if (storedsearch != null) {
      $('#holdings a[href^="/cgi-bin/koha/catalogue/moredetail.pl"]').each(function() {
      	if ($(this).text() == storedsearch) {
          $(this).closest('tr').children().css('background-color', '#d4efb7');
          localStorage.removeItem('search-form');
        }
      });
      $('#otherholdings a[href^="/cgi-bin/koha/catalogue/moredetail.pl"]').each(function() {
      	if ($(this).text() == storedsearch) {
          $(this).closest('tr').children().css('background-color', '#d4efb7');
          localStorage.removeItem('search-form');
          waitForEl('li[aria-controls="holdings"]', function() {
            return $('a[href="#otherholdings"]').trigger('click');
          });
        }
      });
    }
  }


Exemplar / Nytt exemplar

Lägger in taggen #additema så fokus hamnar på exemplarinläggningen vid Nytt exemplar.


// *************************************************************************************
  // - Exemplar
  //
  // Lägger in taggen #additema så fokus hamnar på ememplarinläggningen vid Nytt exemplar
  // ( Kompatibel med 20.11 )

  $('#cataloguing_additem_newitem #f').attr('action', '/cgi-bin/koha/cataloguing/additem.pl#additema');

Katalog / Resultat

Visa fler/färre på resultatsidan, Märker även tillgängligheten med grön/röd.

Visaflerfarre.PNG


  // *************************************************************************************
  // - Katalog / Resultat / Listor
  //
  // Visa fler/färre på resultatsidan och på listor
  // Märker även tillgängligheten med grön/röd
  // ver 3.4
  // ( Kompatibel med 22.05 )

  if ($('#catalog_results').length) {
    //if ($('.logged-in-branch-name:first()').text().length > 0) {
      var loggedinbranch = $('.logged-in-branch-name:first()').text();
      localStorage.setItem('loggedinbranch', loggedinbranch);
    //}

    $('.availability').each(function() {
      var lin = $(this).find('li').length;

      if (lin > 0) {
        $('li', this).hide().addClass('toggleable');
        $(this).append('<span class="more">Visa fler...</span>');
      }
    });

    $('#lists_shelves #searchresults td:nth-child(5)').each(function() {
      var lin = $(this).find('li').length;

      if (lin > 1) {
        $('li', this).hide().addClass('toggleable');
        $(this).append('<span class="more">Visa fler...</span>');
      }
    });

    $('.availability li').each(function() {
      //var loggedinbranch = $('.logged-in-branch-name:first()').text();
      if ($(this).text().indexOf(loggedinbranch) > -1) {

        $(this).removeClass('toggleable').show();

        $(this).parent().hasClass('onloan_items_loop_items') || $(this).parent().hasClass('other_items_loop_items') ? $(this).css('background','#ffe7e7') : $(this).css('background','#d4efb7');

        /*
        if ($(this).parent().hasClass('onloan_items_loop_items') || $(this).parent().hasClass('other_items_loop_items')) {
          $(this).css('background','#ffe7e7');
        } else {
          $(this).css('background','#d4efb7');
        }
        */

        // Karlsborg - Undenäs - Mölltorp

        if (loggedinbranch.indexOf('Karlsborg') > -1 || loggedinbranch.indexOf('Undenäs') > -1 || loggedinbranch.indexOf('Mölltorp') > -1) {
          $('.availability li').each(function() {
            if ($(this).text().indexOf('Karlsborg') > -1 || $(this).text().indexOf('Undenäs') > -1 || $(this).text().indexOf('Mölltorp') > -1) {
              $(this).removeClass('toggleable').show();
              $(this).parent().hasClass('onloan_items_loop_items') || $(this).parent().hasClass('other_items_loop_items') ? $(this).css('background','#ffe7e7') : $(this).css('background','#d4efb7');
            }
          });
        }

        // Tidaholm - KVA

        if (loggedinbranch.indexOf('Tidaholm') > -1) {
          $('.availability li').each(function() {
            if ($(this).text().indexOf('Tidaholm') > -1) {
              $(this).removeClass('toggleable').show();
              $(this).parent().hasClass('onloan_items_loop_items') || $(this).parent().hasClass('other_items_loop_items') ? $(this).css('background','#ffe7e7') : $(this).css('background','#d4efb7');
            }
          });
        }
      }
    });

    $('.availability, #lists_shelves #searchresults td:nth-child(5)').on('click', '.more', function() {
      $(this).hasClass('less') ? $(this).text('Visa fler...').removeClass('less') : $(this).text('Visa färre...').addClass('less');
      $(this).parent().children('ul').children('li.toggleable').slideToggle("fast");
    });
  }

Övergripande / Genvägar

När man trycker på Pause-Break knappen laddas kohas startsida.


 // *************************************************************************************
  // - Övergripande
  //
  // When Pause-Break button is pressed it will return to main page
  // ( Kompatibel med 20.11 )

  document.onkeydown = function keypress(e) {
    e = (e || window.event);
    if (e.keyCode == 19) {
      try {
        e.preventDefault();
      } //Non-IE
      catch (x) {
        e.returnValue = false;
      } //IE (verkade inte fungera!)
      window.location.href = "https://" + window.location.hostname;
    };
  }


Översättningar / Svenska


 // *************************************************************************************
  // - Översättningar / Svenska
  //

  $('label[for="mobile"]').text(function() {
    return $(this).text().replace('Annan telefon', 'Mobiltelefon');
  });

  $('#circmessages h3').html(function() {
    return $(this).html().replace('Till', 'Upplysningar');
  });

  $('#printquickslip').text(function() {
    return $(this).text().replace('Skriv ut snabbkvitto', 'Skriv ut endast nya lån');
  });

Katalog / Sortering

Sortera biblioteken i träfflistan i alfabetisk ordning.


  // *************************************************************************************
  // - Katalog
  //
  // Sortera biblioteken i träfflistan i alfabetisk ordning
  // ver 1
  // ( Kompatibel med 20.11 )

  $(".availability ul").each(function() {
    $(this).html(
      $(this).children("li").sort(function(a, b) {
        return $(a).text().toUpperCase().localeCompare(
          $(b).text().toUpperCase());
      })
    );
  });

Katalog / Tillgängligt

Markera "Tillgänglig" med grönt på detaljsidan.

Grontillganglig.PNG


 // *************************************************************************************
  // - Katalog
  //
  // Markera "Tillgänglig" med grönt på detaljsidan
  // ver 1
  // ( Kompatibel med 20.11 )

  $('#bibliodetails .status').each(function() {
    if ($(this).text().indexOf('Tillgänglig') > -1 | $(this).text().indexOf('Available') > -1) {
      $(this).css('color', 'green');
    };
  });


Låntagare / Dölj fält

Göm Alternativ adress och Mer information som standard vid låntagaranmälan


 // *************************************************************************************
  // - Låntagare
  //
  // Göm Alternativ adress och Mer information som standard vid låntagaranmälan
  // ver 2.1
  // ( Kompatibel med 20.11 )

  $('#memberentry_address ol, #memberentry_patron_attributes ol').hide();

Katalog / Resultat

Satsraderingsknapp på resultatsidan

Satsradering i resultat.JPG


 // *************************************************************************************
  // - Katalog / Resultat
  //
  // Satsraderingsknapp på resultatsidan
  // ver 1
  // 2019-05-13
  // ( Kompatibel med 20.11 )

  if ($('#catalog_results').length) {

    $('#selection_ops').append('<div class="btn-group"><button id="deleteposts" class="btn btn-default btn-xs" type="submit"><i class="fa fa-trash"></i> Radera</button></div>');

    $('#deleteposts').on('click', function() {

      var selIDs = [];
      var link = 'https://' + window.location.hostname + '/cgi-bin/koha/tools/batch_delete_records.pl?recordnumber_list=';

      $('.selection').each(function() {
        if ($(this).is(':checked')) {
          selIDs.push($(this).attr('value'));
        };
      });

      for (i = 0; i < selIDs.length; i++) {
        link = link + selIDs[i] + '%0D%0A';
      }

      link = link.substring(0, link.length - 6) + '&op=list';

      if (selIDs.length > 0) {
        window.open(link);
      } else {
        alert('Välj vilka poster du vill radera först...');
      };
    });
  };

Periodika / Spara

Spara exemplar när man drar streckkoden


// *************************************************************************************
  // - Periodika
  //
  // Vid registrering av nytt exemplar så får man frågan om man vill spara ifall man drar streckkoden.
  // Man behöver alltså inte klicka på knappen "Spara" vid registrering av exemplar med streckkod.
  // ver 1.1
  // 2019-12-09
  // ( Kompatibel med 20.11 )

  if ($('#ser_serials-edit').length) {

    $('input[id^="tag_952_subfield_p"]').each(function() {
      $(this).keypress(function(event) {
        var keycode = event.keyCode || event.which;
        if (keycode == '13') {
          if ($(this).val()) {
            var r = confirm('Vill du spara?');
            if (r == true) {
              $('.action input[type="submit"]').trigger('click');
            }
          }
        }
      });
    });
  }

Katalog / Exemplar

Knapp för uppdatera datum vid exemplarsredigering

Uppdatera knapp.JPG


  // *************************************************************************************
  // - Katalog / Exemplar
  //
  // Date acquired - Uppdatera-knapp
  // ver 1
  // 2019-05-21
  // ( Kompatibel med 20.11 )

  if ($('#cat_additem').length) {
    $('#subfield952d .buttonDot').each(function() {
      $(this).html('<button type="button">Uppdatera</button>')
    });
  };

Övergripande / Katalog

Klickbar lista över senaste besökta katalogposter

Senaste poster.JPG


  // *************************************************************************************
  // - Låntagare / Registrering
  //
  // Bekräfta E-postadress vid registrering
  // ver 1.4
  // 2022-10-12
  // Kompatibelt med 22.05

  function emailVal() {

    $('<br /><input type="text" id="email_2" name="email_2" size="45" style="margin-top:6px" value="" placeholder="Ange e-postadress igen..." class="decapitalizer noEnterSubmit" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off>').insertAfter('#email');
    if ($('#email').val().length && $('#email_2').val().length) {
      document.getElementById("saverecord").disabled = true;
    }
    if ($('#email').val().length) {

      $('#email_2').val($('#email').val());
      $('#email_2').css('background','lightgreen');

      if ($('#email').val() != $('#email_2').val()) {
        document.getElementById("saverecord").disabled = true;
      } else {
        document.getElementById("saverecord").disabled = false;
        $('#email').keyup(function() {
          $('#email_2').attr('value','');
          document.getElementById("saverecord").disabled = true;
          $('#email_2').css('background','#f8b7b7');
          $('#email_2').attr('value','');
        });
  /*
        $('#email_2').remove();
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
  */
      }
    }

    $('#email_2').keyup(function() {
      var email1 = $('#email').val();
      var email2 = $('#email_2').val();
      if (email1 == email2) {
        $('#email_2').css('background','lightgreen');
        document.getElementById("saverecord").disabled = false;
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
        $('#email_2').remove();

      } else {
        $('#email_2').css('background','#f8b7b7');
        document.getElementById("saverecord").disabled = true;
      }
    });
  }


  if ($('#pat_memberentrygen').length) {
    var queryString = window.location.search;
    var qstring = new URLSearchParams(queryString);
    var add = qstring.get('op');

    if (add == 'add') {
      $('#email').attr('autocomplete','off');
      $('#email').val('').change();
    }

    $('#email').val().length == -1 ? emailVal() : $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
    /*
    if ($('#email').val().length == -1) {
      emailVal();
    } else {
      $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
    }
    */
    $('#email').keyup(function() {
      $('#email_2').attr('value','');
      if ($('#emailOK').length) {
        $('#emailOK').remove();
        emailVal();
      }
    });
  }

OBS detta stycker behöver läggas in under IntranetUserCSS


/* Stilmall för Senaste poster-funktion */

#lastposts {
  font: 13px/1.22 arial,helvetica,clean,sans-serif;
  padding: 5px 40px;
}

#posts-dropdown li {
  background: unset;
  border: unset;
  width: 100%;
}

#posts-dropdown li a {
  padding: 5px 20px;
}

.bType {
  color: crimson;
}

.bIsbn {
  padding-left: 43px;
  font-size: smaller;
  width: 150px !important;
  display: inline-block;
}

.bPub {
  font-size: smaller;
  padding-left: 15px;
}

/* */


.more {
  color:red;
  cursor:pointer;
}

.timestamps {
  color:red;
  padding-right:10px;
}

#entryform legend {
  cursor:pointer;
}

#circ_needsconfirmation li{
  padding: 10px;
}

#circ_needsconfirmation #lastdate, #circ_needsconfirmation #lastdateloading {
  padding: 20px 0px;
}

#circ_needsconfirmation #lastdateloading {
  color: #d00;
}

#oppettider {
  max-width: 400px;
  margin: auto;  
}

#searchresults .status, #searchresults .unavailable {
  padding: 10px 0 0;
  font-weight: bold;
}

.editmsg {
  padding: 5px 0px 5px 10px;
}

.bcopy, .breturn {
  margin: 0 5px 0 0;
}


#hold-found2 .print {
  background-image: linear-gradient(to bottom, #00dd00 0, #009900 100%);
  color: #fff;
  text-shadow: none;
}

#hold-found2 .print:hover, #hold-found2 .print:focus  {
  background-color: #006000;
}



.hiddenbutton {
  float: inline-end;
}


.fjpostbox {
  background-color: gold;
  padding: 6px 20px 10px 10px;
  margin-left: 5px;
  border-radius: 5px;
  float:left;
}

.bcSel {
  background-color: gold;
}

.shelvingloc {
  color: olive;
  white-space: nowrap;
  display: block;
}

.datelastseen {
  white-space: nowrap;
}

Låntagare / Registrering

Extra fält för att bekräfta e-post adress och undvika felstavningar

Bekräfta e-post.JPG


  // *************************************************************************************
  // - Låntagare / Registrering
  //
  // Bekräfta E-postadress vid registrering
  // ver 1.4
  // 2022-10-12
  // Kompatibelt med 22.05

  function emailVal() {

    $('<br /><input type="text" id="email_2" name="email_2" size="45" style="margin-top:6px" value="" placeholder="Ange e-postadress igen..." class="decapitalizer noEnterSubmit" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off>').insertAfter('#email');
    if ($('#email').val().length && $('#email_2').val().length) {
      document.getElementById("saverecord").disabled = true;
    }
    if ($('#email').val().length) {

      $('#email_2').val($('#email').val());
      $('#email_2').css('background','lightgreen');

      if ($('#email').val() != $('#email_2').val()) {
        document.getElementById("saverecord").disabled = true;
      } else {
        document.getElementById("saverecord").disabled = false;
        $('#email').keyup(function() {
          $('#email_2').attr('value','');
          document.getElementById("saverecord").disabled = true;
          $('#email_2').css('background','#f8b7b7');
          $('#email_2').attr('value','');
        });
  /*
        $('#email_2').remove();
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
  */
      }
    }

    $('#email_2').keyup(function() {
      var email1 = $('#email').val();
      var email2 = $('#email_2').val();
      if (email1 == email2) {
        $('#email_2').css('background','lightgreen');
        document.getElementById("saverecord").disabled = false;
        $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
        $('#email_2').remove();

      } else {
        $('#email_2').css('background','#f8b7b7');
        document.getElementById("saverecord").disabled = true;
      }
    });
  }


  if ($('#pat_memberentrygen').length) {
    var queryString = window.location.search;
    var qstring = new URLSearchParams(queryString);
    var add = qstring.get('op');

    if (add == 'add') {
      $('#email').attr('autocomplete','off');
      $('#email').val('').change();
    }

    $('#email').val().length == -1 ? emailVal() : $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
    /*
    if ($('#email').val().length == -1) {
      emailVal();
    } else {
      $('<span id="emailOK" style="color:green;font-size:120%;"> OK! </span>').insertAfter('#email');
    }
    */
    $('#email').keyup(function() {
      $('#email_2').attr('value','');
      if ($('#emailOK').length) {
        $('#emailOK').remove();
        emailVal();
      }
    });
  }

Plocklista

Plocklista med omslagsbilder

Plocklista2.JPG


  // *************************************************************************************
  // - Plocklista
  //
  // Plocklista med omslagsbilder
  // ver 1.1
  // 2021-06-07
  // Kompatibelt med 20.11


  function getImagePlocklista() {
    $('.hq-pubdata').each(function() {
      if ($(this).text().indexOf('ISBN:') > 0) {
        var isbn = $(this).text();
        isbn = isbn.slice(isbn.indexOf('ISBN:') + 6);
        isbn = isbn.slice(0, isbn.indexOf('|')).replace(/\D/g, '');
        //console.log(isbn);
        if (isbn.slice(0, 3) == '978') {
          var subfolder = isbn.slice(0, 6);
        } else {
          isbn = '978' + isbn.slice(0, -1);
          var subfolder = isbn.slice(0, 6);
          isbnNr = parseInt(isbn, 10);
          var sum = 0;
          for (var x = 0; x < isbn.length; x++) {
            if (x === 0) {
              sum = sum + parseInt(isbn[x], 10);
            } else if (x % 2 === 0) {
              sum = sum + parseInt(isbn[x], 10);
            } else {
              sum = sum + (parseInt(isbn[x], 10) * 3);
            }
          }
          sum = 10 - (sum % 10);
          if (sum == 10) {
            sum = 0;
          }
          isbn = isbnNr.toString();
          isbn = isbn.concat(sum.toString());
        }
        if (isbn.length > 2) {
          $(this).closest('tr').children('.hq-notes').append('<img class="coverIMG" src="http://bokinfo.se/Images/Products/Small/' + subfolder + '/' + isbn + '.jpg" style="max-height:120px;max-width:100px;">');
        }
        $(".coverIMG").on("error", function() {
          //        $(this).append('<span class="no-image">Ingen omslagsbild finns tillgänglig</span>');
          $(this).remove();
        });
      }
    });
  }


  if ($('#circ_view_holdsqueue').length) {
    waitForEl('#holdst tbody', function() {
      //      $('#holdst').css('max-width','1000px');
      getImagePlocklista();
    });
  }

Övergripande / Plocklista

Skriv ut knapp med omslagsbilder och checkbox för att exkludera egna reservationer

Plocklista3.JPG


  // - Plocklista
  //
  // 1. "Skriv ut"-knapp som får med omslagsbilderna
  // 2. Checkbox för att exkludera egna reservationer på hembiblioteket
  // ver 1.3
  // 2023-02-24
  // Kompatibelt med 22.05

  if ($('#circ_view_holdsqueue').length) {

    waitForEl('.dt-buttons', function() {

      $('#holdst_wrapper .dt-buttons').append('<button id="printqueue" class="dt-button buttons-collection buttons-print" tabindex="0" type="button" aria-controls="holdst" href="#" title="" data-original-title="Skriv ut sidan"><span><i class="fa fa-lg fa-print"></i> <span class="dt-button-text">Skriv ut</span></span></button><label><input id="remOwnRes" type="checkbox" style="margin-left:10px;"> Exkludera lokala reservationer</label>');

      $('#printqueue').on('click', function() {
        $('aside').hide();
        var width = $('#holdst').css('width');
        $('#holdst').css('width','unset');
        $('.hq-patroncategory').hide();
        window.print();
        $('aside').show();
        $('#holdst').css('width', width);
        $('.hq-patroncategory').show();
      });

      var origText = $('.results').text();

      $('#remOwnRes').on('click', function() {
        var resCount = 0;

        if ($('#remOwnRes').is(':checked')) {
          $('#holdst tbody .hq-sendto').each(function() {
            if ($(this).text() == $('.logged-in-branch-name:first').text()) {
              $(this).parent('tr').hide();
              resCount = resCount + 1;
            }
          });
          $('.results').text($('.results').text() + ' (Varav ' + resCount + ' exemplar är dolda lokala reservationer)');
        }
        if ($('#remOwnRes').is(':unchecked')) {
          $('#holdst tbody .hq-sendto').each(function() {
            if ($(this).text() == $('.logged-in-branch-name:first').text()) {
              $(this).parent('tr').show();
            }
          });
          $('.results').text(origText);
        }
      });
    });

  }

Övergripande / Plocklista

Plocklista för inloggat bibliotek

Plocklista.JPG


  // - Plocklista
  //
  // 1. "Skriv ut"-knapp som får med omslagsbilderna
  // 2. Checkbox för att exkludera egna reservationer på hembiblioteket
  // ver 1.3
  // 2023-02-24
  // Kompatibelt med 22.05

  if ($('#circ_view_holdsqueue').length) {

    waitForEl('.dt-buttons', function() {

      $('#holdst_wrapper .dt-buttons').append('<button id="printqueue" class="dt-button buttons-collection buttons-print" tabindex="0" type="button" aria-controls="holdst" href="#" title="" data-original-title="Skriv ut sidan"><span><i class="fa fa-lg fa-print"></i> <span class="dt-button-text">Skriv ut</span></span></button><label><input id="remOwnRes" type="checkbox" style="margin-left:10px;"> Exkludera lokala reservationer</label>');

      $('#printqueue').on('click', function() {
        $('aside').hide();
        var width = $('#holdst').css('width');
        $('#holdst').css('width','unset');
        $('.hq-patroncategory').hide();
        window.print();
        $('aside').show();
        $('#holdst').css('width', width);
        $('.hq-patroncategory').show();
      });

      var origText = $('.results').text();

      $('#remOwnRes').on('click', function() {
        var resCount = 0;

        if ($('#remOwnRes').is(':checked')) {
          $('#holdst tbody .hq-sendto').each(function() {
            if ($(this).text() == $('.logged-in-branch-name:first').text()) {
              $(this).parent('tr').hide();
              resCount = resCount + 1;
            }
          });
          $('.results').text($('.results').text() + ' (Varav ' + resCount + ' exemplar är dolda lokala reservationer)');
        }
        if ($('#remOwnRes').is(':unchecked')) {
          $('#holdst tbody .hq-sendto').each(function() {
            if ($(this).text() == $('.logged-in-branch-name:first').text()) {
              $(this).parent('tr').show();
            }
          });
          $('.results').text(origText);
        }
      });
    });

  }

Periodika

Automatiskt fokus och markering på sökrutan/titel samt uppdateraknapp av datumet till dagens datum vid inleverans av exemplar

  // - Periodika
  //
  // Automatiskt fokus och markering på sökrutan/titel,
  // samt uppdateraknapp av datumet till dagens datum vid inleverans av exemplar."
  // Vid "klicka för lägga till exemplar" ställs markören automatiskt på streckkod
  // ver 1.3
  // 2023-02-04
  // Kompatibelt med 22.05

  if ($('#ser_serials-home, #ser_serials-search, #ser_subscription-detail, #ser_serials-edit, #ser_serials-collection').length) {
    $('#title_filter').focus();
    $('#title_filter').select();
  }

  if ($('#ser_serials-edit').length) {
    $('#serials_edit tbody tr td:nth-child(2)').each(function() {
      $(this).append('<a class="upDate"><i class="fa fa-refresh" aria-hidden="true"></i></a>');
      $('.upDate').on('click', function() {
        var today = new Date();
        var dd = String(today.getDate()).padStart(2, '0');
        var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
        var yyyy = today.getFullYear();
        today = yyyy + '-' + mm + '-' + dd;
        //$(this).siblings('input').val(today);
        //$(this).parent('td').siblings('td:nth-child(4)').children('input').val(today);
      	$(this).closest('tr').find('input[name="publisheddate"]').val(today).change();
        $(this).closest('tr').find('input[name="planneddate"]').val(today).change();
      });
    });
  }

  if ($('#ser_serials-edit').length) {
    $('a[id^=label]').on('click', function() {
      $(this).parent().find('input[id^="tag_952_subfield_p"]').focus();
      $(this).parent().find('input[id^="tag_952_subfield_p"]').select();
    });
  }

Katalog / Katalogisering

Automatisk ändring av frameworkcode vid vald itemtype


  // - Katalog / Katalogisering
  //
  // Automatiskt ändring av Framworkcode vid vald itemtype
  // ver 1.1
  // 2020-01-23
  // Kompatibelt med 22.05

  if ($('#cat_addbiblio').length) {

    function cfwk(frameworkcode) {
      $("#frameworkcode").val(frameworkcode);
      Changefwk();
    }

    function chkFwc() {
      var fwcArray = [
        ['BARNBOK', 'BKS'],
        ['BOK', 'BKS'],
        ['FILM', 'VR'],
        ['BARN LJUD', 'SR'],
        ['BARNMP3', 'SR'],
        ['MUSCDBARN', 'SR'],
        ['BARN TIDSK', 'SER'],
        ['BLURAY', 'VR'],
        ['LJUDBOK', 'SR'],
        ['MP3', 'SR'],
        ['DAISY', 'DAIS'],
        ['TIDSKRIFT', 'SER'],
        ['VHS', 'VR'],
        ['BARNTAL', 'DAIS']
      ];

      for (i = 0; i < fwcArray.length; i++) {
        if ($('select[id^="tag_942_subfield_c"]').find('option:selected').val() == fwcArray[i][0]) {
          if ($('#frameworkcode').attr('value') == fwcArray[i][1]) {
            console.log('Redan ändrad frameworkcode');
          } else {
            if ($("#frameworkcode").val() != 'FA') {
              cfwk(fwcArray[i][1]);
            }
          }
        }
      }
    }

    chkFwc();

    $('select[id^="tag_942_subfield_c"]').change(function() {
      if ($("#frameworkcode").val() != 'FA') {
        chkFwc();
      }
    });
  }

Katalog / Exemplar

Kloning av exemplar

Kloning.JPG Kloning2.JPG


  // - Katalog / Exemplar
  //
  // Kloning av exemplar
  // ver 2
  // 2022-05-12
  // Kompatibelt med 22.05

  if ($('#catalog_detail').length) {
    $('.itemselection_actions').append('<a class="itemselection_action_clone" href="' + $('#newitem').attr('href') + '"><i class="fa fa-copy"></i> Klona valt exemplar</a>');
    $('#bibliodetails input').change(function() {
      $('#bibliodetails input:checkbox:checked').length > 1 ? $('.itemselection_action_clone').hide() : $('.itemselection_action_clone').show();
    });

    $('.itemselection_action_clone').on('click', function(event) {
      event.preventDefault();
      var itype = $('#bibliodetails input:checkbox:checked').parent().siblings('.itype').text().trim();
      var homebranch = $('#bibliodetails input:checkbox:checked').parent().siblings('.homebranch').text().trim();
      var shelvingloc = homebranch.slice(homebranch.indexOf('↳') + 1).trim();
      homebranch = homebranch.slice(0, homebranch.indexOf('↳')).trim();
      var collection = $('#bibliodetails input:checkbox:checked').parent().siblings('.homebranch').next('td').text().trim();
      var itemcallnumber = $('#bibliodetails input:checkbox:checked').parent().siblings('.itemcallnumber').text().trim();
      var iteminfo = {itype:itype, homebranch: homebranch, shelvingloc: shelvingloc, collection: collection, itemcallnumber: itemcallnumber};
      var iteminfo = JSON.stringify(iteminfo);

      sessionStorage.setItem('iteminfo', iteminfo);
      window.location = $('#newitem').attr('href');
    });
  }

  if ($('#cat_additem').length) {
    if (sessionStorage.getItem("iteminfo") !== null) {
      var iteminfo = JSON.parse(sessionStorage.getItem('iteminfo'));


      $('#subfield952o input').val(iteminfo.itemcallnumber);

      setTimeout(function() {

        $('select[id^="tag_952_subfield_8"]').children('option').each(function() {
          if ($(this).text() == iteminfo.collection) {
            $('select[id^="tag_952_subfield_8"]').val($(this).val()).trigger('change');
          }
        });

        $('select[id^="tag_952_subfield_c"]').children('option').each(function() {
          if ($(this).text() == iteminfo.shelvingloc) {
            $('select[id^="tag_952_subfield_c"]').val($(this).val()).trigger('change');
          }
        });

        $('select[id^="tag_952_subfield_y"]').children('option').each(function() {
          if ($(this).text() == iteminfo.itype) {
            $('select[id^="tag_952_subfield_y"]').val($(this).val()).trigger('change');
          }
        });

        $('input[id^="tag_952_subfield_d"]').focus();
        $('input[id^="tag_952_subfield_p"]').focus().select();

      }, 1000);

      sessionStorage.removeItem("iteminfo");
    }
  }

Låntagare / Ny låntagare

Flytta fältet för mobiltelefon till överst

Mobiltele.JPG


  // - Låntagare / Ny låntagare
  //
  // Flytta fältet för mobiltelefon till överst
  // ver 1
  // 2020-01-21
  // Kompatibelt med 20.11

  if ($('#pat_memberentrygen').length) {
    $('#memberentry_contact ol li:nth-child(3)').prependTo('#memberentry_contact ol');
  }

Övergripande / Sökning

Känner av om det är ISBN i sökfältet och ändrar automatiskt till ISBN-sökning

Isbnsökning.JPG


  // *************************************************************************************
  // Övergripande - Sökning
  //
  // Känner av om det är ett ISBN i sökfältet
  // ver 1.4
  // ( Kompatibel med 22.05 )

  $('#search-form').keydown(function(e) {

    var eventhandler = function(e) {
      e.preventDefault();      
    }
          
    var keycode = e.keyCode || e.which;
    var isbn = $(this).val();
    isbn = isbn.replace(/[^X-Xx-x0-9]+/g,'');
    if (keycode == '13') {
      $("#myform").bind('submit', eventhandler);
    }

    switch(isbn.length) {

      case 10:
        if (keycode == '13') {
          if (confirm('Är detta ett ISBN-nummer?')) {
            $('.advsearch').val('nb');
          }
          $("#myform").unbind('submit', eventhandler);
        }
        break;

      case 13:
        if ($(this).val().slice(0,3).indexOf('978') > -1 || $(this).val().slice(0,3).indexOf('979') > -1) {
          $('.advsearch').val('nb');
        }
        break;

      default:
        if ($('.advsearch').val() == 'nb') {
          $('.advsearch').val('kw');
        }
    }
  });

Katalogisering / Sökning

Tar bort bindestreck i ISBN-fältet vid sökning i z3950


  // *************************************************************************************
  // Katalogisering - Sökning
  //
  // Ta bort bindestreck i ISBN-fältet vid sökning i z3950
  // ver 1.2
  // ( Kompatibel med 22.05 )

  function fixISBN() {
    isbn = $('#isbn').val();
    isbn = isbn.replace(/[^X-Xx-x0-9]+/g,'');
    $('#isbn').val(isbn);
  }

  if ($('#cat_z3950_search').length) {

    fixISBN();
    $('#isbn').focusout(function() {
      fixISBN();
    });

    if ($('#isbn').val().length >= 10) {
      $('.submit').trigger('click');
    }
    $(document).on("keydown", "form", function(event) {
      if (event && event.which == 13) {
        event.preventDefault();
        fixISBN();
        $('.submit').trigger('click');
      }
    });
  }

Katalog Detaljsidan / Alex

Alex-integrering som visar författarinformation på detaljsidan

Alex.JPG Alex2.JPG


  // *************************************************************************************
  // Katalog - Detaljsidan
  //
  // Alex-integrering som visar författarinformation på detaljsidan.
  // ver 1.0
  // OBS! Kräver speciellt perl-script på serversidan!
  // ( Kompatibel med 22.05 )

  jQuery.fn.justtext = function() {
    return $(this).clone()
      .children()
      .remove()
      .end()
      .text();
  };

  function getAlex(writer, title) {

    var alexpw = 'zryyn05wNN';
    var alexWriter = writer;
    var alexTitle = title;
    var cardnumber = '90055991498A7';

    $.ajaxSetup({
      error: function(xhr, status, error) {
        console.log("An AJAX error occured: " + status + "\nError: " + error);
      }
    });

    var jsondata;

    $.get('/cgi-bin/alex-link?&writer=' + alexWriter + '&title=' + alexTitle).done(function(data) {
      jsondata = data;
      // console.log(data);

      try {
        alexFound = jsondata.response.writers.found.toString();
      } catch {
        alexFound = '0';
      }

      if (alexFound == '1') {
        alexArticle = jsondata.response.writers.writer.article.toString().trim();
        if (alexArticle.slice(-2).indexOf('.') == -1) {
          alexArticle = alexArticle.concat('...');
        }
        alexImageUrl = jsondata.response.writers.writer.imageUrl.toString();
        if (alexImageUrl.indexOf('noimage') > -1) {
          alexImageUrl = '';
          alexImageText = '';
        } else {
          alexImageText = jsondata.response.writers.writer.imageText.toString();
          if (alexImageText.indexOf('[object]') > -1) {
            alexImageText = '';
          }
        }
        alexName = jsondata.response.writers.writer.name.toString();
        alexBornDeadText = jsondata.response.writers.writer.bornDeadText.toString();
        alexLogotype = jsondata.response.writers.writer.alexLogotype.toString();
        alexLinkUrl = jsondata.response.writers.writer.alexLinkUrl.toString();
      }
      $('<div id="alexdone" style="display:none"></div>').appendTo('body');
    });
  };


  function alexDiv(element) {
    $('<div class="previewbox" style="position:absolute;display:inline;border:solid 1px #d0d0d0;right:unset;bottom:unset;"><div id="alexwindow" style="width:600px;height:160px;margin:20px;"><div style="float:left;"><img src="' + alexImageUrl + '" height="190px" style="display:block;padding-right:10px"><span style="font-size:smaller;">' + alexImageText + '</span></div><h3 class="author">' + alexName + '</h3><h5>' + alexBornDeadText + '</h5><br /><span><span>' + alexArticle + '</span><br /><span style="display:block;float:right;padding-top:5px;">(Mer information finns på Alex.se)</span></div><div style="float:right;padding:0 10px 10px 0"><img src="' + alexLogotype + '" style="float:right;width:80px;"></div></div>').insertAfter(element);
  };

  function alexDivDetail() {
    $('<div id="alextd" style="max-width:400px;float:right;position:absolute;display:inline;right:18px;background-color:#fff"></div>').insertBefore('#catalogue_detail_biblio');
    $('#alextd').append('<div id="alexwindow"></div>');
    //$('#alexwindow').append('<span id="closeAlex">X</span>');
    $('#alextd').append('<span id="openAlex">Visa Alex</span>');
    $('#openAlex').hide();

    $('#alexwindow').append('<table id="alexTable"><tbody><tr></tr></tbody></table>');
    $('#alextd').on('click', function() {
      $('#alexwindow').toggle();
      $('#openAlex').toggle();

    });
    $('#alexwindow tr').append('<td id="alexInfo"></td>');
    $('#alexInfo').append('<h5 class="author">' + alexName + '</h5>');
    $('#alexInfo').append('<h5 style="font-size:85%">' + alexBornDeadText + '</h5>');
    $('#alexInfo').append('<span id="alexArticle" class="results_summary" style="font-size:85%">' + alexArticle + '</span>');
    $('#alexInfo').append('<span class="results_summary"><a href="' + alexLinkUrl + '" target="_blank">Läs mer på Alex.se</a></span>');
    $('#alexInfo').append('<div style="display:block;float:right"><img src="' + alexLogotype + '" style="width:80px;"></div>');
    $('#alexwindow tr').append('<td id="alexImg"><img src="' + alexImageUrl + '" style="display:block;max-width:160px;padding:5px 3px 0 5px;"></td>');
    $('#alexImg').append('<span class="results_summary" style="font-size:80%;padding-left:5px;">' + alexImageText + '</span>');

    setTimeout(function() {
      $('#alexwindow').hide(500);
      $('#openAlex').show(200);
    }, 2000);
  };

  var alexFound;
  var alexArticle;
  var alexImageUrl;
  var alexImageText;
  var alexName;
  var alexBornDeadText;
  var alexLogotype;
  var alexLinkUrl;

  if ($('#catalog_detail').length) {
    var title = $('#catalogue_detail_biblio .title').justtext().replace(/\//g, '');
    var author = $('#catalogue_detail_biblio .author:first a').justtext().replace(/-/g, " ");
    getAlex(author, title);
    waitForEl('#alexdone', function() {
      if (alexFound == '1') {
        alexDivDetail();
      }
      $('#alexdone').remove();
    });
  }

OBS detta behöver läggas till i IntranetUserCSS


/* ALEX */

#alextd {
/*    max-width: 200px; */
  float: right;
  border: 1px solid #e58a37;
  border-radius: 3px;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  padding: 10px;
  z-index: 1;
  cursor: pointer;
}


#alextd table, #alextd td {
  border: none;
  background-color: #fff;
}

#closeAlex {
  position: absolute;
  display: inline;
  right: 2px;
  top: 0px;
  font-size: large;
  color: #999;
  cursor: pointer;
  padding: 0 0 30px 30px;
}

#closeAlex:hover {
  color: #d00;
}

#openAlex {
  color: #666;
  cursor: pointer;
  
}

OBS detta perlscript behövs för att Alexintegrationen ska fungera

Det behöver även ändras lite i koden för att få in bibliotekets lösenord.


#!/usr/bin/perl -w

# Alex implementering
# av Johan Sahlberg (johan.sahlberg@tidaholm.se), 2019

# Search string example:
# ./alex-test.pl password=[password] writer=Guillou,%20Jan title= librarycard=900559914987A

use Modern::Perl;
use CGI qw ( -utf8 );
use HTML::Entities;
use strict;
use warnings;

my $query = CGI->new();

my $password = ''; # Fyll i bibliotekets lösenord för Alex
my $writer = $query->param('writer');
my $title = $query->param('title');
my $librarycard = $query->param('librarycard');

use LWP::UserAgent;
use HTTP::Request;

my $ua = new LWP::UserAgent;
$ua->agent("Perl API Client/1.0");

# Setup variables
my $string="partnerintegration/Writer";
my $host="www.alex.se";
my $protocol="https";

#build the url
my $url = "$protocol://$host/$string/" .  "?Password=$password&Writer=$writer&Title=%title&LibraryCard=%librarycard";
#my $url = "https://www.alex.se/partnerintegration/Writer/?Password=zryyn05wNN&Writer=Guillou,%20Jan&Title=&LibraryCard=900559914987A";

#Fetch the actual data from the query
my $request = HTTP::Request->new("GET" => $url);
$request->content_type('application/json');

my $response = $ua->request($request);

my $cgi = CGI->new;
print $cgi->header(-type => "application/json", -charset => "utf-8");

use JSON;
use XML::Simple;

# Create the object of XML Simple
my $xmlSimple = new XML::Simple(KeepRoot   => 1);

# Load the xml file in object
my $dataXML = $xmlSimple->XMLin($response->content);

# use encode json function to convert xml object in json.
my $jsonString = encode_json($dataXML);

# finally print json
print $url;
print $jsonString;

Exemplar / Radering

Förikryssad checkbox för att "Radera poster om inga exemplar kvarstår


  // *************************************************************************************
  // Exemplar - Radering
  //
  // Förikryssad checkbox för "Radera poster om inga exemplar kvarstår."
  // ver 1.0
  // ( Kompatibel med 22.05 )

  if ($('#tools_batchMod-del').length) {
    if ($('#del_records').length) {
      document.getElementById("del_records").checked = true;
    }
  }

Låntagare - Ny/Redigera

Generera lånekortsnummer och pin-kod beroende på kommuntillhörighet

Lånekortsnummer.JPG Pinkod.JPG


  // *************************************************************************************
  // Låntagare - Ny/redigera
  //
  // Generera lånekortsnummer och PIN-kod
  //
  // ver 1.1 (2022-10-10)
  // ( Kompatibel med 22.05 )

  if ($('#pat_memberentrygen').length) {
    $('<span><button id="genCardNo">Generera lånekortsnummer</button></span>').insertAfter('#cardnumber');
    $('<span><button id="genPIN">Generera PIN-kod</button></span>').insertAfter('#password');
    $('#genCardNo').on('click', function(e) {
      e.preventDefault();

      var patron_attr_personnr = $('input[value="PERSNUMMER"]').siblings('textarea');
      var persNr = $(patron_attr_personnr).val();

      var y = new Date().getFullYear().toString().slice(2);
      var m = new Date().getMonth();
      if (m < 10) {
        m = m.toString(10);
        m = '0' + m;
      } else {
        m = m.toString(10);
      }

      var d = new Date().getDate().toString();
      if (d < 10) {
        d = d.toString(10);
        d = '0' + d;
      } else {
        d = d.toString(10);
      }

      var h = new Date().getHours();
      if (h > 9) {
        h = h.toString(25).toUpperCase();
      } else {
        h = h.toString(10);
      }

      var min = new Date().getTime().toString();
      min = min.slice(-2);

      var lib = $('#libraries').find('option:selected').val();
      var libcode;
      switch (lib) {
        case '8BYO':
        case '8REG':
        case 'FGBS':
        case 'GULL':
        case 'HOVA':
          libcode = '1447';
          break;

        case 'HJO':
          libcode = '1684';
          break;

        case '8BYL':
        case '8BYM':
        case 'KABO':
        case 'KSTR':
          libcode = '1446';
          break;

        case 'KBRO':
        case 'LKAV':
          libcode = '1496';
          break;

        case '8BYQ':
        case 'MARI':
        case 'MKRI':
        case 'MVAN':
          libcode = '1493';
          break;

        case '8BXQ':
        case '8BXZ':
        case '8BYA':
        case '8BYB':
        case '8BYC':
        case '8BYR':
        case 'SKBO':
        case 'SKKO':
        case 'SKPO':
        case 'SKSB':
          libcode = '1496';
          break;

        case '8NYB':
        case 'TIBOALDRE':
        case 'TIKF':
          libcode = '1472';
          break;

        case 'TIDA':
        case 'TKRI':
        case 'TEKE':
        case 'TFOR':
        case 'THOK':
        case 'TRBG':
        case 'TVAL':
          libcode = '1498';
          break;

        case '8BYI':
        case '8BYS':
        case 'TORE':
          libcode = '1473';
          break;

        case 'VAGY':
          libcode = '1493';
          break;

        case 'SKGY':
        case 'SKGZ':
          libcode = '1496';
          break;
      };


      if (persNr.length > 0) {
        var date = persNr.slice(0, 6) + h + libcode + d;
      } else {
        var date = y + m + d + h + libcode + min;
      }
      //console.log(date);
      $('#cardnumber').val(date);
      if ($('#userid').length < 1) {
        $('#userid').val(date);
      }

      // PIN-kod

      var pin = Math.floor((Math.random() * (9999 - 1000) + 1000));
      $('#password, #password2').val(pin);
    });

    $('#genPIN').on('click', function(e) {
      e.preventDefault();
      var pin = Math.floor((Math.random() * (9999 - 1000) + 1000));
      $('#password, #password2').val(pin);
    });
  }


Katalog / Reservationer

Dialogruta om man klickar på pilen ned för att lägga personen sist i listan

Pilner.JPG


  // *************************************************************************************
  // Katalog - Reservationer
  //
  // Dialogruta om man klickar på pilen ned för att lägga personen sist i listan
  //
  // ver 1.1 (2022-10-13)
  // ( Kompatibel med 22.05 )

  if ($('#circ_request').length) {
    //var holdstable = $('.holds_table').dataTable();
    //holdstable.on('draw.dt', function() {
    $('#existing_holds td:nth-child(3) a:nth-child(3)').each(function() {
      $(this).on('click', function(e) {
        var question = confirm('Är du säker?');
        if (question == false) {
          e.preventDefault();
        }
      });
    });
  }

== Katalog / Reservationer ==

'''Markerade pausade reservationer'''

[[Fil:suspend.JPG]]

<pre>

  // *************************************************************************************
  // Katalog - Reservationer
  //
  // Markera suspenderade reservationer
  //
  // ver 1.2 (2022-10-10)
  // ( Kompatibel med 22.05 )

  if ($('#circ_request').length) {
    $('form[action="modrequest.pl"] tbody td button').each(function() {
      $(this).mouseover(function() {
        $(this).siblings().show();
      });

      var susStatus = $(this).text();

      //console.log(susStatus);
      if (susStatus.includes('Återuppta')) {
        $(this).parent().parent().children('td').css('opacity', '0.3');
        $(this).parent().parent().children('td:nth-child(5)').append('<span>På paus...</span>');
        $(this).parent('td').css('opacity', '1');
        $(this).css('border', '2px outset #f00');
      }
    });
  }


Katalog / Lokal placering

Tar bort skapandet av lokala placeringar vid katalogsökning


  // *************************************************************************************
  // Ta bort skapande av Lokala placeringar vid sökning
  // ver 1.0 (2021-09-16)
  // Kompatibelt med 20.11
  // 
  
  if ($('#cat_additem').length) {
    if ($('.is_superlibrarian').length) {
      waitForEl('.select2-search__field', function() {
        $(this).on('keydown', function() {
          $(document).on('DOMNodeInserted', function(e) {
            if(e.target.localName == "li"){
              $('.select2-results li:first').hide();
            }
          });
        });
      });
    }
  }

Plocklista / Reservationer

Lägger till fältet senast sedd under streckkod i plocklistan

Senastsedd.JPG


// *************************************************************************************
// Plocklista
//
// Senast sedd för exemplaret som föreslagits
// ver 1.1
// 2022-10-22
// Kompatibel med 22.05

  function controlDate(date, today) {
    var returndate = date.replace(/\D/g, '');
    //var thisday = today.replace(/\D/g, '');
    var rYear = returndate.slice(0,4);
    var rMonth = returndate.slice(4,6);
    var rDay = returndate.slice(6,8);
    returndate = new Date();
    returndate.setFullYear(rYear,rMonth -1,rDay);
    var diffTime = Math.abs(today - returndate);
    var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
    if (diffDays < 3) {
      //console.log('Mindre än 3 dagar');
      return true;
    } else {
      return false;
    }
  }



  if ($('#circ_view_holdsqueue').length) {
    var today = new Date();

    $('.hq-barcode strong').each(function() {
      var barcode = $(this).text();
      var thisbarcode = $(this).parent();
      $.ajax({
        url: 'https://' + window.location.hostname + '/api/v1/items/?external_id=' + barcode + '&_match=exact',
        cache: true,
        success: function(data) {
          if(data[0] != null) {
            var lastseen = data[0].last_seen_date;
            if (controlDate(lastseen, today)) {
              $('<div style="margin-top:10px;color:#900">Senast sedd: ' + lastseen + '</div>').appendTo(thisbarcode);
            } else {
              $('<div style="margin-top:10px">Senast sedd: ' + lastseen + '</div>').appendTo(thisbarcode);
            }
          }
        }
      });
    });
  }