public function renderContents($writer)
{
if ($this->getHasControls()) {
$renderTableSection = false;
foreach ($this->getControls() as $row) {
if ($row->getTableSection() !== TTableRowSection::Body) {
$renderTableSection = true;
break;
}
}
if ($renderTableSection) {
$currentSection = TTableRowSection::Header;
$writer->writeLine();
foreach ($this->getControls() as $index => $row) {
if (($section = $row->getTableSection()) === $currentSection) {
if ($index === 0 && $currentSection === TTableRowSection::Header) {
$writer->renderBeginTag('thead');
}
} else {
if ($currentSection === TTableRowSection::Header) {
if ($index > 0) {
$writer->renderEndTag();
}
if ($section === TTableRowSection::Body) {
$writer->renderBeginTag('tbody');
} else {
$writer->renderBeginTag('tfoot');
}
$currentSection = $section;
} else {
if ($currentSection === TTableRowSection::Body) {
$writer->renderEndTag();
if ($section === TTableRowSection::Footer) {
$writer->renderBeginTag('tfoot');
} else {
throw new TConfigurationException('table_tablesection_outoforder');
}
$currentSection = $section;
} else {
// Footer
throw new TConfigurationException('table_tablesection_outoforder');
}
}
}
$row->renderControl($writer);
$writer->writeLine();
}
$writer->renderEndTag();
} else {
$writer->writeLine();
foreach ($this->getControls() as $row) {
$row->renderControl($writer);
$writer->writeLine();
}
}
}
}