80 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * TbForm class file.
 | |
|  * @author Christoffer Niska <christoffer.niska@gmail.com>
 | |
|  * @copyright Copyright © Christoffer Niska 2013-
 | |
|  * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
 | |
|  * @package bootstrap.form
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Bootstrap form object that contains form input specifications.
 | |
|  */
 | |
| class TbForm extends CForm
 | |
| {
 | |
|     /**
 | |
|      * @var string the form layout.
 | |
|      */
 | |
|     public $layout = TbHtml::FORM_LAYOUT_VERTICAL;
 | |
| 
 | |
|     /**
 | |
|      * @var string the name of the class for representing a form input element.
 | |
|      */
 | |
|     public $inputElementClass = 'TbFormInputElement';
 | |
| 
 | |
|     /**
 | |
|      * @var string the name of the class for representing a form button element.
 | |
|      */
 | |
|     public $buttonElementClass = 'TbFormButtonElement';
 | |
| 
 | |
|     /**
 | |
|      * @var array the configuration used to create the active form widget.
 | |
|      */
 | |
|     public $activeForm = array('class' => 'TbActiveForm');
 | |
| 
 | |
|     /**
 | |
|      * Initializes this form.
 | |
|      */
 | |
|     public function init()
 | |
|     {
 | |
|         TbArray::defaultValue('layout', $this->layout, $this->activeForm);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Renders a single element which could be an input element, a sub-form, a string, or a button.
 | |
|      * @param mixed $element the form element to be rendered.
 | |
|      * @return string the rendering result
 | |
|      */
 | |
|     public function renderElement($element)
 | |
|     {
 | |
|         if (is_string($element)) {
 | |
|             if (($e = $this[$element]) === null && ($e = $this->getButtons()->itemAt($element)) === null) {
 | |
|                 return $element;
 | |
|             } else {
 | |
|                 $element = $e;
 | |
|             }
 | |
|         }
 | |
|         if ($element->getVisible()) {
 | |
|             if ($element instanceof CFormInputElement) {
 | |
|                 if ($element->type === 'hidden') {
 | |
|                     return TbHtml::tag('div', array('class' => 'hidden'), $element->render());
 | |
|                 }
 | |
|             }
 | |
|             return $element->render();
 | |
|         }
 | |
|         return '';
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Renders the buttons in this form.
 | |
|      * @return string the rendering result.
 | |
|      */
 | |
|     public function renderButtons()
 | |
|     {
 | |
|         $buttons = array();
 | |
|         foreach ($this->getButtons() as $button) {
 | |
|             $buttons[] = $this->renderElement($button);
 | |
|         }
 | |
|         return !empty($buttons) ? TbHtml::tag('div', array('class' => 'form-actions'), implode("\n", $buttons)) : '';
 | |
|     }
 | |
| } |