Файл: contao-3.5.8/system/modules/core/elements/ContentTable.php
Строк: 52
<?php
/**
* Contao Open Source CMS
*
* Copyright (c) 2005-2016 Leo Feyer
*
* @license LGPL-3.0+
*/
namespace Contao;
/**
* Front end content element "table".
*
* @author Leo Feyer <https://github.com/leofeyer>
*/
class ContentTable extends ContentElement
{
/**
* Template
* @var string
*/
protected $strTemplate = 'ce_table';
/**
* Generate the content element
*/
protected function compile()
{
/** @var PageModel $objPage */
global $objPage;
$rows = deserialize($this->tableitems);
$nl2br = ($objPage->outputFormat == 'xhtml') ? 'nl2br_xhtml' : 'nl2br_html5';
$this->Template->id = 'table_' . $this->id;
$this->Template->summary = specialchars($this->summary);
$this->Template->useHeader = $this->thead ? true : false;
$this->Template->useFooter = $this->tfoot ? true : false;
$this->Template->useLeftTh = $this->tleft ? true : false;
$this->Template->sortable = $this->sortable ? true : false;
$arrHeader = array();
$arrBody = array();
$arrFooter = array();
// Table header
if ($this->thead)
{
foreach ($rows[0] as $i=>$v)
{
// Set table sort cookie
if ($this->sortable && $i == $this->sortIndex)
{
$co = 'TS_TABLE_' . $this->id;
$so = ($this->sortOrder == 'descending') ? 'desc' : 'asc';
if (Input::cookie($co) == '')
{
System::setCookie($co, $i . '|' . $so, 0);
}
}
// Add cell
$arrHeader[] = array
(
'class' => 'head_'.$i . (($i == 0) ? ' col_first' : '') . (($i == (count($rows[0]) - 1)) ? ' col_last' : '') . (($i == 0 && $this->tleft) ? ' unsortable' : ''),
'content' => (($v != '') ? $nl2br($v) : ' ')
);
}
array_shift($rows);
}
$this->Template->header = $arrHeader;
$limit = $this->tfoot ? (count($rows)-1) : count($rows);
// Table body
for ($j=0; $j<$limit; $j++)
{
$class_tr = '';
if ($j == 0)
{
$class_tr .= ' row_first';
}
if ($j == ($limit - 1))
{
$class_tr .= ' row_last';
}
$class_eo = (($j % 2) == 0) ? ' even' : ' odd';
foreach ($rows[$j] as $i=>$v)
{
$class_td = '';
if ($i == 0)
{
$class_td .= ' col_first';
}
if ($i == (count($rows[$j]) - 1))
{
$class_td .= ' col_last';
}
$arrBody['row_' . $j . $class_tr . $class_eo][] = array
(
'class' => 'col_'.$i . $class_td,
'content' => (($v != '') ? $nl2br($v) : ' ')
);
}
}
$this->Template->body = $arrBody;
// Table footer
if ($this->tfoot)
{
foreach ($rows[(count($rows)-1)] as $i=>$v)
{
$arrFooter[] = array
(
'class' => 'foot_'.$i . (($i == 0) ? ' col_first' : '') . (($i == (count($rows[(count($rows)-1)]) - 1)) ? ' col_last' : ''),
'content' => (($v != '') ? $nl2br($v) : ' ')
);
}
}
$this->Template->footer = $arrFooter;
}
}