198e837c7c49134d0c89333fed95d4ad0466ff81
[eevladatepicker.git] / lib / widget / eeWidgetFormDateVlaDatePicker.class.php
1 <?php
2
3 /*
4  * This file is part of the Vista-Like Date Picker plugin for Symfony.
5  * (c) Christophe Benz <cbenz@easter-eggs.com>
6  * 
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 /**
12  * eeWidgetFormDateVlaDatePicker represents a rich Javascript date widget 
13  *
14  * @author     Christophe Benz <cbenz@easter-eggs.com>
15  * @version    SVN: $Id: eeWidgetFormDateVlaDatePicker.class.php $
16  */
17 class eeWidgetFormDateVlaDatePicker extends sfWidgetForm
18 {
19   /**
20    * Configures the current widget.
21    *
22    * Available options:
23    *
24    *  * format:       The date format string (%month%/%day%/%year% by default)
25    *  * can_be_empty: Whether the widget accept an empty value (true by default)
26    *  * start_monday: Whether the week starts on monday (true by default)
27    *
28    * @param array $options     An array of options
29    * @param array $attributes  An array of default HTML attributes
30    *
31    * @see sfWidgetForm
32    */
33   protected function configure($options = array(), $attributes = array())
34   {
35     $this->addOption('format', '%month%/%day%/%year%');
36     $this->addOption('can_be_empty', true);
37     $this->addOption('start_monday', true);
38   }
39
40   /**
41    * @param  string $name        The element name
42    * @param  string $value       The date displayed in this widget
43    * @param  array  $attributes  An array of HTML attributes to be merged with the default HTML attributes
44    * @param  array  $errors      An array of errors for the field
45    *
46    * @return string An HTML tag string
47    *
48    * @see sfWidgetForm
49    */
50   public function render($name, $value = null, $attributes = array(), $errors = array())
51   {
52     $input = new sfWidgetFormInput(array(), array('autocomplete' => 'off'));
53
54     $html = $input->render($name, $value);
55
56     $id = $input->generateId($name);
57     $monday_option = $this->getOption('start_monday');
58     $html .= <<<EOHTML
59 <script type="text/javascript">
60 new vlaDatePicker('$id', {prefillDate: false, startMonday: $monday_option});
61 </script>
62 EOHTML;
63
64     return $html;
65   }
66
67   /*
68    *
69    * Gets the stylesheet paths associated with the widget.
70    *
71    * @return array An array of stylesheet paths
72    */
73   public function getStylesheets()
74   {
75       return array('/eeVlaDatePickerPlugin/css/vlaCal-v2.1.css' => 'screen');
76   }
77
78   /**
79    * Gets the JavaScript paths associated with the widget.
80    *
81    * @return array An array of JavaScript paths
82    */
83   public function getJavaScripts()
84   {
85     $js = array(
86       '/eeVlaDatePickerPlugin/js/vlaCal-v2.1-compressed.js',
87       '/eeVlaDatePickerPlugin/js/vlaCal-v2.1-clientside-v1.0.1-compressed.js'
88     );
89
90     $culture = sfContext::getInstance()->getUser()->getCulture();
91     if(isset($culture)) {
92       $i18n_js = 'eeVlaDatePickerPlugin/js/i18n/' . $culture . '.js';
93       if(file_exists($i18n_js)) {
94         $js[] = '/' . $i18n_js;
95       }
96     }
97
98     return $js;
99   }
100
101 }