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