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