forked from Public/pics
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>';
|
|
}
|
|
}
|