Przeglądaj źródła

Custom fields: better error reporting when an exception occurs while finalizing the form

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@3956 a333f486-631f-4898-b8df-5754b55c2be0
romainq 9 lat temu
rodzic
commit
e1ca7c4f6b
3 zmienionych plików z 30 dodań i 12 usunięć
  1. 12 2
      js/console_form_handler.js
  2. 17 9
      pages/ajax.render.php
  3. 1 1
      sources/form/form.class.inc.php

+ 12 - 2
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);
             });
         },

+ 17 - 9
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();
+			$aResult = array();
+
+			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);
+				$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;
+				$aResult['form']['updated_fields'] = $aRenderRes;
+			}
+			catch (Exception $e)
+			{
+				$aResult['error'] = $e->getMessage();
+			}
 			$oPage->add(json_encode($aResult));
 			break;
 

+ 1 - 1
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');
 				}
 			}
 		}