Вход Регистрация
Файл: framework/zii/widgets/jui/CJuiButton.php
Строк: 184
<?php
/**
 * CJuiButton class file.
 *
 * @author Sebastian Thierer <sebas@artfos.com>
 * @link http://www.yiiframework.com/
 * @copyright Copyright &copy; 2008-2011 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

Yii::import('zii.widgets.jui.CJuiInputWidget');

/**
 * CJuiButton displays a button widget.
 *
 * CJuiButton encapsulates the {@link http://jqueryui.com/demos/button/ JUI Button}
 * plugin.
 *
 * To use this widget as a submit button, you may insert the following code in a view:
 * <pre>
 * $this->widget('zii.widgets.jui.CJuiButton', array(
 *         'name'=>'submit',
 *         'caption'=>'Save',
 *         'options'=>array(
 *         'onclick'=>'js:function(){alert("Yes");}',
 *     ),
 * ));
 * </pre>
 *
 * To use this widget as a button, you may insert the following code in a view:
 * <pre>
 * $this->widget('zii.widgets.jui.CJuiButton',
 *        array(
 *            'name'=>'button',
 *             'caption'=>'Save',
 *            'value'=>'asd',
 *            'onclick'=>'js:function(){alert("Save button clicked"); this.blur(); return false;}',
 *         )
 * );
 * </pre>
 *
 * By configuring the {@link options} property, you may specify the options
 * that need to be passed to the JUI button plugin. Please refer to
 * the {@link http://jqueryui.com/demos/button/ JUI Button} documentation
 * for possible options (name-value pairs).
 *
 * @author Sebastian Thierer <sebathi@gmail.com>
 * @version $Id: CJuiButton.php 2799 2011-01-01 19:31:13Z qiang.xue $
 * @package zii.widgets.jui
 * @since 1.1.3
 */
class CJuiButton extends CJuiInputWidget
{
    
/**
     * @var string The button type (possible types: submit, button, link, radio, checkbox, buttonset).
     * "submit" is used as default.
     */
    
public $buttonType 'submit';

    
/**
     * @var string The default html tag for the buttonset
     */
    
public $htmlTag 'div';
    
/**
     * @var string The url used when a buttonType "link" is selected.
     */
    
public $url null;

    
/**
     * @var mixed The value of the current item. Used only for "radio" and "checkbox"
     */
    
public $value;

    
/**
     * @var string The button text
     */
    
public $caption="";
    
/**
     * @var string The javascript function to be raised when this item is clicked (client event).
     */
    
public $onclick;

    
/**
     * (non-PHPdoc)
     * @see framework/zii/widgets/jui/CJuiWidget::init()
     */
    
public function init(){
        
parent::init();
        if (
$this->buttonType=='buttonset')
        {
            list(
$name,$id)=$this->resolveNameID();

            if(isset(
$this->htmlOptions['id']))
                
$id=$this->htmlOptions['id'];
            else
                
$this->htmlOptions['id']=$id;
            if(isset(
$this->htmlOptions['name']))
                
$name=$this->htmlOptions['name'];
            else
                
$this->htmlOptions['name']=$name;

            echo 
CHtml::openTag($this->htmlTag$this->htmlOptions);
        }
    }

    
/**
     * (non-PHPdoc)
     * @see framework/CWidget::run()
     */
    
public function run()
    {
        
$cs Yii::app()->getClientScript();
        list(
$name,$id)=$this->resolveNameID();

        if(isset(
$this->htmlOptions['id']))
            
$id=$this->htmlOptions['id'];
        else
            
$this->htmlOptions['id']=$id;
        if(isset(
$this->htmlOptions['name']))
            
$name=$this->htmlOptions['name'];
        else
            
$this->htmlOptions['name']=$name;

        if (
$this->buttonType=='buttonset')
        {
            echo 
CHtml::closeTag($this->htmlTag);
            
$cs->registerScript(__CLASS__.'#'.$id,"jQuery('#{$id}').buttonset();");
        }
        else
        {
            switch(
$this->buttonType)
            {
                case 
'submit':
                    echo 
CHtml::submitButton($this->caption$this->htmlOptions) . "n";
                    break;
                case 
'button':
                    echo 
CHtml::htmlButton($this->caption$this->htmlOptions) . "n";
                    break;
                case 
'link':
                    echo 
CHtml::link($this->caption$this->url$this->htmlOptions) . "n";
                    break;
                case 
'radio':
                    if (
$this->hasModel())
                    {
                        echo 
CHtml::activeRadioButton($this->model$this->attribute$this->htmlOptions);
                        echo 
CHtml::label($this->captionCHtml::activeId($this->model$this->attribute)) . "n";
                    }
                    else
                    {
                        echo 
CHtml::radioButton($name$this->value$this->htmlOptions);
                        echo 
CHtml::label($this->caption$id) . "n";
                    }
                    break;
                case 
'checkbox':
                    if (
$this->hasModel())
                    {
                        echo 
CHtml::activeCheckbox($this->model$this->attribute$this->htmlOptions);
                        echo 
CHtml::label($this->captionCHtml::activeId($this->model$this->attribute)) . "n";
                    }
                    else
                    {
                        echo 
CHtml::checkbox($name$this->value$this->htmlOptions);
                        echo 
CHtml::label($this->caption$id) . "n";
                    }
                    break;
                default:
                    throw new 
CException(Yii::t('zii','The button type "{type}" is not supported.',array('{type}'=>$this->buttonType)));
            }

            
$options=empty($this->options) ? '' CJavaScript::encode($this->options);
            if (isset(
$this->onclick))
            {
                if(
strpos($this->onclick,'js:')!==0)
                
$this->onclick='js:'.$this->onclick;
                
$click CJavaScript::encode($this->onclick);
                
$cs->registerScript(__CLASS__.'#'.$id,"jQuery('#{$id}').button($options).click($click);");
            }
            else
            {
                
$cs->registerScript(__CLASS__.'#'.$id,"jQuery('#{$id}').button($options);");
            }
        }
    }
}
Онлайн: 3
Реклама