From 99f54d42536acf90616e5deae5ed2e754b1c478d Mon Sep 17 00:00:00 2001 From: Frank Naegler <frank.naegler@typo3.org> Date: Fri, 24 Mar 2017 12:12:43 +0100 Subject: [PATCH] [BUGFIX] Avoid warning dialog when closing records with dateTime fields In case a record contains a DateTimePicker field, the validation is triggered to early and mark each DateTime field as changed. This patch fix this wrong behavior. Resolves: #80008 Releases: master Change-Id: I9a2d81c6cf5b544d5a6f08f43fd2fea86b415d6a Reviewed-on: https://review.typo3.org/52140 Tested-by: TYPO3com <no-reply@typo3.com> Tested-by: Joerg Kummer <service@enobe.de> Reviewed-by: Georg Ringer <georg.ringer@gmail.com> Tested-by: Georg Ringer <georg.ringer@gmail.com> Reviewed-by: Andreas Fernandez <typo3@scripting-base.de> Tested-by: Andreas Fernandez <typo3@scripting-base.de> --- .../Public/JavaScript/DateTimePicker.js | 1 + .../Resources/Public/JavaScript/FormEngine.js | 3 +++ .../Public/JavaScript/FormEngineValidation.js | 22 ++++++++++--------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/DateTimePicker.js b/typo3/sysext/backend/Resources/Public/JavaScript/DateTimePicker.js index 6fbb0e0fa1df..1a053b18e4f5 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/DateTimePicker.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/DateTimePicker.js @@ -173,6 +173,7 @@ define(['jquery'], function($) { } $hiddenField.val(value); } + $(document).trigger('formengine.dp.change', [$(this)]); }); }); } diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/FormEngine.js b/typo3/sysext/backend/Resources/Public/JavaScript/FormEngine.js index e1e246db0024..a4c9c3551bfc 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/FormEngine.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/FormEngine.js @@ -729,6 +729,9 @@ define(['jquery', $input.val($(this).attr('data-original-language-value')).trigger('change'); $input.data('last-l10n-state', $(this).val()); } + }).on('formengine.dp.change', function(event, $field) { + FormEngine.Validation.validate(); + FormEngine.Validation.markFieldAsChanged($field); }); }; diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js b/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js index feba8af35288..ac9f619beb1c 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js @@ -21,14 +21,13 @@ define(['jquery', 'TYPO3/CMS/Backend/FormEngine', 'moment'], function ($, FormEn /** * The main FormEngineValidation object * - * @type {{rulesSelector: string, inputSelector: string, markerSelector: string, dateTimeSelector: string, groupFieldHiddenElement: string, relatedFieldSelector: string, errorClass: string, lastYear: number, lastDate: number, lastTime: number, refDate: Date, USmode: number, passwordDummy: string}} + * @type {{rulesSelector: string, inputSelector: string, markerSelector: string, groupFieldHiddenElement: string, relatedFieldSelector: string, errorClass: string, lastYear: number, lastDate: number, lastTime: number, refDate: Date, USmode: number, passwordDummy: string}} * @exports TYPO3/CMS/Backend/FormEngineValidation */ var FormEngineValidation = { rulesSelector: '[data-formengine-validation-rules]', inputSelector: '[data-formengine-input-params]', markerSelector: '.t3js-formengine-validation-marker', - dateTimeSelector: '.t3js-datetimepicker', groupFieldHiddenElement: '.t3js-formengine-field-group input[type=hidden]', relatedFieldSelector: '[data-relatedfieldname]', errorClass: 'has-error', @@ -51,14 +50,7 @@ define(['jquery', 'TYPO3/CMS/Backend/FormEngine', 'moment'], function ($, FormEn // Bind to field changes $(document).on('change', FormEngineValidation.rulesSelector, function() { FormEngineValidation.validate(); - var $paletteField = $(this).closest('.t3js-formengine-palette-field'); - $paletteField.addClass('has-change'); - }); - - $(document).on('dp.change', FormEngineValidation.dateTimeSelector, function(event) { - FormEngineValidation.validate(); - var $paletteField = $(this).closest('.t3js-formengine-palette-field'); - $paletteField.addClass('has-change'); + FormEngineValidation.markFieldAsChanged($(this)); }); }); @@ -539,6 +531,16 @@ define(['jquery', 'TYPO3/CMS/Backend/FormEngine', 'moment'], function ($, FormEn $(document).trigger('t3-formengine-postfieldvalidation'); }; + /** + * Helper function to mark a field as changed. + * + * @param {Object} $field + */ + FormEngineValidation.markFieldAsChanged = function($field) { + var $paletteField = $field.closest('.t3js-formengine-palette-field'); + $paletteField.addClass('has-change'); + }; + /** * Helper function to get clean trimmed array from comma list * -- GitLab