[svn r14341] Add a date-picker limited to the date (not hour+minute+seconds)

skala
Yannick Warnier 17 years ago
parent ef934e69f9
commit 00d77b68ef
  1. 109
      main/inc/lib/formvalidator/Element/datepickerdate.php
  2. 13
      main/inc/lib/formvalidator/FormValidator.class.php

@ -0,0 +1,109 @@
<?php
// $Id: datepicker.php 9246 2006-09-25 13:24:53Z bmol $
/*
==============================================================================
Dokeos - elearning and course management software
Copyright (c) 2004-2005 Dokeos S.A.
Copyright (c) Bart Mollet, Hogeschool Gent
For a full list of contributors, see "credits.txt".
The full license can be read in "license.txt".
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
See the GNU General Public License for more details.
Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium
Mail: info@dokeos.com
==============================================================================
*/
require_once ('HTML/QuickForm/date.php');
/**
* Form element to select a date and hour (with popup datepicker)
*/
class HTML_QuickForm_datepickerdate extends HTML_QuickForm_date
{
/**
* Constructor
*/
function HTML_QuickForm_datepickerdate($elementName = null, $elementLabel = null, $attributes = null)
{
global $language_interface;
$js_form_name = $attributes['form_name'];
unset($attributes['form_name']);
HTML_QuickForm_element :: HTML_QuickForm_element($elementName, $elementLabel, $attributes);
$this->_persistantFreeze = true;
$this->_appendName = true;
$this->_type = 'datepicker';
$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>';
$special_chars = array ('D', 'l', 'd', 'M', 'F', 'm', 'y', 'H', 'a', 'A', 's', 'i', 'h', 'g', ' ');
foreach ($special_chars as $index => $char)
{
$popup_link = str_replace($char, "\\".$char, $popup_link);
}
@ $editor_lang = Database :: get_language_isocode($language_interface);
if (empty ($editor_lang) )
{
//if there was no valid iso-code, use the english one
$editor_lang = 'en';
}
// If translation not available in PEAR::HTML_QuickForm_date, add the Dokeos-translation
if(! array_key_exists($editor_lang,$this->_locale))
{
$this->_locale[$editor_lang]['months_long'] = array (get_lang("JanuaryLong"), get_lang("FebruaryLong"), get_lang("MarchLong"), get_lang("AprilLong"), get_lang("MayLong"), get_lang("JuneLong"), get_lang("JulyLong"), get_lang("AugustLong"), get_lang("SeptemberLong"), get_lang("OctoberLong"), get_lang("NovemberLong"), get_lang("DecemberLong"));
}
$this->_options['format'] = 'dFY '.$popup_link;
$this->_options['minYear'] = date('Y')-1;
$this->_options['maxYear'] = date('Y')+5;
$this->_options['language'] = $editor_lang;
//$this->_options['addEmptyOption'] = true;
//$this->_options['emptyOptionValue'] = 0;
//$this->_options['emptyOptionText'] = ' -- ';
}
/**
* HTML code to display this datepicker
*/
function toHtml()
{
$js = $this->getElementJS();
return $js.parent :: toHtml();
}
/**
* Get the necessary javascript for this datepicker
*/
function getElementJS()
{
$js = '';
if(!defined('DATEPICKER_JAVASCRIPT_INCLUDED'))
{
define('DATEPICKER_JAVASCRIPT_INCLUDED',1);
$js = "\n";
$js .= '<script src="';
$js .= api_get_path(WEB_CODE_PATH).'inc/lib/formvalidator/Element/';
$js .= 'tbl_change.js.php" type="text/javascript"></script>';
$js .= "\n";
}
return $js;
}
/**
* Export the date value in MySQL format
* @return string YYYY-MM-DD HH:II:SS
*/
function exportValue()
{
$values = parent::getValue();
$y = $values['Y'][0];
$m = $values['F'][0];
$d = $values['d'][0];
$m = $m < 10 ? '0'.$m : $m;
$d = $d < 10 ? '0'.$d : $d;
$datetime = $y.'-'.$m.'-'.$d;
$result[$this->getName()]= $datetime;
return $result;
}
}
?>

@ -55,6 +55,7 @@ class FormValidator extends HTML_QuickForm
$dir = dirname(__FILE__).'/';
$this->registerElementType('html_editor', $dir.'Element/html_editor.php', 'HTML_QuickForm_html_editor');
$this->registerElementType('datepicker', $dir.'Element/datepicker.php', 'HTML_QuickForm_datepicker');
$this->registerElementType('datepickerdate', $dir.'Element/datepickerdate.php', 'HTML_QuickForm_datepickerdate');
$this->registerElementType('receivers', $dir.'Element/receivers.php', 'HTML_QuickForm_receivers');
$this->registerElementType('select_language', $dir.'Element/select_language.php', 'HTML_QuickForm_Select_Language');
$this->registerElementType('select_theme', $dir.'Element/select_theme.php', 'HTML_QuickForm_Select_Theme');
@ -176,6 +177,18 @@ EOT;
$this->addRule($name, get_lang('InvalidDate'), 'date');
}
/**
* Add a datepickerdate element to the form
* A rule is added to check if the date is a valid one
* @param string $label The label for the form-element
* @param string $name The element name
*/
function add_datepickerdate($name,$label)
{
$this->addElement('datepickerdate', $name, $label, array ('form_name' => $this->getAttribute('name')));
$this->addRule($name, get_lang('InvalidDate'), 'date');
}
/**
* Add a timewindow element to the form.
* 2 datepicker elements are added and a rule to check if the first date is

Loading…
Cancel
Save