]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MLIB/HTML/QuickForm/Renderer/Tabla.php
Se agrega a la clase MLIB_PDF_Tabla la posibilidad de agregar estilos nuevos para
[mecon/meconlib.git] / lib / MLIB / HTML / QuickForm / Renderer / Tabla.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                                     mlib
4 -------------------------------------------------------------------------------
5 This file is part of mlib.
6
7 mlib is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2 of the License, or (at your option)
10 any later version.
11
12 mlib is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15  
16 You should have received a copy of the GNU General Public License; if not,
17 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 Boston, MA  02111-1307  USA
19 -------------------------------------------------------------------------------
20 Creado: jue jul 17 15:36:26 ART 2003
21 Autor:  Leandro Lucarella <llucar@mecon.gov.ar>
22 -------------------------------------------------------------------------------
23 $Id$
24 -----------------------------------------------------------------------------*/
25
26 require_once 'HTML/QuickForm/Renderer.php';
27 require_once 'MLIB/HTML/Tabla.php';
28
29 /**
30  * QuickForm renderer que usa Tabla como backend.
31  * Basado en el QuickForm Renderer basico.
32  * 
33  * @access public
34  */
35 class MLIB_HTML_QuickForm_Renderer_Tabla extends HTML_QuickForm_Renderer {
36
37    /**
38     * Tabla usada para dibujar el formulario.
39     * @var      object Tabla
40     * @access   private
41     */
42     var $tabla;
43
44    /**
45     * HTML con los scripts para poner antes del formulario (tipicamente
46     * un javascript).
47     * @var      string
48     * @access   private
49     */
50     var $_script = '';
51
52    /**
53     * HTML para agregar antes de la tabla (tipicamente un javascript).
54     * @var      string
55     * @access   private
56     */
57     var $_prepend = '';
58
59    /**
60     * HTML para agregar despues de la tabla.
61     * @var      string
62     * @access   private
63     */
64     var $_append = '';
65
66    /**
67     * True if we are inside a group 
68     * @var      bool
69     * @access   private
70     */
71     var $_inGroup = false;
72
73    /**
74     * Group error related message.
75     * @var      string
76     * @access   private
77     */
78     var $_groupError = '';
79
80    /**
81     * Array with HTML generated for group elements
82     * @var      array
83     * @access   private
84     */
85     var $_groupElements = array();
86
87    /**
88     * Constructor.
89     *
90     * @param  mixed $param Array o sting con el estilo de la tabla u objeto
91     * tabla alternativo para usar.
92     *
93     * @access public
94     */
95     function MLIB_HTML_QuickForm_Renderer_Tabla($param = array())
96     {
97         $this->HTML_QuickForm_Renderer();
98         if (is_a($param, 'Tabla')) {
99             $this->setTable($param);
100         }
101         else {
102             $this->tabla =& new MLIB_HTML_Tabla($param);
103         }
104     } // end constructor
105
106    /**
107     * returns the HTML generated for the form
108     *
109     * @access public
110     * @return string
111     */
112     function toHtml()
113     {
114         return  $this->_script . $this->_prepend .
115                 $this->tabla->toHtml() .
116                 $this->_append;
117     } // end func toHtml
118     
119    /**
120     * Called when visiting a form, before processing any form elements
121     *
122     * @param    object      An HTML_QuickForm object being visited
123     * @access   public
124     * @return   void
125     */
126     function startForm(&$form)
127     {
128         # FIXME - deberia sacarlo del QuickForm
129         #$this->_prepend = $form->getFormStart();
130 #        $attrs = $form->getAttributesString();
131         $attrs = $form->getAttributes(true);
132         $this->_prepend = "\n<form$attrs>\n";
133
134     } // end func startForm
135
136    /**
137     * Called when visiting a form, after processing all form elements
138     * Adds required note, form attributes, validation javascript and form content.
139     * 
140     * @param    object      An HTML_QuickForm object being visited
141     * @access   public
142     * @return   void
143     */
144     function finishForm(&$form)
145     {
146         // add a required note, if one is needed
147         if (!empty($form->_required) && !$form->_freezeAll) {
148             $id = $this->tabla->addRow(
149                 array('<font size="-2">'.$form->getRequiredNote().'</font>'),
150                 array('colspan' => 2, 'cabecera' => true)
151             );
152             //$this->tabla->updateCellAttributes($id, array('colspan' => 2));
153         }
154         // add form attributes and content
155         //$this->_html = str_replace('{content}', $this->_html, $html);
156         // add a validation script
157         $this->_script = strval($form->getValidationScript());
158         # FIXME - deberia sacarlo del QuickForm
159         #$this->_append = $form->getFormEnd();
160         $this->_append = "\n</form>\n";
161     } // end func finishForm
162       
163    /**
164     * Called when visiting a header element
165     *
166     * @param    object     An HTML_QuickForm_header element being visited
167     * @access   public
168     * @return   void
169     */
170     function renderHeader(&$header)
171     {
172         $name = $header->getName();
173         $this->tabla->addRow(
174             array($header->toHtml()),
175             array('colspan' => 2, $name => true)
176         );
177     } // end func renderHeader
178
179    /**
180     * Renders an element Html
181     * Called when visiting an element
182     *
183     * @param object     An HTML_QuickForm_element object being visited
184     * @param bool       Whether an element is required
185     * @param string     An error message associated with an element
186     * @access public
187     * @return void
188     */
189     function renderElement(&$element, $required, $error)
190     {
191         if (!$this->_inGroup) {
192             $id = $this->tabla->addRow(
193                 array(
194                     $element->getLabel() . ($required ? '<font color="red">*</FONT>' : ''),
195                     $element->toHtml() . ($error ? "<br><font color=\"red\">$error</FONT>" : ''),
196                 )
197             );
198             $this->tabla->updateCellAttributes($id, 0, array('titulo' => true, 'align' => 'left'));
199             $this->tabla->updateCellAttributes($id, 1, array('align' => 'left'));
200         } else {
201             $this->_groupElements[] = ($element->getLabel() ? ($element->getLabel().'&nbsp;') : '') . $element->toHtml();
202         }
203     } // end func renderElement
204    
205    /**
206     * Renders an hidden element
207     * Called when visiting a hidden element
208     * 
209     * @param object     An HTML_QuickForm_hidden object being visited
210     * @access public
211     * @return void
212     */
213     function renderHidden(&$element)
214     {
215         $this->_prepend .= "\n\t". $element->toHtml();
216     } // end func renderHidden
217
218    /**
219     * Called when visiting a raw HTML/text pseudo-element
220     * 
221     * @param  object     An HTML_QuickForm_html element being visited
222     * @access public
223     * @return void
224     */
225     function renderHtml(&$data)
226     {
227         $this->tabla->addRow(
228             array($header->toHtml()),
229             array('colspan' => 2)
230         );
231     } // end func renderHtml
232
233    /**
234     * Called when visiting a group, before processing any group elements
235     *
236     * @param object     An HTML_QuickForm_group object being visited
237     * @param bool       Whether a group is required
238     * @param string     An error message associated with a group
239     * @access public
240     * @return void
241     */
242     function startGroup(&$group, $required, $error)
243     {
244         $this->_groupElements = array();
245         $this->_groupError    = $error;
246         $this->_inGroup       = true;
247     } // end func startGroup
248
249    /**
250     * Called when visiting a group, after processing all group elements
251     *
252     * @param    object      An HTML_QuickForm_group object being visited
253     * @access   public
254     * @return   void
255     */
256     function finishGroup(&$group)
257     {
258         $name = $group->getName();
259         $sep = $group->_separator;
260         if (strtolower($name) == 'botones') {
261             $id = $this->tabla->addRow(
262                 array(join('', $this->_groupElements))
263             );
264             $this->tabla->updateCellAttributes($id, 0, array('valign' => 'middle', 'align' => 'center', 'colspan' => 2));
265         } else {
266             $id = $this->tabla->addRow(
267                 array($group->getLabel(), join($sep, $this->_groupElements)),
268                 array('valign' => 'middle', 'align' => 'left')
269             );
270             $this->tabla->updateCellAttributes($id, 0, array('titulo' => true, 'align' => 'left'));
271         }
272         $this->_inGroup = false;
273     } // end func finishGroup
274     
275    /**
276     * Actualiza atributos de la tabla interna.
277     *
278     * @param    mixed   $attrs Html attributes
279     * @access   public
280     * @return   void
281     * @deprecated Usar $renderer->tabla->updateAttributes().
282     */
283     function updateAttributes($attrs) {
284         $this->tabla->updateAttributes($attrs);
285     }
286    /**
287     * Setea atributos.
288     *
289     * @param    mixed   $attrs Html attributes
290     * @access   public
291     * @return   void
292     * @deprecated Usar $renderer->tabla->setAttributes().
293     */
294     function setAttributes($attrs) {
295         $this->tabla->setAttributes($attrs);
296     }
297    /**
298     * Obtiene atributos.
299     *
300     * @access   public
301     * @return   mixed
302     * @deprecated Usar $renderer->tabla->getAttributes().
303     */
304     function getAttributes() {
305         return $this->tabla->getAttributes();
306     }
307
308    /**
309     * Setea la tabla que utilizará el renderer.
310     *
311     * @param Tabla $param Objeto tabla alternativo para utilizar
312     *
313     * @access   public
314     *
315     * @deprecated Usar $renderer->tabla.
316     */
317     function setTable(&$param) {
318         $this->tabla =& $param;
319     }
320
321     function getCSS() {
322         return $this->tabla->getCSS();
323     }
324
325 } // end class HTML_QuickForm_Renderer_Default
326
327 ?>