| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <?php
- namespace MGModule\DNSManager2\mgLibs\forms;
- use MGModule\DNSManager2 as main;
- /**
- * Form Creator
- *
- * @author Michal Czech <michael@modulesgarden.com>
- */
- 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;
- }
-
- }
|