Gentics Portal.Node PHP API
 All Classes Namespaces Functions Variables Pages
UWjuiAutoComplete.php
1 <?php
2 
4 
5  public $params = array(
6  'ui-theme'=>'base',
7  'modelName'=>'',
8  'optionName'=>'',
9  'emptyFieldLabel'=>'Not found',
10  'emptyFieldValue'=>0,
11  'relationName'=>'',
12  'minLength'=>'',
13  );
14 
15  /**
16  * Widget initialization
17  * @return array
18  */
19  public function init() {
20  return array(
21  'name'=>__CLASS__,
22  'label'=>UserModule::t('jQueryUI autocomplete',array(),__CLASS__),
23  'fieldType'=>array('INTEGER'),
24  'params'=>$this->params,
25  'paramsLabels' => array(
26  'modelName'=>UserModule::t('Model Name',array(),__CLASS__),
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__),
32  ),
33  );
34  }
35 
36  /**
37  * @param $value
38  * @param $model
39  * @param $field_varname
40  * @return string
41  */
42  public function setAttributes($value,$model,$field_varname) {
43  return $value;
44  }
45 
46  /**
47  * @param $model - profile model
48  * @param $field - profile fields model item
49  * @return string
50  */
51  public function viewAttribute($model,$field) {
52  $relation = $model->relations();
53  if ($this->params['relationName']&&isset($relation[$this->params['relationName']])) {
54  $m = $model->__get($this->params['relationName']);
55  } else {
56  $m = CActiveRecord::model($this->params['modelName'])->findByPk($model->getAttribute($field->varname));
57  }
58 
59  if ($m)
60  return (($this->params['optionName'])?$m->getAttribute($this->params['optionName']):$m->id);
61  else
62  return $this->params['emptyFieldLabel'];
63  }
64 
65  /**
66  * @param $model - profile model
67  * @param $field - profile fields model item
68  * @param $params - htmlOptions
69  * @return string
70  */
71  public function editAttribute($model,$field,$htmlOptions=array()) {
72  $list = array();
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));
77 
78  if (!isset($htmlOptions['id'])) $htmlOptions['id'] = $field->varname;
79  $id = $htmlOptions['id'];
80 
81  $relation = $model->relations();
82  if ($this->params['relationName']&&isset($relation[$this->params['relationName']])) {
83  $m = $model->__get($this->params['relationName']);
84  } else {
85  $m = CActiveRecord::model($this->params['modelName'])->findByPk($model->getAttribute($field->varname));
86  }
87 
88  if ($m)
89  $default_value = (($this->params['optionName'])?$m->getAttribute($this->params['optionName']):$m->id);
90  else
91  $default_value = '';
92 
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);
99  //$basePath=Yii::getPathOfAlias('application.views.asset');
100 // $basePath=Yii::getPathOfAlias('application.modules.user.views.asset');
101 // $baseUrl=Yii::app()->getAssetManager()->publish($basePath);
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);
108 
109  return CHtml::activeTextField($model,$field->varname,$htmlOptions).CHtml::activehiddenField($model,$field->varname);
110  }
111 }