diff --git a/apps/documenteditor/embed/js/ApplicationController.js b/apps/documenteditor/embed/js/ApplicationController.js index e2aa0592d..bab462149 100644 --- a/apps/documenteditor/embed/js/ApplicationController.js +++ b/apps/documenteditor/embed/js/ApplicationController.js @@ -255,12 +255,15 @@ DE.ApplicationController = new(function(){ common.utils.dialogPrint(url, api); } - function onFillRequiredFields() { - if (btnSubmit) { + function onFillRequiredFields(isFilled) { + if (isFilled) { btnSubmit.removeAttr('disabled'); btnSubmit.css("pointer-events", "auto"); + // $requiredTooltip && $requiredTooltip.hide(); + } else { + btnSubmit.attr({disabled: true}); + btnSubmit.css("pointer-events", "none"); } - $requiredTooltip && $requiredTooltip.hide(); } function hidePreloader() { @@ -338,7 +341,7 @@ DE.ApplicationController = new(function(){ api.asc_registerCallback('asc_onDownloadUrl', onDownloadUrl); api.asc_registerCallback('asc_onPrint', onPrint); api.asc_registerCallback('asc_onPrintUrl', onPrintUrl); - api.asc_registerCallback('asc_onFillRequiredFields', onFillRequiredFields); + api.asc_registerCallback('sync_onAllRequiredFormsFilled', onFillRequiredFields); Common.Gateway.on('processmouse', onProcessMouse); Common.Gateway.on('downloadas', onDownloadAs); @@ -420,8 +423,8 @@ DE.ApplicationController = new(function(){ }); // TODO: add asc_hasRequiredFields to sdk - /* - if (appOptions.canSubmitForms && api.asc_hasRequiredFields()) { + + if (appOptions.canSubmitForms && !api.asc_IsAllRequiredFormsFilled()) { var sgroup = $('#id-submit-group'); btnSubmit.attr({disabled: true}); btnSubmit.css("pointer-events", "none"); @@ -432,6 +435,7 @@ DE.ApplicationController = new(function(){ $requiredTooltip.css({top : offset.top + btnSubmit.height() + 'px', left: offset.left + btnSubmit.outerWidth()/2 - $requiredTooltip.outerWidth() + 'px'}); $requiredTooltip.find('.close-div').on('click', function() { $requiredTooltip.hide(); + api.asc_MoveToFillingForm(true, true, true); common.localStorage.setItem("de-embed-hide-submittip", 1); sgroup.attr('data-toggle', 'tooltip'); sgroup.tooltip({ @@ -448,7 +452,6 @@ DE.ApplicationController = new(function(){ }); } } - */ var documentMoveTimer; var ismoved = false; diff --git a/apps/documenteditor/main/app/controller/FormsTab.js b/apps/documenteditor/main/app/controller/FormsTab.js index 9ef385626..43500dbdf 100644 --- a/apps/documenteditor/main/app/controller/FormsTab.js +++ b/apps/documenteditor/main/app/controller/FormsTab.js @@ -233,6 +233,18 @@ define([ }, onSubmitClick: function() { + if (!this.api.asc_IsAllRequiredFormsFilled()) { + var me = this; + Common.UI.warning({ + msg: this.view.textRequired, + callback: function() { + me.api.asc_MoveToFillingForm(true, true, true); + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + }); + return; + } + this.api.asc_SendForm(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, diff --git a/apps/documenteditor/main/app/view/FormsTab.js b/apps/documenteditor/main/app/view/FormsTab.js index fa93c0802..2437a1451 100644 --- a/apps/documenteditor/main/app/view/FormsTab.js +++ b/apps/documenteditor/main/app/view/FormsTab.js @@ -388,7 +388,8 @@ define([ tipPrevForm: 'Go to the previous field', tipNextForm: 'Go to the next field', tipSubmit: 'Submit form', - textSubmited: 'Form submitted successfully' + textSubmited: 'Form submitted successfully', + textRequired: 'Fill all required fields to send form.' } }()), DE.Views.FormsTab || {})); }); \ No newline at end of file diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index 8a5eab7bd..58614e740 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -1794,6 +1794,7 @@ "DE.Views.FormsTab.tipSubmit": "Submit form", "DE.Views.FormsTab.tipTextField": "Insert text field", "DE.Views.FormsTab.tipViewForm": "View form", + "DE.Views.FormsTab.textRequired": "Fill all required fields to send form.", "DE.Views.HeaderFooterSettings.textBottomCenter": "Bottom center", "DE.Views.HeaderFooterSettings.textBottomLeft": "Bottom left", "DE.Views.HeaderFooterSettings.textBottomPage": "Bottom of Page",