*/ class LSformElement_date extends LSformElement { var $fieldTemplate = 'LSformElement_date_field.tpl'; var $_php2js_format = array( "a" => "a", "A" => "A", "b" => "b", "B" => "B", "c" => "c", "d" => "d", "e" => "e", "H" => "H", "I" => "I", "j" => "j", "m" => "m", "M" => "M", "p" => "p", "s" => "s", "S" => "S", "T" => "T", "U" => "U", "w" => "w", "y" => "y", "Y" => "Y", "z" => "z", "Z" => "Z", "%" => "%", ); var $_cache_php2js_format=array(); var $default_style="vista"; /** * Définis la valeur de l'élément date * * @author Benjamin Renard * * @param[in] [required] string or array La futur valeur de l'élément * * @retval boolean Retourne True */ function setValue($data) { if (!is_array($data)) { $data=array($data); } for($i=0;$i getFormat(),$data[$i]); } else { $this -> form -> setElementError($this -> attr_html); } } $this -> values = $data; return true; } /** * Exporte les valeurs de l'élément * * @retval Array Les valeurs de l'élement */ function exportValues(){ $retval=array(); if (is_array($this -> values)) { foreach($this -> values as $val) { $date = strptime($val,$this -> getFormat()); if (is_array($date)) { $retval[] = mktime($date['tm_hour'],$date['tm_min'],$date['tm_sec'],$date['tm_mon']+1,$date['tm_mday'],$date['tm_year']+1900); } } } return $retval; } /** * Retourne le format d'affichage de la date * * @retval string Le format de la date **/ function getFormat() { return $this -> getParam('html_options.format', ($this -> getParam('html_options.time', true)?'%d/%m/%Y, %T':'%d/%m/%Y')); } /** * Return date picker style value * * @retval string The date picker style **/ function getStyle() { $style = $this -> getParam('html_options.style', $this -> default_style, 'string'); if ($style) { if (is_dir(LS_LIB_DIR.'arian-mootools-datepicker/datepicker_'.$style)) { return $style; } LSdebug('LSformElement :: Date => unknown style parameter value '.$style); } return $this -> default_style; } /** * Retourne les infos d'affichage de l'élément * * Cette méthode retourne les informations d'affichage de l'élement * * @retval array */ function getDisplay(){ $return = $this -> getLabelInfos(); // value if (!$this -> isFreeze()) { // Help Infos LSsession :: addHelpInfos( 'LSformElement_date', array( 'now' => _('Now.'), 'today' => _('Today.') ) ); $params = array( 'format' => $this -> php2js_format($this -> getFormat()), 'style' => $this -> getStyle(), 'time' => $this -> getParam('html_options.time', true, 'bool'), 'manual' => $this -> getParam('html_options.manual', true, 'bool'), 'showNowButton' => $this -> getParam('html_options.showNowButton', true, 'bool'), 'showTodayButton' => $this -> getParam('html_options.showTodayButton', true, 'bool'), ); LSsession :: addJSconfigParam($this -> name, $params); $codeLang = str_replace('_','-',preg_replace('/\..*$/','',LSsession :: getLang())); LSsession :: addJSscript('Picker.js',LS_LIB_DIR.'arian-mootools-datepicker/'); LSsession :: addJSscript('Picker.Attach.js',LS_LIB_DIR.'arian-mootools-datepicker/'); LSsession :: addJSscript('Picker.Date.js',LS_LIB_DIR.'arian-mootools-datepicker/'); LSsession :: addJSscript('Locale.'.$codeLang.'.DatePicker.js',LS_LIB_DIR.'arian-mootools-datepicker/'); LSsession :: addCssFile('datepicker_'.$params['style'].'.css',LS_LIB_DIR.'arian-mootools-datepicker/datepicker_'.$params['style'].'/'); LSsession :: addJSscript('LSformElement_date_field.js'); LSsession :: addJSscript('LSformElement_date.js'); } $return['html'] = $this -> fetchTemplate(); return $return; } /** * Convertis un format de date Php (strftime) en JS (jscalendar) * * @retval mixed Format de date jscalendar (string) ou False si la convertion * n'a pas réussi. */ function php2js_format($format) { if (isset($this -> _cache_php2js_format[$format])) { return $this -> _cache_php2js_format[$format]; } $new=""; for($i=0;$i _php2js_format[$format[$i+1]])) { $new.="%".$this -> _php2js_format[$format[$i+1]]; $i++; } else { $this -> _cache_php2js_format[$format]=false; return; } } else { $new.=$format[$i]; } } $this -> _cache_php2js_format[$format]=$new; return $new; } }