You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							92 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							92 lines
						
					
					
						
							2.0 KiB
						
					
					
				| <?php | |
| /** | |
|  * @link http://www.yiiframework.com/ | |
|  * @copyright Copyright (c) 2008 Yii Software LLC | |
|  * @license http://www.yiiframework.com/license/ | |
|  */ | |
|  | |
| namespace yii\jui; | |
|  | |
| use yii\helpers\Html; | |
|  | |
| /** | |
|  * SliderInput renders a slider jQuery UI widget that writes its value into hidden input. | |
|  * | |
|  * For example, | |
|  * | |
|  * ``` | |
|  * echo SliderInput::widget([ | |
|  *     'model' => $model, | |
|  *     'attribute' => 'amount', | |
|  *     'clientOptions' => [ | |
|  *         'min' => 1, | |
|  *         'max' => 10, | |
|  *     ], | |
|  * ]); | |
|  * ``` | |
|  * | |
|  * The following example will use the name property instead: | |
|  * | |
|  * ``` | |
|  * echo SliderInput::widget([ | |
|  *     'name' => 'amount', | |
|  *     'clientOptions' => [ | |
|  *         'min' => 1, | |
|  *         'max' => 10, | |
|  *     ], | |
|  * ]); | |
|  * ``` | |
|  * | |
|  * @see http://api.jqueryui.com/slider/ | |
|  * @author Alexander Makarov <sam@rmcreative.ru> | |
|  * @since 2.0 | |
|  */ | |
| class SliderInput extends InputWidget | |
| { | |
| 	protected $clientEventMap = [ | |
| 		'change' => 'slidechange', | |
| 		'create' => 'slidecreate', | |
| 		'slide' => 'slide', | |
| 		'start' => 'slidestart', | |
| 		'stop' => 'slidestop', | |
| 	]; | |
| 	/** | |
| 	 * @var array the HTML attributes for the container tag. | |
| 	 */ | |
| 	public $containerOptions = []; | |
|  | |
| 	/** | |
| 	 * @inheritdoc | |
| 	 */ | |
| 	public function init() | |
| 	{ | |
| 		parent::init(); | |
| 		if (!isset($this->containerOptions['id'])) { | |
| 			$this->containerOptions['id'] = $this->options['id'] . '-container'; | |
| 		} | |
| 	} | |
|  | |
| 	/** | |
| 	 * Executes the widget. | |
| 	 */ | |
| 	public function run() | |
| 	{ | |
| 		echo Html::tag('div', '', $this->containerOptions); | |
|  | |
| 		if ($this->hasModel()) { | |
| 			echo Html::activeHiddenInput($this->model, $this->attribute, $this->options); | |
| 			$this->clientOptions['value'] = $this->model{$this->attribute}; | |
| 		} else { | |
| 			echo Html::hiddenInput($this->name, $this->value, $this->options); | |
| 			$this->clientOptions['value'] = $this->value; | |
| 		} | |
|  | |
| 		if (!isset($this->clientEvents['slide'])) { | |
| 			$this->clientEvents['slide'] = 'function(event, ui) { | |
| 				$("#' . $this->options['id'] . '").val(ui.value); | |
| 			}'; | |
| 		} | |
|  | |
| 		$this->registerWidget('slider', SliderAsset::className(), $this->containerOptions['id']); | |
| 	} | |
| }
 | |
| 
 |