b631f2f7dea160e030f797c8641c34fdf75e6f01
[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    *  * start_monday: Whether the week starts on monday (true by default)
25    *  * default_view: Determines the default view of the calendar (month by default)
26    *
27    * @param array $options     An array of options
28    * @param array $attributes  An array of default HTML attributes
29    *
30    * @see sfWidgetForm
31    */
32   protected function configure($options = array(), $attributes = array())
33   {
34     $this->addOption('start_monday', true);
35     $this->addOption('default_view', 'month');
36   }
37
38   /**
39    * @param  string $name        The element name
40    * @param  string $value       The date displayed in this widget
41    * @param  array  $attributes  An array of HTML attributes to be merged with the default HTML attributes
42    * @param  array  $errors      An array of errors for the field
43    *
44    * @return string An HTML tag string
45    *
46    * @see sfWidgetForm
47    */
48   public function render($name, $value = null, $attributes = array(), $errors = array())
49   {
50     $input = new sfWidgetFormInput(array(), array(
51       'class'        => 'eeVlaDatePicker',
52       'autocomplete' => 'off'
53     ));
54
55     $html = $input->render($name, $value);
56
57     $id = $input->generateId($name);
58     $monday_option = $this->getOption('start_monday');
59     $default_view  = $this->getOption('default_view');
60     $html .= <<<EOHTML
61 <script type="text/javascript">
62 new vlaDatePicker('$id', {prefillDate: false, startMonday: $monday_option, defaultView: '$default_view'});
63 </script>
64 EOHTML;
65
66     return $html;
67   }
68
69   /*
70    *
71    * Gets the stylesheet paths associated with the widget.
72    *
73    * @return array An array of stylesheet paths
74    */
75   public function getStylesheets()
76   {
77       return array('/eeVlaDatePickerPlugin/css/vlaCal-v2.1.css' => 'screen');
78   }
79
80   /**
81    * Gets the JavaScript paths associated with the widget.
82    *
83    * @return array An array of JavaScript paths
84    */
85   public function getJavaScripts()
86   {
87     $js = array(
88       '/eeVlaDatePickerPlugin/js/vlaCal-v2.1-compressed.js',
89       '/eeVlaDatePickerPlugin/js/vlaCal-v2.1-clientside-v1.0.1-compressed.js'
90     );
91
92     $culture = sfContext::getInstance()->getUser()->getCulture();
93     if(isset($culture)) {
94       $i18n_js = 'eeVlaDatePickerPlugin/js/i18n/' . $culture . '.js';
95       if(file_exists($i18n_js)) {
96         $js[] = '/' . $i18n_js;
97       }
98     }
99
100     return $js;
101   }
102
103 }