1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/limesurvey_ynh.git synced 2024-09-03 19:36:32 +02:00
limesurvey_ynh/sources/application/extensions/bootstrap/widgets/TbFormButtonElement.php

89 lines
2.2 KiB
PHP

<?php
/**
* TbFormButtonElement class file.
*
* The buttonElementClass for TbForm
*
* Support for Yii formbuilder
*
* @author Joe Blocher <yii@myticket.at>
* @copyright Copyright &copy; 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();
}
}