* @copyright Copyright © Joe Blocher 2012 * @license http://www.opensource.org/licenses/bsd-license.php New BSD License * @package bootstrap.widgets */ class TbFormButtonElement extends CFormElement { /** * @var string the button layout: set as TbButton->type in function render() * Valid values are 'primary', 'info', 'success', 'warning', 'danger' and 'inverse'. */ public $layoutType; /** * @var array Core button types (alias=>CHtml method name) */ public static $TbButtonTypes=array( 'htmlButton'=>'button', 'htmlSubmit'=>'submit', 'htmlReset'=>'reset', 'button'=>'button', 'submit'=>'submit', 'reset'=>'reset', //'image'=>'imageButton', not supported 'link'=>'link', //new YiiBooster types 'ajaxLink'=>'ajaxLink', 'ajaxButton'=>'ajaxButton', 'ajaxSubmit'=>'ajaxSubmit', ); /** * Prepare the options before running the TbButton widget * * Map Yii formbuilder compatible: * $this->type => TbButton->buttonType * $this->layoutType => TbButton->type * * @param $options * @return mixed */ protected function prepareWidgetOptions($options) { //map $this->type to attribute buttonType of TbButton $options['buttonType'] = self::$TbButtonTypes[$this->type]; unset($options['type']); //map layoutType to attribute type of TbButton if(isset($this->layoutType)) $options['type'] = $this->layoutType; //move $options['name'] to htmlOptions $options['htmlOptions']['name'] = $this->name; unset($options['name']); return $options; } /** * Run TbButton widget * * @return string the rendering result */ public function render() { if(!empty(self::$TbButtonTypes[$this->type])) { $attributes = $this->prepareWidgetOptions($this->attributes); ob_start(); Yii::app()->controller->widget('TbButton',$attributes); return ob_get_clean(); } return parent::render(); } }