5 public $params = array(
9 'emptyFieldLabel'=>
'Not found',
22 'label'=>
UserModule::t(
'jQueryUI autocomplete',array(),__CLASS__),
23 'fieldType'=>array(
'INTEGER'),
24 'params'=>$this->params,
25 'paramsLabels' => array(
27 'optionName'=>
UserModule::t(
'Lable field name',array(),__CLASS__),
28 'emptyFieldLabel'=>
UserModule::t(
'Empty item name',array(),__CLASS__),
29 'emptyFieldValue'=>
UserModule::t(
'Empty item value',array(),__CLASS__),
30 'relationName'=>
UserModule::t(
'Profile model relation name',array(),__CLASS__),
31 'minLength'=>
UserModule::t(
'minimal start research length',array(),__CLASS__),
52 $relation = $model->relations();
53 if ($this->params[
'relationName']&&isset($relation[$this->params[
'relationName']])) {
54 $m = $model->__get($this->params[
'relationName']);
56 $m = CActiveRecord::model($this->params[
'modelName'])->findByPk($model->getAttribute($field->varname));
60 return (($this->params[
'optionName'])?$m->getAttribute($this->params[
'optionName']):$m->id);
62 return $this->params[
'emptyFieldLabel'];
73 if (isset($this->params[
'emptyFieldValue'])) $list[]=array(
'id'=>$this->params[
'emptyFieldValue'],
'label'=>$this->params[
'emptyFieldLabel']);
74 $models = CActiveRecord::model($this->params[
'modelName'])->findAll();
75 foreach ($models as $m)
76 $list[] = (($this->params[
'optionName'])?array(
'label'=>$m->getAttribute($this->params[
'optionName']),
'id'=>$m->id):array(
'label'=>$m->id,
'id'=>$m->id));
78 if (!isset($htmlOptions[
'id'])) $htmlOptions[
'id'] = $field->varname;
79 $id = $htmlOptions[
'id'];
81 $relation = $model->relations();
82 if ($this->params[
'relationName']&&isset($relation[$this->params[
'relationName']])) {
83 $m = $model->__get($this->params[
'relationName']);
85 $m = CActiveRecord::model($this->params[
'modelName'])->findByPk($model->getAttribute($field->varname));
89 $default_value = (($this->params[
'optionName'])?$m->getAttribute($this->params[
'optionName']):$m->id);
93 $htmlOptions[
'value'] = $default_value;
94 $options[
'source'] = $list;
95 $options[
'minLength'] = $this->params[
'minLength'];
96 $options[
'showAnim'] =
'fold';
97 $options[
'select'] =
"js:function(event, ui) { $('#".get_class($model).
"_".$field->varname.
"').val(ui.item.id);}";
98 $options=CJavaScript::encode($options);
102 $cs = Yii::app()->getClientScript();
103 $baseUrl = $cs->getCoreScriptUrl();
104 $cs->registerCssFile($baseUrl.
'/jui/css/'.$this->params[
'ui-theme'].
'/jquery-ui.css',
'', null,
false);
105 $cs->registerScriptFile($baseUrl.
'/jui/js/jquery-ui.min.js');
106 $js =
"jQuery('#{$id}').autocomplete({$options});";
107 $cs->registerScript(
'Autocomplete'.
'#'.$id, $js);
109 return CHtml::activeTextField($model,$field->varname,$htmlOptions).CHtml::activehiddenField($model,$field->varname);