From 4baf83a09a2c1ae8c9def18c967eb256564ef719 Mon Sep 17 00:00:00 2001 From: Andreas Roussos Date: Sat, 17 Nov 2018 20:03:36 +0200 Subject: [PATCH] Bug 21861: The MARC modification template actions editor does not always validate user input The MARC modification template actions editor does not validate user input when adding a conditional clause, making it possible to save a modification action without filling in all necessary fields. This patch fixes that. Test plan: 1) Create a MARC modification template and add a new action, e.g. "Copy All field(s) 200$a to field 600$a". Add a condition ("if" or "unless") but leave the relevant field and subfield textboxes empty. Add "matches" or "doesn't match" as a comparison operator. Check the "RegEx" checkbox, leave the regex textbox empty. 2) Click on "Add action" and notice how it accepts your input. Also notice the extra space in the Action column RegEx. 3) Edit your modification action and notice the missing "m/" before the conditional RegEx. 4) Apply the patch and hit CTRL-F5 to reload the relevant JS. 5) Edit the modification action you added previously (or add a new one). Try leaving the textboxes mentioned above empty and then submit your changes. You should get pop-up windows informing you about missing fields. 6) Now try typing a value in the conditional regex textbox and Update your action. In the Action column, there should be no spaces between the delimiters of the matching operator and the value you just entered. 7) Edit your action: notice how the "m/" before the regular expression and the "/" after it are now showing correctly. Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens (cherry picked from commit 3e1e1448e9132dce81571a4c3f31eb67816f14f9) Signed-off-by: Martin Renvoize (cherry picked from commit a616b9fc0266fdc9a5d299d5927f8b4a2236c559) Conflicts: koha-tmpl/intranet-tmpl/prog/en/modules/tools/marc_modification_templates.tt Signed-off-by: Lucas Gass --- .../tools/marc_modification_templates.tt | 8 ++++--- .../prog/js/marc_modification_templates.js | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) 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 94954f70f8..c4521edd6f 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 @@ -155,9 +155,7 @@ [% IF ( ActionsLoo.conditional_comparison_equals ) %] matches [% END %] [% IF ( ActionsLoo.conditional_comparison_not_equals ) %] does not match [% END %] - [% IF ( ActionsLoo.conditional_regex ) %] RegEx m/[% END %] - [% ActionsLoo.conditional_value %] - [% IF ( ActionsLoo.conditional_regex ) %]/[% END %] + [% IF ( ActionsLoo.conditional_regex ) %] RegEx m/[% END %][% ActionsLoo.conditional_value | html %][% IF ( ActionsLoo.conditional_regex ) %]/[% END %] [% END %] [% ActionsLoo.description %] @@ -350,6 +348,10 @@ var MSG_MMT_CONFIRM_DEL_TEMPLATE_ACTION = _("Are you sure you wish to delete this template action?"); var MSG_MMT_EDIT_ACTION = _("Edit action %s"); var MSG_MMT_UPDATE_ACTION = _("Update action"); + var MSG_MMT_CONDITIONAL_FIELD_REQUIRED = _("The conditional field should be filled."); + var MSG_MMT_CONDITIONAL_COMPARISON_REQUIRED = _("The conditional comparison operator should be filled."); + var MSG_MMT_CONDITIONAL_VALUE_REQUIRED = _("The conditional value should be filled."); + var MSG_MMT_CONDITIONAL_VALUE_REGEX_REQUIRED = _("The conditional regular expression should be filled."); [% Asset.js("js/marc_modification_templates.js") %] [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/marc_modification_templates.js b/koha-tmpl/intranet-tmpl/prog/js/marc_modification_templates.js index a41da8ba4f..1d0d6d43a8 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/marc_modification_templates.js +++ b/koha-tmpl/intranet-tmpl/prog/js/marc_modification_templates.js @@ -41,6 +41,26 @@ $(document).ready(function() { alert( MSG_MMT_SOURCE_FIELD ); return false; } + if ( $("#conditional").val() == 'if' || $("#conditional").val() == 'unless' ) { + if ( $("#conditional_field").val() == '' ) { + alert( MSG_MMT_CONDITIONAL_FIELD_REQUIRED ); + return false; + } + if ( $("#conditional_comparison").val() == '' ) { + alert( MSG_MMT_CONDITIONAL_COMPARISON_REQUIRED ); + return false + } + if ( $("#conditional_value").val() == '' && + ( $("#conditional_comparison").val() == 'equals' || $("#conditional_comparison").val() == 'not_equals' ) ) { + if ( document.getElementById('conditional_regex').checked == true ) { + alert( MSG_MMT_CONDITIONAL_VALUE_REGEX_REQUIRED ); + return false; + } else { + alert( MSG_MMT_CONDITIONAL_VALUE_REQUIRED ); + return false; + } + } + } }); $("#conditional_field,#from_field").change(function(){ @@ -270,6 +290,7 @@ function editAction( mmta_id, ordering, action, field_number, from_field, from_s document.getElementById('conditional_value').value = conditional_value; document.getElementById('conditional_regex').checked = parseInt( conditional_regex ); + document.getElementById('conditional_regex').onchange(); document.getElementById('description').value = description; -- 2.39.5