Koha/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js
Owen Leonard 97913b8a64
Bug 23888: (follow-up) Wrap English string in translation function
This patch makes alert added in subscription-add.js translatable using
the new __() function.

To test, apply the patch and confirm that the alert still works
correctly when submitting the subscription edit form with an invalid
vendor id.

Test that the string can be translated (using fr-Fr for example):

1. cd misc/translator && ./translate update fr-FR
2. Translate strings in misc/tranlator/po/fr-FR-messages-js.po
3. cd misc/translator && ./translate install fr-FR

Switch to the fr-FR translation and confirm the the alert shows your
translated string.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2020-03-27 12:14:21 +00:00

730 lines
23 KiB
JavaScript

/* global __ irregularity more_than_one_serial subscriptionid tags interface theme mana_enabled MSG_FREQUENCY_LENGTH_ERROR MSG_BIBLIO_NOT_EXIST */
var globalnumpatterndata;
var globalfreqdata;
var mananumpatterndata;
var manafreqdata;
var manaid;
var advancedpatternlocked;
var patternneedtobetested = 0;
if ( irregularity !== "" ){
patternneedtobetested = 1;
}
function check_issues(){
if (globalfreqdata.unit.length >0) {
if (document.f.subtype.value == globalfreqdata.unit){
document.f.issuelengthcount.value=(document.f.sublength.value*globalfreqdata.issuesperunit)/globalfreqdata.unitsperissue;
} else if (document.f.subtype.value != "issues"){
alert( MSG_FREQUENCY_LENGTH_ERROR );
}
}
}
function addbiblioPopup(biblionumber) {
var destination = "/cgi-bin/koha/cataloguing/addbiblio.pl?mode=popup";
if(biblionumber){
destination += "&biblionumber="+biblionumber;
}
window.open(destination,'AddBiblioPopup','width=1024,height=768,toolbar=no,scrollbars=yes');
}
function Plugin(){
window.open('subscription-bib-search.pl','FindABibIndex','width=800,height=400,toolbar=no,scrollbars=yes');
}
function FindAcqui(){
window.open('acqui-search.pl','FindASupplier','width=800,height=400,toolbar=no,scrollbars=yes');
}
function Find_ISSN(f){
window.open('issn-search.pl','FindABibIndex','width=800,height=400,toolbar=no,scrollbars=yes');
}
function Clear(id) {
$("#"+id).val('');
}
function Check_page1() {
var bookseller_id = $("#aqbooksellerid").val();
if ( bookseller_id.length == 0) {
input_box = confirm( MSG_LINK_TO_VENDOR );
if (input_box==false) {
return false;
}
} else {
var bookseller_ids = BOOKSELLER_IDS;
if ( $.inArray(Number(bookseller_id), bookseller_ids) == -1 ) {
alert ( __("The vendor does not exist") );
return false;
}
}
var biblionumber = $("#biblionumber").val()
if ( biblionumber.length == 0 ) {
alert( MSG_LINK_BIBLIO );
return false;
}
var bib_exists = $("input[name='title']").val().length;
if (!bib_exists) alert(MSG_BIBLIO_NOT_EXIST);
return bib_exists;
}
function Check_page2(){
if( more_than_one_serial == "" ){
if($("#acqui_date").val().length == 0){
alert( MSG_REQUIRED_PUB_DATE );
return false;
}
}
if($("#sublength").val().length == 0 && $("input[name='enddate']").val().length == 0){
alert( MSG_REQUIRED_SUB_LENGTH );
return false;
}
if(advancedpatternlocked == 0){
alert( MSG_SAVE_PREDICTION_PATTERN );
return false;
}
if(patternneedtobetested){
if( irregularity !== "" ){
alert( MSG_PATTERN_IRREG );
} else {
alert( MSG_TEST_PREDICTION );
}
return false;
}
return true;
}
function frequencyload(){
if ($("#frequency option:selected").val() === "mana"){
globalfreqdata=manafreqdata;
$("input[name='sfdescription']").val(manafreqdata.description);
$("input[name='unit']").val(manafreqdata.unit);
$("input[name='unitsperissue']").val(manafreqdata.unitsperissue);
$("input[name='issuesperunit']").val(manafreqdata.issuesperunit);
if ($( "#numberpattern option:selected" ).val() === "mana" ) {
$("#mana_id").val(manaid);
}
} else {
$.getJSON("subscription-frequency.pl",{"frequency_id":document.f.frequency.value,ajax:'true'},
function(freqdata){
globalfreqdata=freqdata;
if ( globalfreqdata.unit && globalfreqdata.unit.length == 0 ) {
var option = $("#subtype option[value='issues']");
$(option).attr('selected', 'selected');
$("#subtype option[value!='issues']").prop('disabled', true);
} else {
$("#subtype option").prop('disabled', false);
}
}
);
$("#mana_id").val("");
}
}
function numberpatternload(){
if($("#numberpattern option:selected" ).val() === "mana"){
globalnumpatterndata=mananumpatterndata;
$("input[name='sndescription']").val(mananumpatterndata.description);
if($("#frequency option:selected" ).val() === "mana"){
$("#mana_id").val(manaid);
}
if (globalnumpatterndata==undefined){
return false;
}
displaymoreoptions();
restoreAdvancedPattern();
} else {
$.getJSON("subscription-numberpattern.pl",{"numberpattern_id":document.f.numbering_pattern.value,ajax:'true'},
function(numpatterndata){
globalnumpatterndata=numpatterndata;
if (globalnumpatterndata==undefined){
return false;
}
displaymoreoptions();
restoreAdvancedPattern();
}
);
$("#mana_id").val("");
}
}
function displaymoreoptions() {
if(globalnumpatterndata == undefined){
$("#moreoptionst").hide();
return false;
}
var X = 0, Y = 0, Z = 0;
var numberingmethod = globalnumpatterndata.numberingmethod;
if(numberingmethod.match(/{X}/)) X = 1;
if(numberingmethod.match(/{Y}/)) Y = 1;
if(numberingmethod.match(/{Z}/)) Z = 1;
if(X || Y || Z) {
$("#moreoptionst").show();
} else {
$("#moreoptionst").hide();
}
if(X) {
if(globalnumpatterndata.label1) {
$("#headerX").html(globalnumpatterndata.label1);
} else {
$("#headerX").html("X");
}
$("#headerX").show();
$("#beginsX").show();
$("#innerX").show();
} else {
$("#headerX").hide();
$("#beginsX").hide();
$("#innerX").hide();
$("#lastvaluetemp1").val('');
$("#innerlooptemp1").val('');
}
if(Y) {
if(globalnumpatterndata.label2) {
$("#headerY").html(globalnumpatterndata.label2);
} else {
$("#headerY").html("Y");
}
$("#headerY").show();
$("#beginsY").show();
$("#innerY").show();
} else {
$("#headerY").hide();
$("#beginsY").hide();
$("#innerY").hide();
$("#lastvaluetemp2").val('');
$("#innerlooptemp2").val('');
}
if(Z) {
if(globalnumpatterndata.label3) {
$("#headerZ").html(globalnumpatterndata.label3);
} else {
$("#headerZ").html("Z");
}
$("#headerZ").show();
$("#beginsZ").show();
$("#innerZ").show();
} else {
$("#headerZ").hide();
$("#beginsZ").hide();
$("#innerZ").hide();
$("#lastvaluetemp3").val('');
$("#innerlooptemp3").val('');
}
}
function modifyAdvancedPattern() {
$("#patternname").prop('readOnly', false).val('').focus();
$("#numberingmethod").prop('readOnly', false);
$("#advancedpredictionpatternt input").each(function() {
$(this).prop('readOnly', false);
});
$("#advancedpredictionpatternt select").each(function() {
$(this).prop('disabled', false);
});
$("#restoreadvancedpatternbutton").show();
$("#saveadvancedpatternbutton").show();
$("#modifyadvancedpatternbutton").hide();
advancedpatternlocked = 0;
}
function restoreAdvancedPattern() {
$("#patternname").prop('readOnly', true).val(globalnumpatterndata.label);
$("#numberingmethod").prop('readOnly', true).val(globalnumpatterndata.numberingmethod);
$("#advancedpredictionpatternt input").each(function() {
$(this).prop('readOnly', true);
var id = $(this).attr('id');
if(id.match(/lastvalue/) || id.match(/innerloop/)) {
var tempid = id.replace(/(\d)/, "temp$1");
$(this).val($("#"+tempid).val());
} else {
$(this).val(globalnumpatterndata[id]);
}
});
$("#advancedpredictionpatternt select").each(function() {
$(this).prop('disabled', true);
var id = $(this).attr('id');
$(this).val(globalnumpatterndata[id]);
});
$("#restoreadvancedpatternbutton").hide();
$("#saveadvancedpatternbutton").hide();
$("#modifyadvancedpatternbutton").show();
advancedpatternlocked = 1;
}
function testPredictionPattern() {
var frequencyid = $("#frequency").val();
var acquidate;
var error = 0;
var error_msg = "";
if(frequencyid == undefined || frequencyid == ""){
error_msg += "- " + MSG_FREQUENCY_UNDEFINED + "\n";
error ++;
}
acquidate = $("#acqui_date").val();
if(acquidate == undefined || acquidate == ""){
error_msg += "-" + MSG_PUB_DATE_UNDEFINED + "\n";
error ++;
}
if( more_than_one_serial !== "" ){
var nextacquidate = $("#nextacquidate").val();
if(nextacquidate == undefined || nextacquidate == ""){
error_msg += "-" + MSG_NEXT_ISSUE_UNDEFINED + "\n";
error ++;
}
}
if(error){
alert( MSG_PATTERN_TEST_FAILED.format(error_msg) );
return false;
}
var custompattern = 0;
if(advancedpatternlocked == 0) {
custompattern = 1;
}
var ajaxData = {
'custompattern': custompattern,
'firstacquidate': acquidate
};
if( subscriptionid !== "" ){
ajaxData.subscriptionid = subscriptionid;
}
if( more_than_one_serial !== "" ){
ajaxData.nextacquidate = nextacquidate;
}
var ajaxParams = [
'to', 'subtype', 'sublength', 'frequency', 'numberingmethod',
'lastvalue1', 'lastvalue2', 'lastvalue3', 'add1', 'add2', 'add3',
'every1', 'every2', 'every3', 'innerloop1', 'innerloop2', 'innerloop3',
'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale',
'sfdescription', 'unitsperissue', 'issuesperunit', 'unit'
];
for(i in ajaxParams) {
var param = ajaxParams[i];
var value = $("#"+param).val();
if(value.length > 0)
ajaxData[param] = value;
}
$.ajax({
url:"/cgi-bin/koha/serials/showpredictionpattern.pl",
data: ajaxData,
success: function(data) {
showPredictionPatternTest( data );
patternneedtobetested = 0;
}
});
}
function saveAdvancedPattern() {
if ($("#patternname").val().length == 0) {
alert( MSG_PATTERN_NAME );
return false;
}
// Check if patternname already exists, and modify pattern
// instead of creating it if so
var found = 0;
$("#numberpattern option").each(function(){
if($(this).text() == $("#patternname").val()){
found = 1;
return false;
}
});
var cnfrm = 1;
if(found){
var msg = MSG_PATTERN_NAME_EXISTS
+ "\n" + MSG_OVERWRITE_PATTERNS;
cnfrm = confirm(msg);
}
if(cnfrm) {
var ajaxData = {};
var ajaxParams = [
'patternname', 'numberingmethod', 'label1', 'label2', 'label3',
'add1', 'add2', 'add3', 'every1', 'every2', 'every3',
'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale'
];
for(i in ajaxParams) {
var param = ajaxParams[i];
var value = $("#"+param).val();
if(value.length > 0)
ajaxData[param] = value;
}
$.getJSON(
"/cgi-bin/koha/serials/create-numberpattern.pl",
ajaxData,
function(data){
if (data.numberpatternid) {
if(found == 0){
$("#numberpattern").append("<option value=\""+data.numberpatternid+"\">"+$("#patternname").val()+"</option>");
}
$("#numberpattern").val(data.numberpatternid);
numberpatternload();
} else {
alert( MSG_PATTERN_CREATE_FAILED );
}
}
);
}
}
function show_page_1() {
$("#page_1").show();
$("#page_2").hide();
$("#page_number").text("1/2");
}
function show_page_2() {
$("#page_1").hide();
$("#page_2").show();
$("#page_number").text("2/2");
displaymoreoptions();
}
function mana_search() {
$("#mana_search").html("<p>" + MSG_MANA_SEARCHING + "... <img src='" + interface + "/" + theme + "/img/spinner-small.gif' /></p>");
$("#mana_search").show();
$.ajax({
type: "POST",
url: "/cgi-bin/koha/svc/mana/search",
data: {id: $("#biblionumber").val(), resource: 'subscription', usecomments: 1},
dataType: "html",
})
.done( function( result ) {
$("#mana_search_result .modal-body").html(result);
$("#mana_search_result_label").text( MSG_MANA_RESULTS );
$("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults, {
"sPaginationType": "full",
"order":[[4, "desc"], [5, "desc"]],
"autoWidth": false,
"columnDefs": [
{ "width": "35%", "targets": 1 }
],
"aoColumnDefs": [
{ 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
{ "sType": "title-string", "aTargets" : [ "title-string" ] },
{ 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
]
}));
if( $("#mana_results_datatable").length && $("td.dataTables_empty").length == 0){
$("#mana_search").html("<p>" + MSG_MANA_SUBSCRIPTION_FOUND + "</p><p> <a href=\"#\" data-toggle=\"modal\" data-target=\"#mana_search_result\"><i class=\"fa fa-window-maximize\"></i> " + MSG_MANA_SHOW_DETAILS + "</a></p>");
}
else if ( $("#mana_results_datatable").length ){
$("#mana_search").html("<p>" + MSG_MANA_NO_SUBSCRIPTION_FOUND + "</p><p>" + MSG_MANA_SHARE_PATTERN + "</p>");
}
else{
$("#mana_search").html( result );
}
$("#mana_search").show();
});
}
function mana_use(mana_id){
$("tr").removeClass("selected");
$("#row"+mana_id).addClass("selected");
$.ajax( {
type: "POST",
url: "/cgi-bin/koha/svc/mana/use",
data: {id: mana_id, resource: 'subscription'},
dataType: "json",
})
.done(function(result){
var select = document.getElementById('numberpattern');
for(i = 0; i < select.length; i++){
if(select[i].value === "mana"){
select.remove(i);
}
}
var optionnumpattern = document.createElement("option");
optionnumpattern.text = result.label + " (mana)";
optionnumpattern.selected = true;
optionnumpattern.value="mana";
select.add(optionnumpattern);
mananumpatterndata = {
id:"mana",
add1:result.add1,
add2:result.add2,
add3:result.add3,
description:result.sndescription,
displayorder:result.displayorder,
every1:result.every1,
every2:result.every2,
every3:result.every3,
label:result.label,
label1:result.label1,
label2:result.label2,
label3:result.label3,
numbering1:result.numbering1,
numbering2:result.numbering2,
numbering3:result.numbering3,
numberingmethod:result.numberingmethod,
setto1:result.setto1,
setto2:result.setto2,
setto3:result.setto3,
whenmorethan1:result.whenmorethan1,
whenmorethan2:result.whenmorethan2,
whenmorethan3:result.whenmorethan3,
};
select = document.getElementById("frequency");
for(i = 0; i < select.length; i++){
if(select[i].value === "mana"){
select.remove(i);
}
}
var optionfreq = document.createElement("option");
optionfreq.text = result.sfdescription + " (mana)";
optionfreq.selected = true;
optionfreq.value="mana";
select.add(optionfreq);
manafreqdata = {
id:"mana",
description:result.sfdescription,
displayorder:result.displayorder,
issuesperunit:result.issuesperunit,
unit:result.unit,
unitsperissue:result.unitsperissue,
};
manaid = result.id;
$("#mana_id").val(manaid);
$("#mana_search_result").modal("hide");
frequencyload();
numberpatternload();
})
.done( function(){
$("tr").removeClass("selected");
$(".mana-use i").attr("class","fa fa-download");
})
.fail( function( result ){
});
}
function mana_comment_close(){
$("#selected_id").val("");
$("#mana-resource-id").val("");
$("#mana-comment").val("");
$("#mana_results").show();
$("#new_mana_comment").hide();
}
function showPredictionPatternTest( data ){
$("#displayexample").html(data).show();
$("#page_2 > div").attr("class","col-xs-6");
}
function hidePredcitionPatternTest(){
$("#displayexample").hide();
$("#page_2 > div").attr("class","col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2");
}
$(document).ready(function() {
if ( mana_enabled == 1 ) {
mana_search();
}
$("#displayexample").hide();
// When Mana search results modal is hidden, hide comment form and any status messages
$("#mana_search_result").on("hide.bs.modal", function(){
$("#mana_results").show();
$("#new_mana_comment").hide();
$(".mana_comment_status").hide();
});
$("#aqbooksellerid").on('keypress', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
FindAcqui();
}
});
$("#biblionumber").on('keypress', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
Plugin();
}
});
$("select#frequency").change(function(){
patternneedtobetested = 1;
$("input[name='enddate']").val('');
frequencyload();
});
$("select#numberpattern").change(function(){
patternneedtobetested = 1;
numberpatternload();
});
$("#subtype").change(function(){
$("input[name='enddate']").val('');
});
$("#sublength").change(function(){
$("input[name='enddate']").val('');
});
$("#lastvaluetemp1").keyup(function(){
$("#lastvalue1").val($(this).val());
});
$("#lastvaluetemp2").keyup(function(){
$("#lastvalue2").val($(this).val());
});
$("#lastvaluetemp3").keyup(function(){
$("#lastvalue3").val($(this).val());
});
$("#lastvalue1").keyup(function(){
$("#lastvaluetemp1").val($(this).val());
});
$("#lastvalue2").keyup(function(){
$("#lastvaluetemp2").val($(this).val());
});
$("#lastvalue3").keyup(function(){
$("#lastvaluetemp3").val($(this).val());
});
$("#innerlooptemp1").keyup(function(){
$("#innerloop1").val($(this).val());
});
$("#innerlooptemp2").keyup(function(){
$("#innerloop2").val($(this).val());
});
$("#innerlooptemp3").keyup(function(){
$("#innerloop3").val($(this).val());
});
$("#innerloop1").keyup(function(){
$("#innerlooptemp1").val($(this).val());
});
$("#innerloop2").keyup(function(){
$("#innerlooptemp2").val($(this).val());
});
$("#innerloop3").keyup(function(){
$("#innerlooptemp3").val($(this).val());
});
if($("#frequency").val() != ""){
frequencyload();
}
if($("#numberpattern").val() != ""){
numberpatternload();
}
if( tags.length > 0 ){
tags.forEach( function( item ) {
var node = $("[name='" + item + "']");
if ( $(node).is('input') || $(node).is('textarea') ) {
$(node).val("");
} else if ( $(node).is('select') ) {
$(node).find("option:first").attr('selected','selected');
}
});
}
$("#mana_search").hide();
show_page_1();
$("#subscription_add_form").on("submit",function(){
return Check_page2();
});
$("#vendor_search").on("click",function(e){
e.preventDefault();
FindAcqui();
});
$("#record_search").on("click",function(e){
e.preventDefault();
Plugin();
});
$("#biblio_add_edit").on("click",function(e){
e.preventDefault();
if( $(this).data("biblionumber") ){
addbiblioPopup( $(this).data("biblionumber") );
} else {
addbiblioPopup();
}
});
$("#subscription_add_next").on("click",function(){
if ( Check_page1() ){
if ( mana_enabled == 1 ) {
mana_search();
}
show_page_2();
}
});
$("#subscription_add_previous").on("click",function(){
show_page_1();
});
$(".toggle_advanced_pattern").on("click",function(e){
e.preventDefault();
$("#advancedpredictionpattern").toggle();
$(".toggle_advanced_pattern").toggle();
});
$("#modifyadvancedpatternbutton").on("click",function(e){
e.preventDefault();
modifyAdvancedPattern();
});
$("#restoreadvancedpatternbutton").on("click",function(e){
e.preventDefault();
restoreAdvancedPattern();
});
$("#saveadvancedpatternbutton").on("click",function(e){
e.preventDefault();
saveAdvancedPattern();
});
$("#testpatternbutton").on("click",function(e){
e.preventDefault();
testPredictionPattern();
});
$('#save-subscription').on("click", function(e){
$('select:disabled').removeAttr('disabled');
});
$("body").on("click", ".mana-use", function(e) {
e.preventDefault();
$(this).find("i").attr("class","fa fa-refresh fa-spin");
var subscription_id = $(this).data("subscription_id");
mana_use( subscription_id );
});
$("#displayexample").on("click", "#hidepredictionpattern", function(e){
e.preventDefault();
hidePredcitionPatternTest();
});
$("#biblionumber").on("change", function(){
var biblionumber = $(this).val();
$.ajax({
url: "/api/v1/biblios/" + biblionumber,
type: "GET",
headers: {
Accept: "application/json",
},
contentType: "application/json",
success: function (biblio) {
$("input[name='title']").val(biblio['title']);
$("#error_bib_not_exist").html("");
},
error: function (x) {
$("input[name='title']").val('');
$("#error_bib_not_exist").html("This bibliographic record does not exist");
}
});
});
});