Files
cms-backend/Classes/View/BackendLayout/Grid/Grid.php
T

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;
}
}