diff options
Diffstat (limited to 'protected/extensions/CJuiDateTimePicker/CJuiDateTimePicker.php')
| -rw-r--r-- | protected/extensions/CJuiDateTimePicker/CJuiDateTimePicker.php | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/protected/extensions/CJuiDateTimePicker/CJuiDateTimePicker.php b/protected/extensions/CJuiDateTimePicker/CJuiDateTimePicker.php new file mode 100644 index 0000000..8d5bdf4 --- /dev/null +++ b/protected/extensions/CJuiDateTimePicker/CJuiDateTimePicker.php @@ -0,0 +1,66 @@ +<?php +/** + * CJuiDateTimePicker class file. + * + * @author Anatoly Ivanchin <van4in@gmail.com> + * @author Tristan Zur + */ + +Yii::import('zii.widgets.jui.CJuiDatePicker'); +class CJuiDateTimePicker extends CJuiDatePicker +{ + const ASSETS_NAME='/jquery-ui-timepicker-addon'; + + public $mode='datetime'; + public $phpDateFormat = 'dd.MM.yyyy HH:mm'; + + public function init() + { + if(!in_array($this->mode, array('date','time','datetime'))) + throw new CException('unknow mode "'.$this->mode.'"'); + if(!isset($this->language)) + $this->language=Yii::app()->getLanguage(); + return parent::init(); + } + + public function run() + { + 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->hasModel()) { + // Add support for model attribute and date time formatting + $this->value = CHtml::resolveValue($this->model, $this->attribute); + $this->value = Format::displayDateTime($this->value); + } + echo CHtml::textField($name,$this->value,$this->htmlOptions); + + + $options=CJavaScript::encode($this->options); + + $js = "jQuery('#{$id}').{$this->mode}picker($options);"; + + if (isset($this->language)){ + $this->registerScriptFile($this->i18nScriptFile); + $js = "jQuery('#{$id}').{$this->mode}picker(jQuery.extend({showMonthAfterYear:false}, jQuery.datepicker.regional['{$this->language}'], {$options}));"; + } + + $cs = Yii::app()->getClientScript(); + + $assets = Yii::app()->getAssetManager()->publish(dirname(__FILE__).DIRECTORY_SEPARATOR.'assets'); + $cs->registerCssFile($assets.self::ASSETS_NAME.'.css'); + $cs->registerScriptFile($assets.self::ASSETS_NAME.'.js',CClientScript::POS_END); + + $cs->registerScript(__CLASS__, $this->defaultOptions?'jQuery.{$this->mode}picker.setDefaults('.CJavaScript::encode($this->defaultOptions).');':''); + $cs->registerScript(__CLASS__.'#'.$id, $js); + + } +}
\ No newline at end of file |
