class/TableForm.php
<?php
namespace XoopsModules\Extcal;
\xoops_load('XoopsForm');
/**
* Form that will output as a theme-enabled HTML table.
*
* Also adds JavaScript to validate required fields
*/
class TableForm extends \XoopsForm
{
/**
* ad the balise html "table" to render.
*
* @var bool|string
*/
public $_addBaliseTable = '';
/**
* Gets the "value" attribute of a form element.
*
* @param $addBaliseTable
*
* @return string the "value" attribute assigned to a form element, null if not set
* @internal param bool $encode To sanitizer the text?
*
* @internal param string $name the "name" attribute of a form element
*/
public function setAddBaliseTable($addBaliseTable)
{
$this->_addBaliseTable = $addBaliseTable;
}
/**
* gets the "value" attribute of all form elements.
*
* @return bool|string array of name/value pairs assigned to form elements
* @internal param bool $encode To sanitizer the text?
*
*/
public function getAddBaliseTable()
{
return $this->_addBaliseTable;
}
/**
* Insert an empty row in the table to serve as a seperator.
*
* @param string $extra HTML to be displayed in the empty row.
* @param string $class CSS class name for <td> tag
*/
public function insertBreak($extra = '', $class = '')
{
$class = ('' != $class) ? " class='" . \preg_replace('/[^A-Za-z0-9\s\s_-]/i', '', $class) . "'" : '';
// Fix for $extra tag not showing
if ($extra) {
$extra = '<tr><td colspan="2" ' . $class . '>' . $extra . '</td></tr>';
$this->addElement($extra);
} else {
$extra = '<tr><td colspan="2" ' . $class . '> </td></tr>';
$this->addElement($extra);
}
}
/**
* create HTML to output the form as a theme-enabled table with validation.
*
* YOU SHOULD AVOID TO USE THE FOLLOWING Nocolspan METHOD, IT WILL BE REMOVED
*
* To use the noColspan simply use the following example:
*
* $colspan = new \XoopsFormDhtmlTextArea( '', 'key', $value, '100%', '100%' );
* $colspan->setNocolspan();
* $form->addElement( $colspan );
*
* @return string
*/
public function render()
{
$addBaliseTable = $this->_addBaliseTable;
$title = $this->getTitle();
$ret = '';
if ($addBaliseTable) {
$ret .= '<table width="100%" class="outer" cellspacing="1"> ';
}
if ('' != $title) {
$ret .= '<tr><th colspan="2">' . $title . '</th></tr>';
}
$hidden = '';
$class = 'even';
foreach ($this->getElements() as $ele) {
if (!\is_object($ele)) {
$ret .= $ele;
} elseif (!$ele->isHidden()) {
if (!$ele->getNocolspan()) {
$ret .= '<tr valign="top" align="left"><td class="head">';
if ('' != ($caption = $ele->getCaption())) {
$ret .= '<div class="xoops-form-element-caption' . ($ele->isRequired() ? '-required' : '') . '">';
$ret .= '<span class="caption-text">' . $caption . '</span>';
$ret .= '<span class="caption-marker">*</span>';
$ret .= '</div>';
}
if ('' != ($desc = $ele->getDescription())) {
$ret .= '<div class="xoops-form-element-help">' . $desc . '</div>';
}
$ret .= '</td><td class="' . $class . '">' . $ele->render() . '</td></tr>' . NWLINE;
} else {
$ret .= '<tr valign="top" align="left"><td class="head" colspan="2">';
if ('' != ($caption = $ele->getCaption())) {
$ret .= '<div class="xoops-form-element-caption' . ($ele->isRequired() ? '-required' : '') . '">';
$ret .= '<span class="caption-text">' . $caption . '</span>';
$ret .= '<span class="caption-marker">*</span>';
$ret .= '</div>';
}
$ret .= '</td></tr><tr valign="top" align="left"><td class="' . $class . '" colspan="2">' . $ele->render() . '</td></tr>';
}
} else {
$hidden .= $ele->render();
}
}
if ($addBaliseTable) {
$ret .= '</table>';
}
$ret .= NWLINE . ' ' . $hidden . NWLINE;
return $ret;
}
} // fin de la classe