]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/HTML/QuickForm/caritas.php
BugFix en Marco
[mecon/meconlib.git] / lib / MECON / HTML / QuickForm / caritas.php
1 <?php
2 /* vim: set expandtab tabstop=4 shiftwidth=4: */
3 // +----------------------------------------------------------------------+
4 // | PHP Version 4                                                        |
5 // +----------------------------------------------------------------------+
6 // | Copyright (c) 1997-2003 The PHP Group                                |
7 // +----------------------------------------------------------------------+
8 // | This source file is subject to version 2.0 of the PHP license,       |
9 // | that is bundled with this package in the file LICENSE, and is        |
10 // | available at through the world-wide-web at                           |
11 // | http://www.php.net/license/2_02.txt.                                 |
12 // | If you did not receive a copy of the PHP license and are unable to   |
13 // | obtain it through the world-wide-web, please send a note to          |
14 // | license@php.net so we can mail you a copy immediately.               |
15 // +----------------------------------------------------------------------+
16 // | Authors: Adam Daniel <adaniel1@eesus.jnj.com>                        |
17 // |          Bertrand Mansion <bmansion@mamasam.com>                     |
18 // +----------------------------------------------------------------------+
19 //
20 // $Id$
21
22 require_once('HTML/QuickForm/element.php');
23 require_once('HTML/QuickForm/radio.php');
24 require_once('MECON/defaults.php');
25 require_once('HTML/Image.php');
26 /**
27  * Class to dynamically create HTML Select elements from a date
28  *
29  * @author       Bertrand Mansion <bmansion@mamasam.com>
30  * @access       public
31  */
32 class HTML_QuickForm_caritas extends HTML_QuickForm_element
33 {   
34     // {{{ properties
35
36     /**
37      * Contains the select objects
38      * @var       array
39      * @access    private
40      */
41     var $radios = array();
42     
43     /**
44      * Default values of the SELECTs
45      * @var       array
46      * @access    private
47      */
48     var $_selected = null;
49     
50     var $_cols = 5;
51
52
53     /**
54      * Frozen flag tells if element is frozen or not
55      * @var       bool
56      * @access    private
57      */
58     var $_flagFrozen = false;
59
60 // +X2C Operation 533
61     /**
62      * Lista archivos devolviendo un array apropiado para un SELECT.
63      *
64      * @param  string $dir Directorio donde estan las imagenes.
65      * @param  string $prepend Prefijo del archivo.
66      * @param  string $append Postfijo del archivo.
67      *
68      * @return array
69      */
70     function listarArchivos($dir = '.', $prepend = '', $append = '') // ~X2C
71     {
72         $lista = array();
73         $d = dir($dir);
74         while (($file = $d->read()) !== false) {
75             if (preg_match("/$prepend(.*)$append/", $file, $m)) {
76                 $lista[] = $file;
77             }
78         }
79         return $lista;
80     }
81     // -X2C
82     // }}}
83     // {{{ constructor
84
85     /**
86      * Class constructor
87      * 
88      * @param     string    $elementName    (optional)Input field name attribute
89      * @param     string    $value          (optional)Input field value
90      * @param     mixed     $attributes     (optional)Either a typical HTML attribute string 
91      *                                      or an associative array. Date format is passed along the attributes.
92      * @access    public
93      * @return    void
94      */
95      
96     function HTML_QuickForm_caritas($elementName=null, $elementLabel=null, $options=array(), $attributes=null)
97     {
98         HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
99         $this->_persistantFreeze = true;
100         $this->_type = 'caritas';
101         $this->_setDefaults($options);
102     } //end constructor
103
104     // }}}
105     // {{{ _setDefaults()
106
107     /**
108      * sets the defaults options
109      * Current options are:
110      * - format
111      * - minYear
112      * - maxYear
113      * - language
114      * 
115      * @param     array    $options    array of options
116      * @access    private
117      * @return    void
118      */
119     function _setDefaults($options)
120     {
121         if (isset($options['cols'])) {
122             $this->setCols($options['cols']);
123         }
124        /* if (isset($options['language'])) {
125             $this->setLanguage($options['language']);
126         }
127         if (isset($options['minYear'])) {
128             $this->setMinYear($options['minYear']);
129         }
130         if (isset($options['maxYear'])) {
131             $this->setMaxYear($options['maxYear']);
132         }
133       */
134     } // end func _setDefaults
135
136     // }}}
137     // {{{ setName()
138
139     /**
140      * Sets the number of cols (columns) 
141      * @param     string    $name   Input field name attribute
142      * @access    public
143      * @return    void
144      */
145     function setCols($cols)
146     {
147         $this->_cols = $cols;
148     } //end func setCols
149
150     /**
151      * Sets the input field name
152      * @param     string    $name   Input field name attribute
153      * @access    public
154      * @return    void
155      */
156     function setName($name)
157     {
158         $this->name = $name;
159     } //end func setName
160
161     // }}}
162     // {{{ getName()
163
164     /**
165      * Sets the element value
166      * @access    public
167      * @return    string
168      */
169     function setValue($value)
170     {
171         $this->_selected = $value;
172     } //end func getName
173
174     /**
175      * Sets the element value
176      * @access    public
177      * @return    string
178      */
179     function setSelected($value)
180     {
181         $this->_selected = $value;
182     } //end func getName
183
184     /**
185      * Returns the element value
186      * @access    public
187      * @return    string
188      */
189     function getValue()
190     {
191         return $this->_selected;
192     } //end func getName
193
194     /**
195      * Returns the element value
196      * @access    public
197      * @return    string
198      */
199     function getSelected()
200     {
201         return $this->_selected;
202     } //end func getName
203
204     /**
205      * Returns the element name
206      * @access    public
207      * @return    string
208      */
209     function getName()
210     {
211         return $this->name;
212     } //end func getName
213
214
215     // {{{ _createSelects()
216
217     /**
218      * Creates the select objects
219      * @access    public
220      * @return    void
221      */
222     function _createRadios()
223     {
224         $this->caritas= array();
225         $elementName = $this->name;
226         $dir = MECON_DIR_FS_IMG.'/caritas';
227         $cant=5;
228         $i=1;
229         foreach ($this->listarArchivos($dir,'','.gif') as $nombre)
230         {
231             $this->radios[$nombre] = &new HTML_QuickForm_radio($elementName, '', '', $nombre, $this->getAttributes());
232         }
233     } // end func _createSelects
234
235     // }}}
236     // {{{ _createNumericOptionList()
237
238     // {{{ toHtml()
239
240     /**
241      * Returns the SELECT in HTML
242      * @access    public
243      * @return    string
244      * @throws    
245  */    
246     function toHtml()
247     {
248         $this->_createRadios();
249         $strHtml = '';
250         $i = 1;
251         foreach ($this->radios as $nombre => $element) {
252             if (@$this->_selected == $nombre) {
253                 $element->setChecked(true);
254             }
255             if ($this->_flagFrozen) {
256                 if (is_string($element)) {
257                     $strHtml .= str_replace(' ', '&nbsp;', $element);
258                 } else {
259                     $strHtml .= $element->getFrozenHtml();
260                 }
261             } else {
262                 if (is_string($element)) {
263                     $strHtml .= str_replace(' ', '&nbsp;', $element);
264                 } else {
265                     $strHtml .= $element->toHtml();
266                 }
267             }
268             $imagen =& new HTML_Image(MECON_DIR_IMG."/caritas/$nombre");
269             $strHtml .= '&nbsp;' . $imagen->toHtml() . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
270             if (!($i++ % $this->_cols))
271                 $strHtml .=  '<br>';
272         }
273         return $strHtml;
274     } // end func toHtml
275
276     // }}}
277     // {{{ onQuickFormEvent()
278
279     /**
280      * Called by HTML_QuickForm whenever form event is made on this element
281      *
282      * @param     string    $event  Name of event
283      * @param     mixed     $arg    event arguments
284      * @param     object    $caller calling object
285      * @since     1.0
286      * @access    public
287      * @return    void
288      * @throws    
289      */
290     function onQuickFormEvent($event, $arg, &$caller)
291     {
292         switch ($event) {
293             case 'updateValue':
294                 // constant values override both default and submitted ones
295                 // default values are overriden by submitted
296                 $value = $this->_findValue($caller->_constantValues);
297                 if (null === $value) {
298                     $value = $this->_findValue($caller->_submitValues);
299                     if (null === $value) {
300                         $value = $this->_findValue($caller->_defaultValues);
301                     }
302                 }
303                 if (null !== $value) {
304                     $this->setSelected($value);
305                 }
306                 break;
307             case 'setGroupValue':
308                 $this->setSelected($arg);
309                 break;
310             default:
311                 parent::onQuickFormEvent($event, $arg, $caller);
312         }
313         return true;
314     } // end func onQuickFormEvent
315
316     // }}}
317 } // end class HTML_QuickForm_date
318 ?>