]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/HTML/QuickForm/caritas.php
Se mejora un poco los ALT para navegadores de texto.
[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 'MECON/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 MECON_HTML_QuickForm_caritas extends HTML_QuickForm_element {
33     // {{{ properties
34
35     /**
36      * Contains the select objects
37      * @var       array
38      * @access    private
39      */
40     var $radios = array();
41
42     /**
43      * Default values of the SELECTs
44      * @var       array
45      * @access    private
46      */
47     var $_selected = null;
48
49     var $_cols = 5;
50
51
52     /**
53      * Frozen flag tells if element is frozen or not
54      * @var       bool
55      * @access    private
56      */
57     var $_flagFrozen = false;
58
59     // +X2C Operation 533
60     /**
61      * Lista archivos devolviendo un array apropiado para un SELECT.
62      *
63      * @param  string $dir Directorio donde estan las imagenes.
64      * @param  string $prepend Prefijo del archivo.
65      * @param  string $append Postfijo del archivo.
66      *
67      * @return array
68      */
69     function listarArchivos($dir = '.', $prepend = '', $append = '') // ~X2C
70     {
71         $lista = array();
72         $d = dir($dir);
73         while (($file = $d->read()) !== false) {
74             if (preg_match("/$prepend(.*)$append/", $file, $m)) {
75                 $lista[] = $file;
76             }
77         }
78         return $lista;
79     }
80     // -X2C
81     // }}}
82     // {{{ constructor
83
84     /**
85      * Class constructor
86      * 
87      * @param     string    $elementName    (optional)Input field name attribute
88      * @param     string    $value          (optional)Input field value
89      * @param     mixed     $attributes     (optional)Either a typical HTML attribute string 
90      *                                      or an associative array. Date format is passed along the attributes.
91      * @access    public
92      * @return    void
93      */
94
95     function MECON_HTML_QuickForm_caritas($elementName=null, $elementLabel=null, $options=array(), $attributes=null) {
96         HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
97         $this->_persistantFreeze = true;
98         $this->_type = 'caritas';
99         $this->_setDefaults($options);
100     } //end constructor
101
102     // }}}
103     // {{{ _setDefaults()
104
105     /**
106      * sets the defaults options
107      * Current options are:
108      * - format
109      * - minYear
110      * - maxYear
111      * - language
112      * 
113      * @param     array    $options    array of options
114      * @access    private
115      * @return    void
116      */
117     function _setDefaults($options) {
118         if (isset($options['cols'])) {
119             $this->setCols($options['cols']);
120         }
121         /* if (isset($options['language'])) {
122              $this->setLanguage($options['language']);
123          }
124          if (isset($options['minYear'])) {
125              $this->setMinYear($options['minYear']);
126          }
127          if (isset($options['maxYear'])) {
128              $this->setMaxYear($options['maxYear']);
129          }
130         */
131     } // end func _setDefaults
132
133     // }}}
134     // {{{ setName()
135
136     /**
137      * Sets the number of cols (columns) 
138      * @param     string    $name   Input field name attribute
139      * @access    public
140      * @return    void
141      */
142     function setCols($cols) {
143         $this->_cols = $cols;
144     } //end func setCols
145
146     /**
147      * Sets the input field name
148      * @param     string    $name   Input field name attribute
149      * @access    public
150      * @return    void
151      */
152     function setName($name) {
153         $this->name = $name;
154     } //end func setName
155
156     // }}}
157     // {{{ getName()
158
159     /**
160      * Sets the element value
161      * @access    public
162      * @return    string
163      */
164     function setValue($value) {
165         $this->_selected = $value;
166     } //end func getName
167
168     /**
169      * Sets the element value
170      * @access    public
171      * @return    string
172      */
173     function setSelected($value) {
174         $this->_selected = $value;
175     } //end func getName
176
177     /**
178      * Returns the element value
179      * @access    public
180      * @return    string
181      */
182     function getValue() {
183         return $this->_selected;
184     } //end func getName
185
186     /**
187      * Returns the element value
188      * @access    public
189      * @return    string
190      */
191     function getSelected() {
192         return $this->_selected;
193     } //end func getName
194
195     /**
196      * Returns the element name
197      * @access    public
198      * @return    string
199      */
200     function getName() {
201         return $this->name;
202     } //end func getName
203
204
205     // {{{ _createSelects()
206
207     /**
208      * Creates the select objects
209      * @access    public
210      * @return    void
211      */
212     function _createRadios() {
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             $this->radios[$nombre] = &new HTML_QuickForm_radio($elementName, '', '', $nombre, $this->getAttributes());
220         }
221     } // end func _createSelects
222
223     // }}}
224     // {{{ _createNumericOptionList()
225
226     // {{{ toHtml()
227
228     /**
229      * Returns the SELECT in HTML
230      * @access    public
231      * @return    string
232      * @throws    
233     */
234     function toHtml() {
235         $this->_createRadios();
236         $strHtml = '';
237         $i = 1;
238         foreach ($this->radios as $nombre => $element) {
239             if (@$this->_selected == $nombre) {
240                 $element->setChecked(true);
241             }
242             if ($this->_flagFrozen) {
243                 if (is_string($element)) {
244                     $strHtml .= str_replace(' ', '&nbsp;', $element);
245                 } else {
246                     $strHtml .= $element->getFrozenHtml();
247                 }
248             } else {
249                 if (is_string($element)) {
250                     $strHtml .= str_replace(' ', '&nbsp;', $element);
251                 } else {
252                     $strHtml .= $element->toHtml();
253                 }
254             }
255             $imagen =& new MECON_HTML_Image(MECON_DIR_IMG."/caritas/$nombre");
256             $strHtml .= '&nbsp;' . $imagen->toHtml() . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
257             if (!($i++ % $this->_cols))
258                 $strHtml .=  '<br>';
259         }
260         return $strHtml;
261     } // end func toHtml
262
263     // }}}
264     // {{{ onQuickFormEvent()
265
266     /**
267      * Called by HTML_QuickForm whenever form event is made on this element
268      *
269      * @param     string    $event  Name of event
270      * @param     mixed     $arg    event arguments
271      * @param     object    $caller calling object
272      * @since     1.0
273      * @access    public
274      * @return    void
275      * @throws    
276      */
277     function onQuickFormEvent($event, $arg, &$caller) {
278         switch ($event) {
279         case 'updateValue':
280                 // constant values override both default and submitted ones
281                 // default values are overriden by submitted
282                 $value = $this->_findValue($caller->_constantValues);
283             if (null === $value) {
284                 $value = $this->_findValue($caller->_submitValues);
285                 if (null === $value) {
286                     $value = $this->_findValue($caller->_defaultValues);
287                 }
288             }
289             if (null !== $value) {
290                 $this->setSelected($value);
291             }
292             break;
293         case 'setGroupValue':
294             $this->setSelected($arg);
295             break;
296         default:
297             parent::onQuickFormEvent($event, $arg, $caller);
298         }
299         return true;
300     } // end func onQuickFormEvent
301
302     // }}}
303 } // end class HTML_QuickForm_date
304 ?>