datepicker.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. require_once ('HTML/QuickForm/date.php');
  4. /**
  5. * Form element to select a date and hour (with popup datepicker)
  6. */
  7. class HTML_QuickForm_datepicker extends HTML_QuickForm_date
  8. {
  9. /**
  10. * Constructor
  11. */
  12. function HTML_QuickForm_datepicker($elementName = null, $elementLabel = null, $attributes = null, $optionIncrement = null)
  13. {
  14. $js_form_name = $attributes['form_name'];
  15. unset($attributes['form_name']);
  16. HTML_QuickForm_element :: HTML_QuickForm_element($elementName, $elementLabel, $attributes);
  17. $this->_persistantFreeze = true;
  18. $this->_appendName = true;
  19. $this->_type = 'datepicker';
  20. $popup_link = '<a href="javascript:openCalendar(\''.$js_form_name.'\',\''.$elementName.'\')"><img src="'.api_get_path(WEB_IMG_PATH).'calendar_select.gif" style="vertical-align:middle;" alt="Select Date" /></a>';
  21. $special_chars = array ('D', 'l', 'd', 'M', 'F', 'm', 'y', 'H', 'a', 'A', 's', 'i', 'h', 'g', ' ');
  22. $hour_minute_devider = get_lang("HourMinuteDivider");
  23. foreach ($special_chars as $index => $char)
  24. {
  25. $popup_link = str_replace($char, "\\".$char, $popup_link);
  26. $hour_minute_devider = str_replace($char, "\\".$char, $hour_minute_devider);
  27. }
  28. $lang_code = api_get_language_isocode();
  29. // If translation not available in PEAR::HTML_QuickForm_date, add the Chamilo-translation
  30. if(! array_key_exists($lang_code,$this->_locale))
  31. {
  32. $this->_locale[$lang_code]['months_long'] = api_get_months_long();
  33. }
  34. $this->_options['format'] = 'dFY '.$popup_link.' H '.$hour_minute_devider.' i';
  35. $this->_options['minYear'] = date('Y')-5;
  36. $this->_options['maxYear'] = date('Y')+10;
  37. $this->_options['language'] = $lang_code;
  38. //$this->_options['addEmptyOption'] = true;
  39. //$this->_options['emptyOptionValue'] = 0;
  40. //$this->_options['emptyOptionText'] = ' -- ';
  41. if (isset($optionIncrement)) {
  42. $this->_options['optionIncrement']['i'] = intval($optionIncrement);
  43. }
  44. }
  45. /**
  46. * HTML code to display this datepicker
  47. */
  48. function toHtml()
  49. {
  50. $js = $this->getElementJS();
  51. return $js.parent :: toHtml();
  52. }
  53. /**
  54. * Get the necessary javascript for this datepicker
  55. */
  56. function getElementJS()
  57. {
  58. $js = '';
  59. if(!defined('DATEPICKER_JAVASCRIPT_INCLUDED'))
  60. {
  61. define('DATEPICKER_JAVASCRIPT_INCLUDED',1);
  62. $js = "\n";
  63. $js .= '<script src="';
  64. $js .= api_get_path(WEB_CODE_PATH).'inc/lib/formvalidator/Element/';
  65. $js .= 'tbl_change.js.php" type="text/javascript"></script>';
  66. $js .= "\n";
  67. }
  68. return $js;
  69. }
  70. /**
  71. * Export the date value in MySQL format
  72. * @return string YYYY-MM-DD HH:II:SS
  73. */
  74. function exportValue(&$submitValues, $assoc = false)
  75. {
  76. $values = parent::getValue();
  77. $y = $values['Y'][0];
  78. $m = $values['F'][0];
  79. $d = $values['d'][0];
  80. $h = $values['H'][0];
  81. $i = $values['i'][0];
  82. $m = $m < 10 ? '0'.$m : $m;
  83. $d = $d < 10 ? '0'.$d : $d;
  84. $h = $h < 10 ? '0'.$h : $h;
  85. $i = $i < 10 ? '0'.$i : $i;
  86. $datetime = $y.'-'.$m.'-'.$d.' '.$h.':'.$i.':00';
  87. $result[$this->getName()]= $datetime;
  88. return $result;
  89. }
  90. /**
  91. * Sets an option to a value
  92. */
  93. function setLocalOption($name,$value)
  94. {
  95. $this->_options[$name] = $value;
  96. }
  97. }
  98. ?>