Gentics Portal.Node PHP API
 All Classes Namespaces Functions Variables Pages
UWjuidate.php
1 <?php
2 
3 class UWjuidate
4 {
5 
6  /**
7  * @var array
8  */
9  public $params = array(
10  'ui-theme' => 'base',
11 // 'language' => 'en',
12  'defaultDate' => '',
13  'maxDate' => '',
14  'minDate' => '',
15  'yearRange' => '',
16  'changeMonth' => true,
17  'changeYear' => true
18  );
19 
20  /**
21  * Initialization
22  * @return array
23  */
24  public function init()
25  {
26  return array(
27  'name' => __CLASS__,
28  'label' => UserModule::t('jQueryUI datepicker'),
29  'fieldType' => array('DATE', 'VARCHAR'),
30  'params' => $this->params,
31  'paramsLabels' => array(
32  'dateFormat' => UserModule::t('Date format'),
33  ),
34  );
35  }
36 
37  /**
38  * @param $value
39  * @param $model
40  * @param $field_varname
41  * @return string
42  */
43  public function setAttributes($value, $model, $field_varname)
44  {
45  if ($value == '0000-00-00') $value = '';
46  return $value;
47  }
48 
49  /**
50  * @param $model - profile model
51  * @param $field - profile fields model item
52  * @return string
53  */
54  public function viewAttribute($model, $field)
55  {
56  return $model->getAttribute($field->varname);
57  }
58 
59  /**
60  * @param $model - profile model
61  * @param $field - profile fields model item
62  * @param $params - htmlOptions
63  * @return string
64  */
65  public function editAttribute($model, $field, $htmlOptions = array())
66  {
67  if (!isset($htmlOptions['size'])) $htmlOptions['size'] = 60;
68  if (!isset($htmlOptions['maxlength'])) $htmlOptions['maxlength'] = (($field->field_size) ? $field->field_size : 10);
69  if (!isset($htmlOptions['id'])) $htmlOptions['id'] = get_class($model) . '_' . $field->varname;
70 
71  $id = $htmlOptions['id'];
72  $options = $this->params;
73  $options['dateFormat'] = LocaleHelper::yiiFormatToJq(Yii::app()->locale->getDateFormat());
74  $options['returnDateFormat'] = LocaleHelper::yiiFormatToJq('yyyy-mm-dd');
75  $options['language'] = LocaleHelper::yiiLocaleToJq(Yii::app()->language);
76  if (!empty($model->{$field->varname})) {
77  $timestamp = strtotime($model->{$field->varname});
78  if ($timestamp >= 0 && $timestamp !== false) {
79  $options['date'] = $timestamp;
80  }
81  }
82  if ($widgetParams = CJSON::decode($field->widgetparams)) {
83  $options = array_merge($options, $widgetParams);
84  }
85  $options = CJavaScript::encode($options);
86 
87  $cs = Yii::app()->getClientScript();
88  $baseUrl = $cs->getCoreScriptUrl();
89  $cs->registerCssFile($baseUrl . '/jui/css/' . $this->params['ui-theme'] . '/jquery-ui.css', '', null, false);
90  $cs->registerScriptFile($baseUrl . '/jui/js/jquery-ui.min.js');
91 
92  $cs->registerScriptFile(Yii::app()->getModule('user')->getAssetsUrl() . '/js/jquery.datepickerL10.js');
93 
94  $language = LocaleHelper::yiiLocaleToJq(Yii::app()->language);
95  if ($language != 'en') {
96  $js = "jQuery('#{$id}').datepickerL10(jQuery.extend({showMonthAfterYear:false}, jQuery.datepicker.regional['{$language}'], $options));";
97  $cs->registerScriptFile($baseUrl . '/jui/js/jquery-ui-i18n.min.js');
98  } else $js = "jQuery('#{$id}').datepickerL10($options);";
99 
100  $cs->registerScript('ProfileFieldController' . '#' . $id, $js);
101 
102  return CHtml::activeTextField($model, $field->varname, $htmlOptions);
103  }
104 
105 }