- req_note: permite elegir si queremos mostrar la 'required note' o no.
- btn_row: permite elegir si ponemos los botones en una fila nueva o en
una columna como los elementos (pero con un rowspan).
*/
var $_elements = array();
*/
var $_elements = array();
+ /**
+ * Guarda opciones del renderer.
+ * @private
+ */
+ var $_opts = array();
+
/**
* HTML con los scripts para poner antes del formulario (tipicamente
* un javascript).
/**
* HTML con los scripts para poner antes del formulario (tipicamente
* un javascript).
- * @param mixed $param Array o sting con el estilo de la tabla u objeto
- * tabla alternativo para usar.
+ * @param $param Array o sting con el estilo de la tabla u objeto
+ * tabla alternativo para usar.
+ * @param $opts Opciones, pueden ser:
+ * - btn_row: Si es true, se dibujan los botones en una fila
+ * completa, después de los campos. Si es false, se
+ * dibuja como un elemento con un rowspan para que
+ * ocupe la celda del label y del contenido.
+ * - req_note: Si es true, se incluye una fila adicional con la
+ * 'require note'. Si es false no se la muestra.
- function MECON_HTML_QuickForm_Renderer_TablaHorizontal($param = array())
+ function MECON_HTML_QuickForm_Renderer_TablaHorizontal($param = array(), $opts = array())
{
parent::HTML_QuickForm_Renderer();
{
parent::HTML_QuickForm_Renderer();
if (is_a($param, 'Tabla')) {
$this->setTable($param);
}
if (is_a($param, 'Tabla')) {
$this->setTable($param);
}
$pos = $this->_elementsPos;
$rows = count($this->_rows);
foreach ($this->_elements as $e) {
$pos = $this->_elementsPos;
$rows = count($this->_rows);
foreach ($this->_elements as $e) {
- list($label, $elem, $req, $err) = $e;
+ list($label, $elem) = $e;
$cols = array();
for ($i = 0; $i < $pos; ++$i) {
$cols[] = '';
}
$cols = array();
for ($i = 0; $i < $pos; ++$i) {
$cols[] = '';
}
- $cols[] = $label . ($req ? '<font color="red">*</font>' : '');
- $cols[] = $elem . ($err ? "<br><font color=\"red\">$err</font>" : '');
+ if (is_null($label)) { // Para caso especial como botones.
+ $cols[] = $elem;
+ $cols[] = '';
+ } else { // Para caso común.
+ $cols[] = $label;
+ $cols[] = $elem;
+ }
for ($i = $pos + 2; $i < $rows; ++$i) {
$cols[] = '';
}
$id = $this->tabla->addCol($cols, array(array('align' => 'center')));
for ($i = $pos + 2; $i < $rows; ++$i) {
$cols[] = '';
}
$id = $this->tabla->addCol($cols, array(array('align' => 'center')));
- $this->tabla->updateCellAttributes($pos, $id, array('titulo' => true));
+ if (is_null($label)) { // Para caso especial como botones.
+ $this->tabla->updateCellAttributes($pos, $id, array('rowspan' => 2));
+ } else { // Para caso común.
+ $this->tabla->updateCellAttributes($pos, $id, array('titulo' => true));
+ }
}
foreach ($this->_rows as $i => $row) {
if ($row) { // Si no son las filas de los elementos...
}
foreach ($this->_rows as $i => $row) {
if ($row) { // Si no son las filas de los elementos...
function finishForm(&$form)
{
// add a required note, if one is needed
function finishForm(&$form)
{
// add a required note, if one is needed
- if (!empty($form->_required) && !$form->_freezeAll) {
+ if (@$this->_opts['req_note'] and !empty($form->_required) && !$form->_freezeAll) {
$this->_rows[] = array('<font size="-2">'.$form->getRequiredNote().'</font>', array('cabecera' => true));
}
// add a validation script
$this->_rows[] = array('<font size="-2">'.$form->getRequiredNote().'</font>', array('cabecera' => true));
}
// add a validation script
$this->_checkInElements();
$this->_elements[] = array(
$element->getLabel() . ($required ? '<font color="red">*</font>' : ''),
$this->_checkInElements();
$this->_elements[] = array(
$element->getLabel() . ($required ? '<font color="red">*</font>' : ''),
- $element->toHtml() . ($error ? "<br><font color=\"red\">$error</font>" : ''),
- $required, $error);
+ $element->toHtml() . ($error ? "<br><font color=\"red\">$error</font>" : ''));
} else {
$this->_groupElements[] = ($element->getLabel() ? ($element->getLabel().' ') : '') . $element->toHtml();
}
} else {
$this->_groupElements[] = ($element->getLabel() ? ($element->getLabel().' ') : '') . $element->toHtml();
}
{
$name = $group->getName();
$sep = $group->_separator;
{
$name = $group->getName();
$sep = $group->_separator;
- if (strtolower($name) == 'botones') {
+ $label = $group->getLabel();
+ if (!@$this->_opts['btn_row'] and strtolower($name) == 'botones') {
+ $label = null;
+ }
+ if (@$this->_opts['btn_row']) {
$this->_rows[] = array(join('', $this->_groupElements), array('valign' => 'middle', 'align' => 'center'));
} else {
$this->_checkInElements();
$this->_rows[] = array(join('', $this->_groupElements), array('valign' => 'middle', 'align' => 'center'));
} else {
$this->_checkInElements();
- $this->_elements[] = array(array($group->getLabel(),
- join($sep, $this->_groupElements)), false, false);
+ $this->_elements[] = array($label, join($sep, $this->_groupElements));
+ $this->_inGroup = false;
- $this->_inGroup = false;
} // end func finishGroup
function _checkInElements() {
} // end func finishGroup
function _checkInElements() {