]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/HTML/QuickForm/caritas.php
aa8bcbb7b9ca50c00c8353fae53fed74873edff8
[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 $_numRows = 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['format'])) {
122             $this->setFormat($options['format']);
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 input field name
141      * @param     string    $name   Input field name attribute
142      * @access    public
143      * @return    void
144      */
145     function setName($name)
146     {
147         $this->name = $name;
148     } //end func setName
149
150     // }}}
151     // {{{ getName()
152
153     /**
154      * Sets the element value
155      * @access    public
156      * @return    string
157      */
158     function setValue($value)
159     {
160         $this->_selected = $value;
161     } //end func getName
162
163     /**
164      * Sets the element value
165      * @access    public
166      * @return    string
167      */
168     function setSelected($value)
169     {
170         $this->_selected = $value;
171     } //end func getName
172
173     /**
174      * Returns the element value
175      * @access    public
176      * @return    string
177      */
178     function getValue()
179     {
180         return $this->_selected;
181     } //end func getName
182
183     /**
184      * Returns the element value
185      * @access    public
186      * @return    string
187      */
188     function getSelected()
189     {
190         return $this->_selected;
191     } //end func getName
192
193     /**
194      * Returns the element name
195      * @access    public
196      * @return    string
197      */
198     function getName()
199     {
200         return $this->name;
201     } //end func getName
202
203
204     // {{{ _createSelects()
205
206     /**
207      * Creates the select objects
208      * @access    public
209      * @return    void
210      */
211     function _createRadios()
212     {
213         $this->caritas= array();
214         $elementName = $this->name;
215         $dir = MECON_DIR_FS_IMG.'/caritas';
216         $cant=5;
217         $i=1;
218         foreach ($this->listarArchivos($dir,'','.gif') as $nombre)
219         {
220             $this->radios[$nombre] = &new HTML_QuickForm_radio($elementName, '', '', $nombre, $this->getAttributes());
221         }
222     } // end func _createSelects
223
224     // }}}
225     // {{{ _createNumericOptionList()
226
227     // {{{ toHtml()
228
229     /**
230      * Returns the SELECT in HTML
231      * @access    public
232      * @return    string
233      * @throws    
234  */    
235     function toHtml()
236     {
237         $this->_createRadios();
238         $strHtml = '';
239         $i = 1;
240         foreach ($this->radios as $nombre => $element) {
241             if (@$this->_selected == $nombre) {
242                 $element->setChecked(true);
243             }
244             if ($this->_flagFrozen) {
245                 if (is_string($element)) {
246                     $strHtml .= str_replace(' ', '&nbsp;', $element);
247                 } else {
248                     $strHtml .= $element->getFrozenHtml();
249                 }
250             } else {
251                 if (is_string($element)) {
252                     $strHtml .= str_replace(' ', '&nbsp;', $element);
253                 } else {
254                     $strHtml .= $element->toHtml();
255                 }
256             }
257             $imagen =& new HTML_Image(MECON_DIR_IMG."/caritas/$nombre");
258             $strHtml .= '&nbsp;' . $imagen->toHtml() . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
259             if (!($i++ % $this->_numRows))
260                 $strHtml .=  '<br>';
261         }
262         return $strHtml;
263     } // end func toHtml
264
265     // }}}
266     // {{{ onQuickFormEvent()
267
268     /**
269      * Called by HTML_QuickForm whenever form event is made on this element
270      *
271      * @param     string    $event  Name of event
272      * @param     mixed     $arg    event arguments
273      * @param     object    $caller calling object
274      * @since     1.0
275      * @access    public
276      * @return    void
277      * @throws    
278      */
279     function onQuickFormEvent($event, $arg, &$caller)
280     {
281         switch ($event) {
282             case 'updateValue':
283                 // constant values override both default and submitted ones
284                 // default values are overriden by submitted
285                 $value = $this->_findValue($caller->_constantValues);
286                 if (null === $value) {
287                     $value = $this->_findValue($caller->_submitValues);
288                     if (null === $value) {
289                         $value = $this->_findValue($caller->_defaultValues);
290                     }
291                 }
292                 if (null !== $value) {
293                     $this->setSelected($value);
294                 }
295                 break;
296             case 'setGroupValue':
297                 $this->setSelected($arg);
298                 break;
299             default:
300                 parent::onQuickFormEvent($event, $arg, $caller);
301         }
302         return true;
303     } // end func onQuickFormEvent
304
305     // }}}
306 } // end class HTML_QuickForm_date
307 ?>