forked from Public/pics
		
	TabularData: split up into logical methods
This commit is contained in:
		
							parent
							
								
									d6f39a3410
								
							
						
					
					
						commit
						01954d4a7d
					
				@ -8,7 +8,7 @@
 | 
			
		||||
 | 
			
		||||
class TabularData extends SubTemplate
 | 
			
		||||
{
 | 
			
		||||
	private GenericTable $_t;
 | 
			
		||||
	protected GenericTable $_t;
 | 
			
		||||
 | 
			
		||||
	public function __construct(GenericTable $table)
 | 
			
		||||
	{
 | 
			
		||||
@ -16,6 +16,47 @@ class TabularData extends SubTemplate
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected function html_content()
 | 
			
		||||
	{
 | 
			
		||||
		$this->renderTitle();
 | 
			
		||||
 | 
			
		||||
		foreach ($this->_subtemplates as $template)
 | 
			
		||||
			$template->html_main();
 | 
			
		||||
 | 
			
		||||
		// Showing an inline form?
 | 
			
		||||
		$pager = $this->_t->getPageIndex();
 | 
			
		||||
		if (!empty($pager) || isset($this->_t->form_above))
 | 
			
		||||
			$this->renderPaginationForm($pager, $this->_t->form_above);
 | 
			
		||||
 | 
			
		||||
		$tableClass = $this->_t->getTableClass();
 | 
			
		||||
		if ($tableClass)
 | 
			
		||||
			echo '
 | 
			
		||||
			<div class="', $tableClass, '">';
 | 
			
		||||
 | 
			
		||||
		// Build the table!
 | 
			
		||||
		echo '
 | 
			
		||||
				<table class="table table-striped table-condensed">';
 | 
			
		||||
 | 
			
		||||
		$this->renderTableHead($this->_t->getHeader());
 | 
			
		||||
		$this->renderTableBody($this->_t->getBody());
 | 
			
		||||
 | 
			
		||||
		echo '
 | 
			
		||||
				</table>';
 | 
			
		||||
 | 
			
		||||
		if ($tableClass)
 | 
			
		||||
			echo '
 | 
			
		||||
			</div>';
 | 
			
		||||
 | 
			
		||||
		// Showing an inline form?
 | 
			
		||||
		if (!empty($pager) || isset($this->_t->form_below))
 | 
			
		||||
			$this->renderPaginationForm($pager, $this->_t->form_below);
 | 
			
		||||
 | 
			
		||||
		$title = $this->_t->getTitle();
 | 
			
		||||
		if (!empty($title))
 | 
			
		||||
			echo '
 | 
			
		||||
			</div>';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected function renderTitle()
 | 
			
		||||
	{
 | 
			
		||||
		$title = $this->_t->getTitle();
 | 
			
		||||
		if (!empty($title))
 | 
			
		||||
@ -25,43 +66,32 @@ class TabularData extends SubTemplate
 | 
			
		||||
			<div class="generic-table', !empty($titleclass) ? ' ' . $titleclass : '', '">
 | 
			
		||||
				<h1>', htmlspecialchars($title), '</h1>';
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
		foreach ($this->_subtemplates as $template)
 | 
			
		||||
			$template->html_main();
 | 
			
		||||
 | 
			
		||||
		// Showing an inline form?
 | 
			
		||||
		$pager = $this->_t->getPageIndex();
 | 
			
		||||
		if (!empty($pager) || isset($this->_t->form_above))
 | 
			
		||||
		{
 | 
			
		||||
			echo '
 | 
			
		||||
				<div class="row clearfix justify-content-end">';
 | 
			
		||||
 | 
			
		||||
			// Page index?
 | 
			
		||||
			if (!empty($pager))
 | 
			
		||||
				PageIndexWidget::paginate($pager);
 | 
			
		||||
 | 
			
		||||
			// Form controls?
 | 
			
		||||
			if (isset($this->_t->form_above))
 | 
			
		||||
				$this->showForm($this->_t->form_above);
 | 
			
		||||
 | 
			
		||||
			echo '
 | 
			
		||||
				</div>';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$tableClass = $this->_t->getTableClass();
 | 
			
		||||
		if ($tableClass)
 | 
			
		||||
			echo '
 | 
			
		||||
			<div class="', $tableClass, '">';
 | 
			
		||||
 | 
			
		||||
		// Build the table!
 | 
			
		||||
	protected function renderPaginationForm($pager, $form, $class='row')
 | 
			
		||||
	{
 | 
			
		||||
		echo '
 | 
			
		||||
			<div class="', $class, ' clearfix justify-content-end">';
 | 
			
		||||
 | 
			
		||||
		// Page index?
 | 
			
		||||
		if (!empty($pager))
 | 
			
		||||
			PageIndexWidget::paginate($pager);
 | 
			
		||||
 | 
			
		||||
		// Form controls?
 | 
			
		||||
		if (isset($form))
 | 
			
		||||
			$this->renderInlineForm($form);
 | 
			
		||||
 | 
			
		||||
		echo '
 | 
			
		||||
			</div>';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected function renderTableHead(array $headers)
 | 
			
		||||
	{
 | 
			
		||||
		echo '
 | 
			
		||||
				<table class="table table-striped table-condensed">
 | 
			
		||||
					<thead>
 | 
			
		||||
						<tr>';
 | 
			
		||||
 | 
			
		||||
		// Show all headers in their full glory!
 | 
			
		||||
		$header = $this->_t->getHeader();
 | 
			
		||||
		foreach ($header as $th)
 | 
			
		||||
		foreach ($headers 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'], '">',
 | 
			
		||||
@ -75,11 +105,14 @@ class TabularData extends SubTemplate
 | 
			
		||||
 | 
			
		||||
		echo '
 | 
			
		||||
						</tr>
 | 
			
		||||
					</thead>
 | 
			
		||||
					</thead>';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected function renderTableBody($body)
 | 
			
		||||
	{
 | 
			
		||||
		echo '
 | 
			
		||||
					<tbody>';
 | 
			
		||||
 | 
			
		||||
		// The body is what we came to see!
 | 
			
		||||
		$body = $this->_t->getBody();
 | 
			
		||||
		if (is_array($body))
 | 
			
		||||
		{
 | 
			
		||||
			foreach ($body as $tr)
 | 
			
		||||
@ -90,59 +123,31 @@ class TabularData extends SubTemplate
 | 
			
		||||
				foreach ($tr['cells'] as $td)
 | 
			
		||||
				{
 | 
			
		||||
					echo '
 | 
			
		||||
							<td', (!empty($td['width']) ? ' width="' . $td['width'] . '"' : ''), '>';
 | 
			
		||||
 | 
			
		||||
					if (!empty($td['class']))
 | 
			
		||||
						echo '<span class="', $td['class'], '">', $td['value'], '</span>';
 | 
			
		||||
					else
 | 
			
		||||
						echo $td['value'];
 | 
			
		||||
 | 
			
		||||
					echo '</td>';
 | 
			
		||||
							<td',
 | 
			
		||||
								(!empty($td['class']) ? ' class="' . $td['class'] . '"' : ''),
 | 
			
		||||
								(!empty($td['width']) ? ' width="' . $td['width'] . '"' : ''), '>',
 | 
			
		||||
								$td['value'],
 | 
			
		||||
							'</td>';
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				echo '
 | 
			
		||||
						</tr>';
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		// !!! Sum colspan!
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			$header = $this->_t->getHeader();
 | 
			
		||||
			echo '
 | 
			
		||||
						<tr>
 | 
			
		||||
							<td colspan="', count($header), '" class="fullwidth">', $body, '</td>
 | 
			
		||||
						</tr>';
 | 
			
		||||
 | 
			
		||||
		echo '
 | 
			
		||||
					</tbody>
 | 
			
		||||
				</table>';
 | 
			
		||||
 | 
			
		||||
		if ($tableClass)
 | 
			
		||||
			echo '
 | 
			
		||||
			</div>';
 | 
			
		||||
 | 
			
		||||
		// Showing an inline form?
 | 
			
		||||
		if (!empty($pager) || isset($this->_t->form_below))
 | 
			
		||||
		{
 | 
			
		||||
			echo '
 | 
			
		||||
				<div class="row clearfix justify-content-end">';
 | 
			
		||||
 | 
			
		||||
			// Page index?
 | 
			
		||||
			if (!empty($pager))
 | 
			
		||||
				PageIndexWidget::paginate($pager);
 | 
			
		||||
 | 
			
		||||
			// Form controls?
 | 
			
		||||
			if (isset($this->_t->form_below))
 | 
			
		||||
				$this->showForm($this->_t->form_below);
 | 
			
		||||
 | 
			
		||||
			echo '
 | 
			
		||||
				</div>';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!empty($title))
 | 
			
		||||
			echo '
 | 
			
		||||
			</div>';
 | 
			
		||||
		echo '
 | 
			
		||||
					</tbody>';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected function showForm($form)
 | 
			
		||||
	protected function renderInlineForm($form)
 | 
			
		||||
	{
 | 
			
		||||
		if (!isset($form['is_embed']))
 | 
			
		||||
			echo '
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user