Files
oberstufe-alt/typo3conf/ext/compatibility6/Classes/ContentObject/TableRenderer.php
2018-04-02 08:07:38 +02:00

265 lines
6.6 KiB
PHP

<?php
namespace TYPO3\CMS\Compatibility6\ContentObject;
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
/**
* Rendering of tables for content positioning
*
* @see ContentObjectRenderer::CTABLE()
*/
class TableRenderer
{
/**
* offset, x
*
* @var int
*/
public $offX = 0;
/**
* offset, y
*
* @var int
*/
public $offY = 0;
/**
* top menu
*
* @var string
*/
public $tm = '';
/**
* left menu
*
* @var string
*/
public $lm = '';
/**
* right menu
*
* @var string
*/
public $rm = '';
/**
* bottom menu
*
* @var string
*/
public $bm = '';
/**
* content
*
* @var string
*/
public $content = '';
/**
* top menu TDparams
*
* @var string
*/
public $tmTDparams = 'valign="top"';
/**
* left menu TDparams
*
* @var string
*/
public $lmTDparams = 'valign="top"';
/**
* right menu TDparams
*
* @var string
*/
public $rmTDparams = 'valign="top"';
/**
* bottom menu TDparams
*
* @var string
*/
public $bmTDparams = 'valign="top"';
/**
* content TDparams
*
* @var string
*/
public $contentTDparams = 'valign="top"';
/**
* content margin, left
*
* @var int
*/
public $cMl = 1;
/**
* content margin, right
*
* @var int
*/
public $cMr = 1;
/**
* content margin, top
*
* @var int
*/
public $cMt = 0;
/**
* content margin, bottom
*
* @var int
*/
public $cMb = 1;
/**
* Places a little gif-spacer in the bottom of the content frame
*
* @var int
*/
public $contentW = 0;
/**
* @var string
*/
public $tableParams = 'border="0" cellspacing="0" cellpadding="0"';
/**
* Wrapping internal vars ->tm, ->lm, ->rm, ->bm and ->content in a table where each content part is stored in a cell.
* The two arguments to this function defines some offsets and margins to use in the arrangement of the content in the table.
*
* @param string $offset List of offset parameters; x,y
* @param string $cMargins List of margin parameters; left, top, right, bottom
* @return string The content strings wrapped in a <table> as the parameters defined
* @see \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::CTABLE()
*/
public function start($offset, $cMargins)
{
$offArr = \TYPO3\CMS\Core\Utility\GeneralUtility::intExplode(',', $offset);
$cMargArr = \TYPO3\CMS\Core\Utility\GeneralUtility::intExplode(',', $cMargins);
$cols = 0;
$rows = 0;
if ($this->lm) {
$cols++;
}
if ($this->rm) {
$cols++;
}
if ($cMargArr[0]) {
$cols++;
}
if ($cMargArr[2]) {
$cols++;
}
if ($cMargArr[1] || $cMargArr[3] || $this->tm || $this->bm || $this->content || $this->contentW) {
$cols++;
}
if ($cMargArr[1]) {
$rows++;
}
if ($cMargArr[3]) {
$rows++;
}
if ($this->tm) {
$rows++;
}
if ($this->bm) {
$rows++;
}
if ($this->content) {
$rows++;
}
if ($this->contentW) {
$rows++;
}
if (!$rows && $cols) {
// If there are no rows in the middle but still som columns...
$rows = 1;
}
if ($rows && $cols) {
$res = LF . '<table ' . $this->tableParams . '>';
// Top offset:
if ($offArr[1]) {
$xoff = $offArr[0] ? 1 : 0;
if ($cols + $xoff > 1) {
$colspan = ' colspan="' . ($cols + $xoff) . '"';
}
$res .= '<tr><td' . $colspan . '><span style="width: 1px; height: ' . $offArr[1] . 'px;"></span></td></tr>';
}
// The rows:
if ($rows > 1) {
$rowspan = ' rowspan="' . $rows . '"';
}
$res .= '<tr>';
if ($offArr[0]) {
$res .= '<td' . $rowspan . '><span style="width: ' . $offArr[0] . 'px; height: 1px;"></span></td>';
}
if ($this->lm) {
$res .= '<td' . $rowspan . ' ' . $this->lmTDparams . '>' . $this->lm . '</td>';
}
if ($cMargArr[0]) {
$res .= '<td' . $rowspan . '><span style="width: ' . $cMargArr[0] . 'px; height: 1px;"></span></td>';
}
// Content...
$middle = array();
if ($this->tm) {
$middle[] = '<td ' . $this->tmTDparams . '>' . $this->tm . '</td>';
}
if ($cMargArr[1]) {
$middle[] = '<td><span style="width: 1px; height: ' . $cMargArr[1] . 'px;"></span></td>';
}
if ($this->content) {
$middle[] = '<td ' . $this->contentTDparams . '>' . $this->content . '</td>';
}
if ($cMargArr[3]) {
$middle[] = '<td><span style="width: 1px; height: ' . $cMargArr[3] . 'px;"></span></td>';
}
if ($this->bm) {
$middle[] = '<td ' . $this->bmTDparams . '>' . $this->bm . '</td>';
}
if ($this->contentW) {
$middle[] = '<td><span style="width: ' . $this->contentW . 'px; height: 1px;"></span></td>';
}
if (isset($middle[0])) {
$res .= $middle[0];
}
// Left of content
if ($cMargArr[2]) {
$res .= '<td' . $rowspan . '><span style="width: ' . $cMargArr[2] . 'px; height: 1px;"></span></td>';
}
if ($this->rm) {
$res .= '<td' . $rowspan . ' ' . $this->rmTDparams . '>' . $this->rm . '</td>';
}
$res .= '</tr>';
// More than the two rows
$mCount = count($middle);
for ($a = 1; $a < $mCount; $a++) {
$res .= '<tr>' . $middle[$a] . '</tr>';
}
$res .= '</table>';
return $res;
}
}
}