datepicker.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. // $Id: datepicker.php 20456 2009-05-10 17:27:44Z ivantcholakov $
  3. /*
  4. ==============================================================================
  5. Dokeos - elearning and course management software
  6. Copyright (c) 2004-2005 Dokeos S.A.
  7. Copyright (c) Bart Mollet, Hogeschool Gent
  8. For a full list of contributors, see "credits.txt".
  9. The full license can be read in "license.txt".
  10. This program is free software; you can redistribute it and/or
  11. modify it under the terms of the GNU General Public License
  12. as published by the Free Software Foundation; either version 2
  13. of the License, or (at your option) any later version.
  14. See the GNU General Public License for more details.
  15. Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium
  16. Mail: info@dokeos.com
  17. ==============================================================================
  18. */
  19. require_once ('HTML/QuickForm/date.php');
  20. /**
  21. * Form element to select a date and hour (with popup datepicker)
  22. */
  23. class HTML_QuickForm_datepicker extends HTML_QuickForm_date
  24. {
  25. /**
  26. * Constructor
  27. */
  28. function HTML_QuickForm_datepicker($elementName = null, $elementLabel = null, $attributes = null)
  29. {
  30. $js_form_name = $attributes['form_name'];
  31. unset($attributes['form_name']);
  32. HTML_QuickForm_element :: HTML_QuickForm_element($elementName, $elementLabel, $attributes);
  33. $this->_persistantFreeze = true;
  34. $this->_appendName = true;
  35. $this->_type = 'datepicker';
  36. $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>';
  37. $special_chars = array ('D', 'l', 'd', 'M', 'F', 'm', 'y', 'H', 'a', 'A', 's', 'i', 'h', 'g', ' ');
  38. $hour_minute_devider = get_lang("HourMinuteDivider");
  39. foreach ($special_chars as $index => $char)
  40. {
  41. $popup_link = str_replace($char, "\\".$char, $popup_link);
  42. $hour_minute_devider = str_replace($char, "\\".$char, $hour_minute_devider);
  43. }
  44. $lang_code = api_get_language_isocode();
  45. // If translation not available in PEAR::HTML_QuickForm_date, add the Chamilo-translation
  46. if(! array_key_exists($lang_code,$this->_locale))
  47. {
  48. $this->_locale[$lang_code]['months_long'] = api_get_months_long();
  49. }
  50. $this->_options['format'] = 'dFY '.$popup_link.' H '.$hour_minute_devider.' i';
  51. $this->_options['minYear'] = date('Y')-7;
  52. $this->_options['maxYear'] = date('Y')+15;
  53. $this->_options['language'] = $lang_code;
  54. //$this->_options['addEmptyOption'] = true;
  55. //$this->_options['emptyOptionValue'] = 0;
  56. //$this->_options['emptyOptionText'] = ' -- ';
  57. }
  58. /**
  59. * HTML code to display this datepicker
  60. */
  61. function toHtml()
  62. {
  63. $js = $this->getElementJS();
  64. return $js.parent :: toHtml();
  65. }
  66. /**
  67. * Get the necessary javascript for this datepicker
  68. */
  69. function getElementJS()
  70. {
  71. $js = '';
  72. if(!defined('DATEPICKER_JAVASCRIPT_INCLUDED'))
  73. {
  74. define('DATEPICKER_JAVASCRIPT_INCLUDED',1);
  75. $js = "\n";
  76. $js .= '<script src="';
  77. $js .= api_get_path(WEB_CODE_PATH).'inc/lib/formvalidator/Element/';
  78. $js .= 'tbl_change.js.php" type="text/javascript"></script>';
  79. $js .= "\n";
  80. }
  81. return $js;
  82. }
  83. /**
  84. * Export the date value in MySQL format
  85. * @return string YYYY-MM-DD HH:II:SS
  86. */
  87. function exportValue()
  88. {
  89. $values = parent::getValue();
  90. $y = $values['Y'][0];
  91. $m = $values['F'][0];
  92. $d = $values['d'][0];
  93. $h = $values['H'][0];
  94. $i = $values['i'][0];
  95. $m = $m < 10 ? '0'.$m : $m;
  96. $d = $d < 10 ? '0'.$d : $d;
  97. $h = $h < 10 ? '0'.$h : $h;
  98. $i = $i < 10 ? '0'.$i : $i;
  99. $datetime = $y.'-'.$m.'-'.$d.' '.$h.':'.$i.':00';
  100. $result[$this->getName()]= $datetime;
  101. return $result;
  102. }
  103. /**
  104. * Sets an option to a value
  105. */
  106. function setLocalOption($name,$value)
  107. {
  108. $this->_options[$name] = $value;
  109. }
  110. }
  111. ?>