Aaron van Geffen
cba42a9129
This has on my todo list for years... I'm glad to finally get around to it.
120 lines
3.0 KiB
PHP
120 lines
3.0 KiB
PHP
<?php
|
|
/*****************************************************************************
|
|
* TabularData.php
|
|
* Contains the template that displays tabular data.
|
|
*
|
|
* Kabuki CMS (C) 2013-2015, Aaron van Geffen
|
|
*****************************************************************************/
|
|
|
|
class TabularData extends SubTemplate
|
|
{
|
|
public function __construct(GenericTable $table)
|
|
{
|
|
$this->_t = $table;
|
|
|
|
$pageIndex = $table->getPageIndex();
|
|
if ($pageIndex)
|
|
$this->pager = new Pagination($pageIndex);
|
|
}
|
|
|
|
protected function html_content()
|
|
{
|
|
echo '
|
|
<div class="admin_box">';
|
|
|
|
$title = $this->_t->getTitle();
|
|
if (!empty($title))
|
|
echo '
|
|
<h2>', $title, '</h2>';
|
|
|
|
// Showing a page index?
|
|
if (isset($this->pager))
|
|
$this->pager->html_content();
|
|
|
|
// Maybe even a small form?
|
|
if (isset($this->_t->form_above))
|
|
$this->showForm($this->_t->form_above);
|
|
|
|
// Build the table!
|
|
echo '
|
|
<table class="table table-striped">
|
|
<thead>
|
|
<tr>';
|
|
|
|
// Show the table's headers.
|
|
foreach ($this->_t->getHeader() as $th)
|
|
{
|
|
echo '
|
|
<th', (!empty($th['width']) ? ' width="' . $th['width'] . '"' : ''), (!empty($th['class']) ? ' class="' . $th['class'] . '"' : ''), ($th['colspan'] > 1 ? ' colspan="' . $th['colspan'] . '"' : ''), ' scope="', $th['scope'], '">',
|
|
$th['href'] ? '<a href="' . $th['href'] . '">' . $th['label'] . '</a>' : $th['label'];
|
|
|
|
if ($th['sort_mode'] )
|
|
echo ' ', $th['sort_mode'] == 'up' ? '↑' : '↓';
|
|
|
|
echo '</th>';
|
|
}
|
|
|
|
echo '
|
|
</tr>
|
|
</thead>
|
|
<tbody>';
|
|
|
|
// Show the table's body.
|
|
$body = $this->_t->getBody();
|
|
if (is_array($body))
|
|
{
|
|
foreach ($body as $tr)
|
|
{
|
|
echo '
|
|
<tr', (!empty($tr['class']) ? ' class="' . $tr['class'] . '"' : ''), '>';
|
|
|
|
foreach ($tr['cells'] as $td)
|
|
echo '
|
|
<td', (!empty($td['width']) ? ' width="' . $td['width'] . '"' : ''), '>', $td['value'], '</td>';
|
|
|
|
echo '
|
|
</tr>';
|
|
}
|
|
}
|
|
else
|
|
echo '
|
|
<tr>
|
|
<td colspan="', count($this->_t->getHeader()), '">', $body, '</td>
|
|
</tr>';
|
|
|
|
echo '
|
|
</tbody>
|
|
</table>';
|
|
|
|
// Maybe another small form?
|
|
if (isset($this->_t->form_below))
|
|
$this->showForm($this->_t->form_below);
|
|
|
|
// Showing a page index?
|
|
if (isset($this->pager))
|
|
$this->pager->html_content();
|
|
|
|
echo '
|
|
</div>';
|
|
}
|
|
|
|
protected function showForm($form)
|
|
{
|
|
echo '
|
|
<form action="', $form['action'], '" method="', $form['method'], '" class="table_form ', $form['class'], '">';
|
|
|
|
if (!empty($form['fields']))
|
|
foreach ($form['fields'] as $name => $field)
|
|
echo '
|
|
<input name="', $name, '" type="', $field['type'], '" placeholder="', $field['placeholder'], '"', isset($field['class']) ? ' class="' . $field['class'] . '"' : '', isset($field['value']) ? ' value="' . $field['value'] . '"' : '', '>';
|
|
|
|
if (!empty($form['buttons']))
|
|
foreach ($form['buttons'] as $name => $button)
|
|
echo '
|
|
<input name="', $name, '" type="', $button['type'], '" value="', $button['caption'], '" class="btn', isset($button['class']) ? ' ' . $button['class'] . '' : '', '">';
|
|
|
|
echo '
|
|
</form>';
|
|
}
|
|
}
|