Koha/koha-tmpl/intranet-tmpl/prog/js/members-menu.js
Michał Kula da9f74e56a
Bug 35072: Fix invalid usage of "&" in JavaScript intranet-tmpl script redirects
These escapes were invalid in these places, as HTML entity escapes
are meant to be used only inside of HTML elements/attributes, not
inside of JavaScript code.

These URLs would be sent out by the browser as-is, and that'd usually
work on the default install only coincidentally. Unfortunately, on some
setups (such as when using reverse proxies), this would break, and the
URL after "&" would have been truncated.

This small patch adjusts the URLs in templates to not use wrong escapes,
and makes them consistent with how URLs are formatted for JavaScript
redirects in most of the templates already.

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-10-24 10:05:27 -03:00

165 lines
6.3 KiB
JavaScript

/* global borrowernumber advsearch dateformat __ CAN_user_borrowers_delete_borrowers CAN_user_borrowers_edit_borrowers number_of_adult_categories destination Sticky Cookies*/
$(document).ready(function(){
searchfield_date_tooltip("");
searchfield_date_tooltip('_filter');
$("#searchfieldstype").change(function() {
searchfield_date_tooltip("");
});
$("#searchfieldstype_filter").change(function() {
searchfield_date_tooltip('_filter');
});
if( CAN_user_borrowers_delete_borrowers ){
$("#deletepatron").click(function(){
window.location='/cgi-bin/koha/members/deletemem.pl?member=' + borrowernumber;
});
}
if( CAN_user_borrowers_edit_borrowers ){
$("#renewpatron").click(function(){
confirm_reregistration();
$(".btn-group").removeClass("open");
return false;
});
$("#updatechild").click(function(e){
if( $(this).data("toggle") == "tooltip"){ // Disabled menu option has tooltip attribute
e.preventDefault();
} else {
update_child();
$(".btn-group").removeClass("open");
}
});
}
$(".delete_message").click(function(){
return window.confirm( __("Are you sure you want to delete this message? This cannot be undone.") );
});
$("#updatechild, #patronflags, #renewpatron, #deletepatron, #exportbarcodes").tooltip();
$("#exportcheckins").click(function(){
export_barcodes();
$(".btn-group").removeClass("open");
return false;
});
$("#printsummary").click(function(){
printx_window("page");
$(".btn-group").removeClass("open");
return false;
});
$("#printslip").click(function(){
printx_window("slip");
$(".btn-group").removeClass("open");
return false;
});
$("#printquickslip").click(function(){
printx_window("qslip");
$(".btn-group").removeClass("open");
return false;
});
$("#print_overdues").click(function(){
window.open("/cgi-bin/koha/members/print_overdues.pl?borrowernumber=" + borrowernumber, "printwindow");
$(".btn-group").removeClass("open");
return false;
});
$("#printcheckinslip").click(function(){
printx_window("checkinslip");
$(".btn-group").removeClass("open");
return false;
});
$("#printclearscreen").click(function(){
printx_window("slip");
window.location.replace("/cgi-bin/koha/circ/circulation.pl");
});
$("#printclearscreenq").click(function(){
printx_window("qslip");
window.location.replace("/cgi-bin/koha/circ/circulation.pl");
});
$("#searchtohold").click(function(){
searchToHold();
return false;
});
$("#select_patron_messages").on("change",function(){
$("#borrower_message").val( $(this).val() );
});
$("#patronImageEdit").on("shown.bs.modal", function(){
startup();
});
$(".edit-patronimage").on("click", function(e){
e.preventDefault();
var borrowernumber = $(this).data("borrowernumber");
var cardnumber = $(this).data("cardnumber");
var modalTitle = $(this).attr("title");
$("#patronImageEdit .modal-title").text(modalTitle);
$("#patronImageEdit").modal("show");
$("#patronImageEdit").on("hidden.bs.modal", function(){
/* Stop using the user's camera when modal is closed */
let viewfinder = document.getElementById("viewfinder");
if( viewfinder.srcObject ){
viewfinder.srcObject.getTracks().forEach( track => {
if( track.readyState == 'live' && track.kind === 'video'){
track.stop();
}
});
}
});
});
});
function searchfield_date_tooltip(filter) {
var field = "#searchmember" + filter;
var type = "#searchfieldstype" + filter;
if ( $(type).val() == 'dateofbirth' ) {
var MSG_DATE_FORMAT = "";
if( dateformat == 'us' ){
MSG_DATE_FORMAT = __("Dates of birth should be entered in the format 'MM/DD/YYYY'");
} else if( dateformat == 'iso' ){
MSG_DATE_FORMAT = __("Dates of birth should be entered in the format 'YYYY-MM-DD'");
} else if( dateformat == 'metric' ){
MSG_DATE_FORMAT = __("Dates of birth should be entered in the format 'DD/MM/YYYY'");
} else if( dateformat == 'dmydot' ){
MSG_DATE_FORMAT = __("Dates of birth should be entered in the format 'DD.MM.YYYY'");
}
$(field).attr("title", MSG_DATE_FORMAT).tooltip('show');
} else {
$(field).tooltip('destroy');
}
}
function confirm_updatechild() {
var is_confirmed = window.confirm( __("Are you sure you want to update this child to an Adult category? This cannot be undone.") );
if (is_confirmed) {
window.location='/cgi-bin/koha/members/update-child.pl?op=update&borrowernumber=' + borrowernumber;
}
}
function update_child() {
if( number_of_adult_categories > 1 ){
window.open('/cgi-bin/koha/members/update-child.pl?op=multi&borrowernumber=' + borrowernumber,'UpdateChild','width=400,height=300,toolbar=no,scrollbars=yes,resizable=yes');
} else {
confirm_updatechild();
}
}
function confirm_reregistration() {
var is_confirmed = window.confirm( __("Are you sure you want to renew this patron's registration?") );
if (is_confirmed) {
window.location = '/cgi-bin/koha/members/setstatus.pl?borrowernumber=' + borrowernumber + '&destination=' + destination + '&reregistration=y';
}
}
function export_barcodes() {
window.open('/cgi-bin/koha/members/readingrec.pl?borrowernumber=' + borrowernumber + '&op=export_barcodes');
}
var slip_re = /slip/;
function printx_window(print_type) {
var handler = print_type.match(slip_re) ? "printslip" : "summary-print";
window.open("/cgi-bin/koha/members/" + handler + ".pl?borrowernumber=" + borrowernumber + "&print=" + print_type, "printwindow");
return false;
}
function searchToHold(){
var date = new Date();
date.setTime(date.getTime() + (10 * 60 * 1000));
Cookies.set("holdfor", borrowernumber, { path: "/", expires: date, sameSite: 'Lax' });
location.href="/cgi-bin/koha/catalogue/search.pl";
}