diff --git a/js/console_form_handler.js b/js/console_form_handler.js index 7432157a90..6081764138 100644 --- a/js/console_form_handler.js +++ b/js/console_form_handler.js @@ -69,13 +69,23 @@ $(function() json_obj: this.options.oWizardHelper.UpdateWizardToJSON() }, function(data){ - me._onUpdateSuccess(data, sFormPath); + if ('form' in data) { + me._onUpdateSuccess(data, sFormPath); + } } ) .fail(function(data){ me._onUpdateFailure(data, sFormPath); }) .always(function(data){ me.alignColumns(); - $(me.element.find('[data-form-path="' + sFormPath + '"]')).unblock(); + var oContainer = $(me.element.find('[data-form-path="' + sFormPath + '"]')); + oContainer.unblock(); + if ('error' in data) { + oContainer.block({message: data.error}); + console.log('Update field failure: '+data.error); + $('.blockOverlay').click(function(){ + oContainer.unblock(); + }); + } me._onUpdateAlways(data, sFormPath); }); }, diff --git a/pages/ajax.render.php b/pages/ajax.render.php index 5495d868dd..e070676240 100644 --- a/pages/ajax.render.php +++ b/pages/ajax.render.php @@ -2456,17 +2456,25 @@ EOF $sRequestedFieldsFormPath = utils::ReadParam('form_path', ''); $sJson = utils::ReadParam('json_obj', '', false, 'raw_data'); - $oWizardHelper = WizardHelper::FromJSON($sJson); - $oObj = $oWizardHelper->GetTargetObject(); - - $oOrmCustomFieldValue = $oObj->Get($sAttCode); - $oForm = $oOrmCustomFieldValue->GetForm(); - $oSubForm = $oForm->FindSubForm($sRequestedFieldsFormPath); - $oRenderer = new \Combodo\iTop\Renderer\Console\ConsoleFormRenderer($oSubForm); - $aRenderRes = $oRenderer->Render($aRequestedFields); - $aResult = array(); - $aResult['form']['updated_fields'] = $aRenderRes; + + try + { + $oWizardHelper = WizardHelper::FromJSON($sJson); + $oObj = $oWizardHelper->GetTargetObject(); + + $oOrmCustomFieldValue = $oObj->Get($sAttCode); + $oForm = $oOrmCustomFieldValue->GetForm(); + $oSubForm = $oForm->FindSubForm($sRequestedFieldsFormPath); + $oRenderer = new \Combodo\iTop\Renderer\Console\ConsoleFormRenderer($oSubForm); + $aRenderRes = $oRenderer->Render($aRequestedFields); + + $aResult['form']['updated_fields'] = $aRenderRes; + } + catch (Exception $e) + { + $aResult['error'] = $e->getMessage(); + } $oPage->add(json_encode($aResult)); break; diff --git a/sources/form/form.class.inc.php b/sources/form/form.class.inc.php index 2171d4985b..df11ce2e40 100644 --- a/sources/form/form.class.inc.php +++ b/sources/form/form.class.inc.php @@ -413,7 +413,7 @@ class Form { if (!array_key_exists($sSomeId, $this->aFields)) { - throw new Exception('Missing dependancy : Field ' . $sImpactedBy . ' expecting field ' . $sSomeId . ' which is not in the Form'); + throw new Exception('Unmet dependency : Field ' . $sImpactedBy . ' expecting field ' . $sSomeId . ' which is not in the Form'); } } }