]> git.llucax.com Git - mecon/meconlib.git/blob - HTML/php/QuickForm/Renderer/Tabla.php
Se sigue mejorando el Renderer. Ya es funcional.
[mecon/meconlib.git] / HTML / php / QuickForm / Renderer / Tabla.php
1 <?php
2 /* vim: set expandtab tabstop=4 shiftwidth=4: */
3 // +----------------------------------------------------------------------+
4 // | PHP version 4.0                                                      |
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: Alexey Borzov <borz_off@cs.msu.su>                          |
17 // |          Adam Daniel <adaniel1@eesus.jnj.com>                        |
18 // |          Bertrand Mansion <bmansion@mamasam.com>                     |
19 // +----------------------------------------------------------------------+
20 //
21 // $Id$
22
23 require_once 'HTML/QuickForm/Renderer.php';
24 require_once 'HTML/Tabla.php';
25
26 /**
27  * A concrete renderer for HTML_QuickForm,
28  * based on QuickForm 2.x built-in one
29  * 
30  * @access public
31  */
32 class HTML_QuickForm_Renderer_Tabla extends HTML_QuickForm_Renderer {
33
34    /**
35     * Tabla usada para dibujar el formulario.
36     * @var      object Tabla
37     * @access   private
38     */
39     var $_tabla;
40
41    /**
42     * HTML con los scripts para poner antes del formulario (tipicamente
43     * un javascript).
44     * @var      string
45     * @access   private
46     */
47     var $_script = '';
48
49    /**
50     * HTML para agregar antes de la tabla (tipicamente un javascript).
51     * @var      string
52     * @access   private
53     */
54     var $_prepend = '';
55
56    /**
57     * HTML para agregar despues de la tabla.
58     * @var      string
59     * @access   private
60     */
61     var $_append = '';
62
63    /**
64     * True if we are inside a group 
65     * @var      bool
66     * @access   private
67     */
68     var $_inGroup = false;
69
70    /**
71     * Group error related message.
72     * @var      string
73     * @access   private
74     */
75     var $_groupError = '';
76
77    /**
78     * Array with HTML generated for group elements
79     * @var      array
80     * @access   private
81     */
82     var $_groupElements = array();
83
84    /**
85     * Constructor.
86     *
87     * @param  mixed $style Estilo de la tabla.
88     *
89     * @access public
90     */
91     function HTML_QuickForm_Renderer_Tabla($style = 'width="400"')
92     {
93         $this->HTML_QuickForm_Renderer();
94         $this->_tabla =& new Tabla($style);
95     } // end constructor
96
97    /**
98     * returns the HTML generated for the form
99     *
100     * @access public
101     * @return string
102     */
103     function toHtml()
104     {
105         return  $this->_script . $this->_prepend .
106                 $this->_tabla->toHtml() .
107                 $this->_append;
108     } // end func toHtml
109     
110    /**
111     * Called when visiting a form, before processing any form elements
112     *
113     * @param    object      An HTML_QuickForm object being visited
114     * @access   public
115     * @return   void
116     */
117     function startForm(&$form)
118     {
119         # FIXME - deberia sacarlo del QuickForm
120         #$this->_prepend = $form->getFormStart();
121         $attrs = $form->getAttributesString();
122         $this->_prepend = "\n<FORM$attrs>\n";
123     } // end func startForm
124
125    /**
126     * Called when visiting a form, after processing all form elements
127     * Adds required note, form attributes, validation javascript and form content.
128     * 
129     * @param    object      An HTML_QuickForm object being visited
130     * @access   public
131     * @return   void
132     */
133     function finishForm(&$form)
134     {
135         // add a required note, if one is needed
136         if (!empty($form->_required) && !$form->_freezeAll) {
137             $id = $this->_tabla->addRow(
138                 array($form->getRequiredNote()),
139                 array('colspan' => 2, 'align' => 'center', 'cabecera' => true)
140             );
141             //$this->_tabla->updateCellAttributes($id, array('colspan' => 2));
142         }
143         // add form attributes and content
144         //$this->_html = str_replace('{content}', $this->_html, $html);
145         // add a validation script
146         $this->_script = strval($form->getValidationScript());
147         # FIXME - deberia sacarlo del QuickForm
148         #$this->_append = $form->getFormEnd();
149         $this->_append = "\n</FORM>\n";
150     } // end func finishForm
151       
152    /**
153     * Called when visiting a header element
154     *
155     * @param    object     An HTML_QuickForm_header element being visited
156     * @access   public
157     * @return   void
158     */
159     function renderHeader(&$header)
160     {
161         $name = $header->getName();
162         $this->_tabla->addRow(
163             array($header->toHtml()),
164             array('colspan' => 2, $name => true, 'align' => 'center')
165         );
166     } // end func renderHeader
167
168    /**
169     * Renders an element Html
170     * Called when visiting an element
171     *
172     * @param object     An HTML_QuickForm_element object being visited
173     * @param bool       Whether an element is required
174     * @param string     An error message associated with an element
175     * @access public
176     * @return void
177     */
178     function renderElement(&$element, $required, $error)
179     {
180         if (!$this->_inGroup) {
181             $id = $this->_tabla->addRow(
182                 array(
183                     $element->getLabel() . ($required ? '<FONT color="red">*</FONT>' : ''),
184                     $element->toHtml() . ($error ? "<BR><FONT color=\"red\">$error</FONT>" : ''),
185                 )
186             );
187             $this->_tabla->updateCellAttributes($id, 0, array('titulo' => true, 'align' => 'left', 'nowrap' => true));
188             $this->_tabla->updateCellAttributes($id, 1, array('align' => 'left'));
189         } else {
190             $this->_groupElements[] = ($element->getLabel() ? ($element->getLabel().'&nbsp;') : '') . $element->toHtml();
191         }
192     } // end func renderElement
193    
194    /**
195     * Renders an hidden element
196     * Called when visiting a hidden element
197     * 
198     * @param object     An HTML_QuickForm_hidden object being visited
199     * @access public
200     * @return void
201     */
202     function renderHidden(&$element)
203     {
204         $this->_prepend .= "\n\t". $element->toHtml();
205     } // end func renderHidden
206
207    /**
208     * Called when visiting a raw HTML/text pseudo-element
209     * 
210     * @param  object     An HTML_QuickForm_html element being visited
211     * @access public
212     * @return void
213     */
214     function renderHtml(&$data)
215     {
216         $this->_tabla->addRow(
217             array($header->toHtml()),
218             array('colspan' => 2)
219         );
220     } // end func renderHtml
221
222    /**
223     * Called when visiting a group, before processing any group elements
224     *
225     * @param object     An HTML_QuickForm_group object being visited
226     * @param bool       Whether a group is required
227     * @param string     An error message associated with a group
228     * @access public
229     * @return void
230     */
231     function startGroup(&$group, $required, $error)
232     {
233         $this->_groupElements = array();
234         $this->_groupError    = $error;
235         $this->_inGroup       = true;
236     } // end func startGroup
237
238    /**
239     * Called when visiting a group, after processing all group elements
240     *
241     * @param    object      An HTML_QuickForm_group object being visited
242     * @access   public
243     * @return   void
244     */
245     function finishGroup(&$group)
246     {
247         $name = $group->getName();
248         $sep = $group->_separator;
249         if (strtolower($name) == 'botones') {
250             $id = $this->_tabla->addRow(
251                 array(join('', $this->_groupElements))
252             );
253             $this->_tabla->updateCellAttributes($id, 0, array('align' => 'right', 'colspan' => 2));
254         } else {
255             $id = $this->_tabla->addRow(
256                 array($group->getLabel(), join($sep, $this->_groupElements)),
257                 array('align' => 'left')
258             );
259             $this->_tabla->updateCellAttributes($id, 0, array('titulo' => true, 'align' => 'left', 'nowrap' => true));
260         }
261     } // end func finishGroup
262
263 } // end class HTML_QuickForm_Renderer_Default
264
265 ?>