Koha/koha-tmpl/intranet-tmpl/prog/js/marc_modification_templates.js
Owen Leonard 0c67613f7b Bug 26065: Move translatable strings out of marc_modification_templates.tt and into marc_modification_templates.js
This patch removes the <script> block in the MARC modification
templates template in which strings are defined for translation
purposes.

Strings are now in place in the JavaScript file and wrapped in the new
__() function.

To test, apply the patch and clear your browser cache if necessary.

- Perform some actions which will trigger translated strings, for
  example:
  - Create a new template
  - Add an action to the template and then delete it.
    - The confirmation should appear correctly
  - Add an action. Select "Copy" as the operation and click "Add action"
    without filling in any fields.
    - You should see a message, "Both subfield values should be filled
      or empty"

TESTING TRANSLATABILITY

- Update a translation, e.g. fr-FR:

> cd misc/translator
> perl translate update fr-FR

- Open the corresponding .po file for JavaScript strings, e.g.
  misc/translator/po/fr-FR-messages-js.po
- Locate strings pulled from
  koha-tmpl/intranet-tmpl/prog/js/marc_modification_templates.js for
  translation, e.g.:

  msgid "Both subfield values should be filled or empty."
  msgstr ""

- Edit the "msgstr" string however you want (it's just for testing).
- Install the updated translation:

> perl translate install fr-FR

- Switch to your newly translated language in the staff client and
  repeat the test plan above. The translated string should appear.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2020-08-18 15:45:49 +02:00

360 lines
12 KiB
JavaScript

/* global __ */
$(document).ready(function() {
window.modaction_legend_innerhtml = $("#modaction_legend").text();
window.action_submit_value = $("#action_submit").val();
$('#select_template').find("input:submit").hide();
$('#select_template').change(function() {
$('#select_template').submit();
});
$("span.match_regex_prefix" ).hide();
$("span.match_regex_suffix" ).hide();
$("#add_action").submit(function(){
var action = $("#action").val();
if ( action == 'move_field' || action == 'copy_field' || action == 'copy_and_replace_field') {
if ( $("#from_subfield").val().length != $("#to_subfield").val().length ) {
alert( __("Both subfield values should be filled or empty.") );
return false;
}
if ( $("#to_field").val().length <= 0 ) {
alert( __("The destination should be filled.") );
return false;
}
if ( ( $("#to_field").val() < 10 && $("#to_subfield").val().length > 0 ) ||
( $("#from_field").val() < 10 && $("#from_subfield").val().length > 0 ) ) {
alert( __("If the field is a control field, the subfield should be empty") );
return false;
}
if ( ( $("#from_field").val() < 10 && $("#to_field").val() >= 10 ) ||
( $("#to_field").val() < 10 && $("#from_field").val() >= 10 ) ) {
alert( __("A control field cannot be used with a regular field.") );
return false;
}
}
if ( action == 'update_field' ) {
if ( $("#from_subfield").val().length <= 0 ) {
alert( __("The source subfield should be filled for update.") );
return false;
}
}
if ( $("#from_field").val().length <= 0 ) {
alert( __("The source field should be filled.") );
return false;
}
if ( $("#conditional").val() == 'if' || $("#conditional").val() == 'unless' ) {
if ( $("#conditional_field").val() == '' ) {
alert( __("The conditional field should be filled.") );
return false;
}
if ( $("#conditional_comparison").val() == '' ) {
alert( __("The conditional comparison operator should be filled.") );
return false
}
if ( $("#conditional_value").val() == '' &&
( $("#conditional_comparison").val() == 'equals' || $("#conditional_comparison").val() == 'not_equals' ) ) {
if ( document.getElementById('conditional_regex').checked == true ) {
alert( __("The conditional regular expression should be filled.") );
return false;
} else {
alert( __("The conditional value should be filled.") );
return false;
}
}
}
});
$("#conditional_field,#from_field").change(function(){
updateAllEvery();
});
$("#new_action").on("click",function(e){
e.preventDefault();
cancelEditAction();
$("#add_action").show();
$("#action").focus();
});
$(".duplicate_template").on("click",function(e){
e.preventDefault();
var template_id = $(this).data("template_id");
$("#duplicate_a_template").val(template_id);
$("#duplicate_current_template").val(1);
});
$('#createTemplate').on('shown.bs.modal', function (e) {
e.preventDefault();
$("#template_name").focus();
});
$("#duplicate_a_template").on("change",function(e){
e.preventDefault();
if( this.value === '' ){
$("#duplicate_current_template").val("");
} else {
$("#duplicate_current_template").val(1);
}
});
$(".delete_template").on("click",function(){
return confirmDelete();
});
$(".edit_action").on("click", function(){
var mmta_id = $(this).data("mmta_id");
var mmta = $.grep(mmtas, function(elt, id) {
return elt['mmta_id'] == mmta_id;
});
editAction( mmta[0] );
updateAllEvery();
});
});
function updateAllEvery(){
if ( $("#conditional_field").is(":visible") ) {
if ( $("#conditional_field").val() == $("#from_field").val() && $("#from_field").val().length > 0 ) {
$("#field_number option[value='0']").html( __("Every") );
} else {
$("#field_number option[value='0']").html( __("All") );
}
}
}
function onActionChange(selectObj) {
// get the index of the selected option
var idx = selectObj.selectedIndex;
// get the value of the selected option
var action = selectObj.options[idx].value;
switch( action ) {
case 'delete_field':
show('field_number_block');
hide('with_value_block');
hide('to_field_block');
break;
case 'add_field':
hide('field_number_block');
show('with_value_block');
hide('to_field_block');
break;
case 'update_field':
hide('field_number_block');
show('with_value_block');
hide('to_field_block');
break;
case 'move_field':
show('field_number_block');
hide('with_value_block');
show('to_field_block');
break;
case 'copy_field':
show('field_number_block');
hide('with_value_block');
show('to_field_block');
break;
case 'copy_and_replace_field':
show('field_number_block');
hide('with_value_block');
show('to_field_block');
break;
}
}
function onConditionalChange(selectObj) {
// get the index of the selected option
var idx = selectObj.selectedIndex;
// get the value of the selected option
var action = selectObj.options[idx].value;
switch( action ) {
case '':
hide('conditional_block');
break;
case 'if':
case 'unless':
show('conditional_block');
break;
}
}
function onConditionalComparisonChange(selectObj) {
// get the index of the selected option
var idx = selectObj.selectedIndex;
// get the value of the selected option
var action = selectObj.options[idx].value;
switch( action ) {
case 'equals':
case 'not_equals':
show('conditional_comparison_block');
break;
default:
hide('conditional_comparison_block');
break;
}
}
function onToFieldRegexChange( checkboxObj ) {
if ( checkboxObj.checked ) {
show('to_field_regex_value_block');
} else {
hide('to_field_regex_value_block');
}
}
function onConditionalRegexChange( checkboxObj ) {
if ( checkboxObj.checked ) {
$("span.match_regex_prefix" ).show();
$("span.match_regex_suffix" ).show();
} else {
$("span.match_regex_prefix" ).hide();
$("span.match_regex_suffix" ).hide();
}
}
function show(eltId) {
elt = document.getElementById( eltId );
elt.style.display='inline';
}
function hide(eltId) {
clearFormElements( eltId );
elt = document.getElementById( eltId );
elt.style.display='none';
}
function clearFormElements(divId) {
myBlock = document.getElementById( divId );
var inputElements = myBlock.getElementsByTagName( "input" );
for (var i = 0; i < inputElements.length; i++) {
switch( inputElements[i].type ) {
case "text":
inputElements[i].value = '';
break;
case "checkbox":
inputElements[i].checked = false;
break;
}
}
var selectElements = myBlock.getElementsByTagName( "select" );
for (var i = 0; i < selectElements.length; i++) {
selectElements[i].selectedIndex = 0;
}
}
function confirmDeleteAction() {
return confirm( __("Are you sure you wish to delete this template action?") );
}
function confirmDelete() {
return confirm( __("Are you sure you wish to delete this template?") );
}
var modaction_legend_innerhtml;
var action_submit_value;
function editAction( mmta ) {
$("#add_action").show();
document.getElementById('mmta_id').value = mmta['mmta_id'];
setSelectByValue( 'action', mmta['action'] );
$('#action').change();
setSelectByValue( 'field_number', mmta['field_number'] );
document.getElementById('from_field').value = mmta['from_field'];
document.getElementById('from_subfield').value = mmta['from_subfield'];
document.getElementById('field_value').value = mmta['field_value'];
document.getElementById('to_field').value = mmta['to_field'];
document.getElementById('to_subfield').value = mmta['to_subfield'];
if ( mmta['regex_search'] == '' && mmta['to_regex_replace'] == '' && mmta['to_regex_modifiers'] == '' ) {
$('#to_field_regex').prop('checked', false).change();
} else {
$('#to_field_regex').prop('checked', true).change();
$("#to_regex_search").val(mmta['to_regex_search']);
$("#to_regex_replace").val(mmta['to_regex_replace']);
$("#to_regex_modifiers").val(mmta['to_regex_modifiers']);
}
setSelectByValue( 'conditional', mmta['conditional'] );
$('#conditional').change();
document.getElementById('conditional_field').value = mmta['conditional_field'];
document.getElementById('conditional_subfield').value = mmta['conditional_subfield'];
setSelectByValue( 'conditional_comparison', mmta['conditional_comparison'] );
$('#conditional_comparison').change();
document.getElementById('conditional_value').value = mmta['conditional_value'];
document.getElementById('conditional_regex').checked = parseInt( mmta['conditional_regex'] );
$('#conditional_regex').change();
document.getElementById('description').value = mmta['description'];
window.modaction_legend_innerhtml = document.getElementById('modaction_legend').innerHTML;
document.getElementById('modaction_legend').innerHTML = __("Edit action %s").format(mmta['ordering']);
window.action_submit_value = document.getElementById('action_submit').value;
document.getElementById('action_submit').value = __("Update action");
}
function cancelEditAction() {
document.getElementById('mmta_id').value = '';
setSelectByValue( 'action', 'delete_field' );
$('#action').change();
document.getElementById('from_field').value = '';
document.getElementById('from_subfield').value = '';
document.getElementById('field_value').value = '';
document.getElementById('to_field').value = '';
document.getElementById('to_subfield').value = '';
$("#to_regex_search").val("");
$("#to_regex_replace").val("");
$("#to_regex_modifiers").val("");
$("#description").val("");
$('#to_field_regex').prop('checked', false).change();
setSelectByValue( 'conditional', '' );
$('#conditional').change();
document.getElementById('conditional_field').value = '';
document.getElementById('conditional_subfield').value = '';
setSelectByValue( 'conditional_comparison', '' );
$('#conditional_comparison').change();
document.getElementById('conditional_value').value = '';
document.getElementById('conditional_regex').checked = false;
document.getElementById('modaction_legend').innerHTML = window.modaction_legend_innerhtml;
document.getElementById('action_submit').value = window.action_submit_value;
$("#add_action").hide();
}
function setSelectByValue( selectId, value ) {
s = document.getElementById( selectId );
for ( i = 0; i < s.options.length; i++ ) {
if ( s.options[i].value == value ) {
s.selectedIndex = i;
}
}
}