From a576fce5f9ba13f30c8fa3a6fefc5c4528bfc4a8 Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Fri, 19 Feb 2016 13:30:44 -0500 Subject: [PATCH] Bug 15867: Move MARC modification templates JavaScript into separate file The JavaScript embedded in the MARC modification templates template is not dependent on template processing to such an extent that it can't be safely moved to a separate file. This patch does so, adding definition of a some translatable strings to the template. Other minor changes: A couple of JSHint warnings corrected, a couple of missing semicolons added to template markup. To test, apply the patch and go to Tools -> MARC modification templates - Confirm that The add/update form works normally with various actions (Add/update,Delete,Move, etc.). - Confirm that template switching works correctly. - Confirm that template deletion confirmation works correctly. - Confirm that cancelling an edit works correctly Signed-off-by: Hector Castro Works as advertised Signed-off-by: Jonathan Druart --- .../prog/en/js/marc_modification_templates.js | 288 +++++++++++++++++++ .../modules/tools/marc_modification_templates.tt | 315 ++------------------- 2 files changed, 305 insertions(+), 298 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/marc_modification_templates.js diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/marc_modification_templates.js b/koha-tmpl/intranet-tmpl/prog/en/js/marc_modification_templates.js new file mode 100644 index 0000000..185afa8 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/js/marc_modification_templates.js @@ -0,0 +1,288 @@ +$(document).ready(function() { + $('#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( MSG_MMT_SUBFIELDS_MATCH ); + return false; + } + if ( $("#to_field").val().length <= 0 ) { + alert( MSG_MMT_DESTINATION_REQUIRED ); + return false; + } + if ( ( $("#to_field").val() < 10 && $("#to_subfield").val().length > 0 ) || + ( $("#from_field").val() < 10 && $("#from_subfield").val().length > 0 ) ) { + alert( MSG_MMT_CONTROL_FIELD_EMPTY ); + return false; + } + if ( ( $("#from_field").val() < 10 && $("#to_subfield").val().length === 0 ) || + ( $("#to_field").val() < 10 && $("#from_subfield").val().length === 0 ) ) { + alert( MSG_MMT_CONTROL_FIELD ); + return false; + } + } + if ( action == 'update_field' ) { + if ( $("#from_subfield").val().length <= 0 ) { + alert( MSG_MMT_SOURCE_SUBFIELD ); + return false; + } + } + if ( $("#from_field").val().length <= 0 ) { + alert( MSG_MMT_SOURCE_FIELD ); + return false; + } + }); + + $("#conditional_field,#from_field").change(function(){ + 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( MSG_MMT_EVERY ); + } else { + $("#field_number option[value='0']").html( MSG_MMT_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 '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 confirmDelete() { + var agree = confirm( MSG_MMT_CONFIRM_DEL_TEMPLATE ); + return agree; +} + +var modaction_legend_innerhtml; +var action_submit_value; + +function editAction( mmta_id, ordering, action, field_number, from_field, from_subfield, field_value, to_field, + to_subfield, to_regex_search, to_regex_replace, to_regex_modifiers, conditional, conditional_field, conditional_subfield, + conditional_comparison, conditional_value, conditional_regex, description +) { + document.getElementById('mmta_id').value = mmta_id; + + setSelectByValue( 'action', action ); + document.getElementById('action').onchange(); + + setSelectByValue( 'field_number', field_number ); + + document.getElementById('from_field').value = from_field; + document.getElementById('from_subfield').value = from_subfield; + document.getElementById('field_value').value = field_value; + document.getElementById('to_field').value = to_field; + document.getElementById('to_subfield').value = to_subfield; + $("#to_regex_search").val(to_regex_search); + $("#to_regex_replace").val(to_regex_replace); + $("#to_regex_modifiers").val(to_regex_modifiers); + + document.getElementById('to_field_regex').checked = conditional_regex.length; + document.getElementById('to_field_regex').onchange(); + + setSelectByValue( 'conditional', conditional ); + document.getElementById('conditional').onchange(); + + document.getElementById('conditional_field').value = conditional_field; + document.getElementById('conditional_subfield').value = conditional_subfield; + + setSelectByValue( 'conditional_comparison', conditional_comparison ); + document.getElementById('conditional_comparison').onchange(); + + document.getElementById('conditional_value').value = conditional_value; + + document.getElementById('conditional_regex').checked = parseInt( conditional_regex ); + + document.getElementById('description').value = description; + + window.modaction_legend_innerhtml = document.getElementById('modaction_legend').innerHTML; + document.getElementById('modaction_legend').innerHTML = MSG_MMT_EDIT_ACTION.format(ordering); + + window.action_submit_value = document.getElementById('action_submit').value; + document.getElementById('action_submit').value = MSG_MMT_UPDATE_ACTION; + + show('cancel_edit'); +} + +function cancelEditAction() { + document.getElementById('mmta_id').value = ''; + + setSelectByValue( 'action', 'delete_field' ); + document.getElementById('action').onchange(); + + 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(""); + + document.getElementById('to_field_regex').checked = false; + document.getElementById('to_field_regex').onchange(); + + setSelectByValue( 'conditional', '' ); + document.getElementById('conditional').onchange(); + + document.getElementById('conditional_field').value = ''; + document.getElementById('conditional_subfield').value = ''; + + setSelectByValue( 'conditional_comparison', '' ); + document.getElementById('conditional_comparison').onchange(); + + 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; + + hide('cancel_edit'); +} + +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; + } + } +} \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/marc_modification_templates.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/marc_modification_templates.tt index 0dcaab9..e621de2 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/marc_modification_templates.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/marc_modification_templates.tt @@ -1,303 +1,22 @@ [% INCLUDE 'doc-head-open.inc' %] Koha › Tools › MARC modification templates [% INCLUDE 'doc-head-close.inc' %] - - - - + @@ -311,7 +30,7 @@ function setSelectByValue( selectId, value ) {

MARC modification templates

- + [% IF error %] [% IF error == 'no_from_field' %]
Error: no field value specified.
@@ -351,8 +70,8 @@ function setSelectByValue( selectId, value ) { Order Action Description -   -   +   +   [% FOREACH ActionsLoo IN ActionsLoop %] -- 2.7.0