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