namespace Combodo\iTop\Form; use \Combodo\iTop\Form\Form; use \Combodo\iTop\Renderer\FormRenderer; /** * Description of formmanager * * @author Guillaume Lajarige */ abstract class FormManager { protected $oForm; protected $oRenderer; static function FromJSON($sJson) { // Overload in child class when needed $aJson = json_decode($sJson, true); $oFormManager = new static(); $sFormRendererClass = $aJson['formrenderer_class']; $oFormRenderer = new $sFormRendererClass(); $oFormRenderer->SetEndpoint($aJson['formrenderer_endpoint']); $oFormManager->SetRenderer($oFormRenderer); return $oFormManager; } public function __construct() { // Overload in child class when needed } public function GetForm() { return $this->oForm; } public function GetRenderer() { return $this->oRenderer; } public function SetRenderer(FormRenderer $oRenderer) { $this->oRenderer = $oRenderer; return $this; } public function GetClass() { return get_class($this); } public function ToJSON() { // Overload in child class when needed return array( 'id' => $this->oForm->GetId(), 'formmanager_class' => $this->GetClass(), 'formrenderer_class' => get_class($this->GetRenderer()), 'formrenderer_endpoint' => $this->GetRenderer()->GetEndpoint() ); } abstract public function Build(); abstract public function OnUpdate($aArgs = null); abstract public function OnSubmit($aArgs = null); abstract public function OnCancel($aArgs = null); }