/** * Render the element * * @param string $content Content to decorate * @return string */ public function render($content) { $element = $this->getElement(); if (null === $element || null === ($view = $element->getView())) { return $content; } $cellDecorators = $this->getCellDecorators(); $table = new \MUtil_Html_TableElement(); $table->setOnEmpty(array(new \MUtil_Html_Raw('…'), 'style' => 'text-align: center;')); if ($element instanceof \MUtil_Form_Element_Table) { $subforms = $element->getSubForms(); $table->id = $element->getName(); $table->class = $element->getAttrib('class'); if ($subforms) { $firstform = reset($subforms); } else { $firstform = $element->getSubForm(); } } elseif ($element instanceof \Zend_Form) { $cellDecorators = null; $firstform = $element; $subforms = array($element); } if (isset($firstform)) { // $hasDescriptions = false; foreach ($firstform->getElements() as $headerelement) { if (!$headerelement instanceof \Zend_Form_Element_Hidden) { if (!$subforms) { $headerelement->setAttrib('id', $element->getName()); } $last_cell = $table->th(array('title' => $headerelement->getDescription()))->label($headerelement); // if ($headerelement->getDescription()) { // $hasDescriptions = true; // } } } // if ($hasDescriptions) { // foreach ($firstform->getElements() as $headerelement) { // if (! $headerelement instanceof \Zend_Form_Element_Hidden) { // if ($headerelement->getDescription()) { // $table->tf()->inputOnly($headerelement, 'Description'); // } else { // $table->tf(); // } // } // } // } $hidden = array(); if ($subforms) { foreach ($subforms as $subform) { $table->tr(); foreach ($subform->getElements() as $subelement) { if ($subelement instanceof \Zend_Form_Element_Hidden) { $this->_applyDecorators($subelement, array(array('ViewHelper'))); $hidden[] = $subelement; } else { $last_cell = $table->td($hidden, array('title' => $subelement->getDescription())); if ($cellDecorators) { $last_cell->inputOnlyArray($subelement, $cellDecorators); } else { $last_cell[] = $subelement; } $hidden = array(); } } } if ($hidden) { $last_cell[] = $hidden; } } } elseif ($element instanceof \Zend_Form_DisplayGroup) { throw new \Exception('Rendering of \\Zend_Form_DisplayGroup in ' . __CLASS__ . ' not yet implemented.'); } elseif ($element instanceof \Zend_Form_Element) { throw new \Exception('Rendering of \\Zend_Form_Element in ' . __CLASS__ . ' not yet implemented.'); // $table->addColumn($element->renderViewHelper(), $element->renderLabel()); } else { $table->td($element); } return $table->render($view); }