*/ class creator{ /** * * @var abstractField[] */ public $fields = array(); public $hidden = array(); public $name; public $url = null; public $addFormNameToFields = false; public $addIDs = true; public $autoPrepare = true; public $getHTMLCount = 0; public $lastID = null; function __construct($name,$options = array()) { $this->name = $name; $this->addIDs = $name; foreach($options as $name => $value) { if(property_exists($this, $name)) { $this->{$name} = $value; } } $this->hidden[] = new hiddenField(array( 'name' => 'mg-token' ,'value' => md5(time()) )); } /** * * @param \MGModule\DNSManager2\mgLibs\forms\className $field * @param type $dataOrName * @param type $data * @throws main\mgLibs\exceptions\system */ function addField($field,$dataOrName = null,$data = array()){ if(is_string($dataOrName)) { $data['name'] = $dataOrName; } elseif(is_array($dataOrName)) { $data = $dataOrName; } $data['formName'] = $this->name; if(is_object($field)) { if(get_parent_class($field) !== __NAMESPACE__.'\\'.'abstractField') { throw new \MGModule\DNSManager2\mgLibs\exceptions\system('Unable to use this object as form field'); } if($field->type == 'hidden') { $this->hidden[] = $field; } else { $this->fields[] = $field; } } elseif(is_string($field) && is_array($data)) { $className = __NAMESPACE__.'\\'.$field.'Field'; if(!class_exists($className)) { throw new \MGModule\DNSManager2\mgLibs\exceptions\system('Unable to crate form field type:'.$className); } $field = new $className($data); $field->formName = $this->name; if($field->type == 'hidden') { $this->hidden[] = $field; } else { $this->fields[] = $field; } } else { throw new \MGModule\DNSManager2\mgLibs\exceptions\system('Unable create form field object'); } } function anyField(){ return !empty($this->fields); } function prepare(){ foreach($this->fields as &$field) { $field->html = null; $field->addFormNameToFields = $this->addFormNameToFields; $field->addIDs = $this->addIDs; $field->formName = $this->name; } } function setIDs($id){ $this->addIDs = $id; } function getHTML($container = 'default',$data = array()){ main\mgLibs\lang::stagCurrentContext('generateForm'); main\mgLibs\lang::addToContext($this->name); if($this->autoPrepare) { $this->addIDs .= '_'.$container; $this->prepare(); } $closedTag = true; foreach($this->fields as $field) { if(empty($field->html)) { if($closedTag) { $field->opentag = true; } else { $field->opentag = false; $closedTag = true; } if($field->continue) { $closedTag = $field->closetag = false; } else { $field->closetag = true; } $field->generate(); } } foreach($this->hidden as $field) { if(empty($field->html)) { $field->generate(); } } $data['name'] = $this->name; $data['url'] = $this->url; $data['fields'] = $this->fields; $data['hidden'] = $this->hidden; $html = main\mgLibs\smarty::I()->view($container, $data, main\mgLibs\process\mainInstance::getModuleTemplatesDir().DS.'formFields'.DS.'containers'); main\mgLibs\lang::unstagContext('generateForm'); $this->getHTMLCount++; return $html; } }