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.
		
		
		
		
		
			
		
			
				
					
					
						
							79 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							79 lines
						
					
					
						
							1.7 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 Slider::widget([ | |
|  *     'model' => $model, | |
|  *     'attribute' => 'amount', | |
|  *     'clientOptions' => [ | |
|  *         'min' => 1, | |
|  *         'max' => 10, | |
|  *     ], | |
|  * ]); | |
|  * ``` | |
|  * | |
|  * The following example will use the name property instead: | |
|  * | |
|  * ``` | |
|  * echo Slider::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 $clientEventsMap = [ | |
| 		'change' => 'slidechange', | |
| 		'create' => 'slidecreate', | |
| 		'slide' => 'slide', | |
| 		'start' => 'slidestart', | |
| 		'stop' => 'slidestop', | |
| 	]; | |
|  | |
| 	/** | |
| 	 * Executes the widget. | |
| 	 */ | |
| 	public function run() | |
| 	{ | |
| 		echo Html::tag('div', '', $this->options); | |
|  | |
| 		$inputId = $this->id.'-input'; | |
| 		$inputOptions = $this->options; | |
| 		$inputOptions['id'] = $inputId; | |
| 		if ($this->hasModel()) { | |
| 			echo Html::activeHiddenInput($this->model, $this->attribute, $inputOptions); | |
| 		} else { | |
| 			echo Html::hiddenInput($this->name, $this->value, $inputOptions); | |
| 		} | |
|  | |
| 		if (!isset($this->clientEvents['slide'])) { | |
| 			$this->clientEvents['slide'] = 'function(event, ui) { | |
| 				$("#'.$inputId.'").val(ui.value); | |
| 			}'; | |
| 		} | |
|  | |
| 		$this->registerWidget('slider', SliderAsset::className()); | |
| 		$this->getView()->registerJs('$("#'.$inputId.'").val($("#'.$this->id.'").slider("value"));'); | |
| 	} | |
| } |