93 lines
2.1 KiB
PHP
93 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* 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!
|
|
*/
|
|
|
|
namespace TYPO3\CMS\Backend\View\BackendLayout\Grid;
|
|
|
|
use TYPO3\CMS\Backend\View\PageLayoutContext;
|
|
|
|
/**
|
|
* Grid
|
|
*
|
|
* Main rows-and-columns structure representing the rows and columns of
|
|
* a BackendLayout in object form. Contains getter methods to return rows
|
|
* and sum of "colspan" values assigned to columns in rows.
|
|
*
|
|
* Contains a tree of grid-related objects:
|
|
*
|
|
* - Grid
|
|
* - GridRow
|
|
* - GridColumn
|
|
* - GridColumnItem (one per record)
|
|
*
|
|
* Accessed in Fluid templates.
|
|
*
|
|
* @internal
|
|
*/
|
|
class Grid
|
|
{
|
|
/**
|
|
* @var GridRow[]
|
|
*/
|
|
protected array $rows = [];
|
|
|
|
public function __construct(
|
|
protected readonly PageLayoutContext $context,
|
|
) {}
|
|
|
|
public function getContext(): PageLayoutContext
|
|
{
|
|
return $this->context;
|
|
}
|
|
|
|
public function addRow(GridRow $row): void
|
|
{
|
|
$this->rows[] = $row;
|
|
}
|
|
|
|
/**
|
|
* @return GridRow[]
|
|
*/
|
|
public function getRows(): iterable
|
|
{
|
|
return $this->rows;
|
|
}
|
|
|
|
public function getColumns(): iterable
|
|
{
|
|
$columns = [];
|
|
foreach ($this->rows as $gridRow) {
|
|
$columns += $gridRow->getColumns();
|
|
}
|
|
return $columns;
|
|
}
|
|
|
|
public function getSpan(): int
|
|
{
|
|
if (!isset($this->rows[0])
|
|
|| ($this->context->getDrawingConfiguration()->isLanguageComparisonMode()
|
|
&& count($this->context->getDrawingConfiguration()->getSelectedLanguageIds()) > 1)
|
|
) {
|
|
return 1;
|
|
}
|
|
$span = 0;
|
|
foreach ($this->rows[0]->getColumns() as $column) {
|
|
$span += $column->getColSpan();
|
|
}
|
|
return $span ?: 1;
|
|
}
|
|
}
|