75 lines
1.3 KiB
PHP
75 lines
1.3 KiB
PHP
<?php
|
|
|
|
use Kirby\Toolkit\I18n;
|
|
|
|
return function (array $props) {
|
|
// load the general templates setting for all sections
|
|
$templates = $props['templates'] ?? null;
|
|
|
|
$section = function ($label, $status, $props) use ($templates) {
|
|
$defaults = [
|
|
'label' => $label,
|
|
'type' => 'pages',
|
|
'layout' => 'list',
|
|
'status' => $status
|
|
];
|
|
|
|
if ($props === true) {
|
|
$props = [];
|
|
}
|
|
|
|
if (is_string($props) === true) {
|
|
$props = [
|
|
'label' => $props
|
|
];
|
|
}
|
|
|
|
// inject the global templates definition
|
|
if (empty($templates) === false) {
|
|
$props['templates'] ??= $templates;
|
|
}
|
|
|
|
return array_replace_recursive($defaults, $props);
|
|
};
|
|
|
|
$sections = [];
|
|
|
|
$drafts = $props['drafts'] ?? [];
|
|
$unlisted = $props['unlisted'] ?? false;
|
|
$listed = $props['listed'] ?? [];
|
|
|
|
|
|
if ($drafts !== false) {
|
|
$sections['drafts'] = $section(
|
|
I18n::translate('pages.status.draft'),
|
|
'drafts',
|
|
$drafts
|
|
);
|
|
}
|
|
|
|
if ($unlisted !== false) {
|
|
$sections['unlisted'] = $section(
|
|
I18n::translate('pages.status.unlisted'),
|
|
'unlisted',
|
|
$unlisted
|
|
);
|
|
}
|
|
|
|
if ($listed !== false) {
|
|
$sections['listed'] = $section(
|
|
I18n::translate('pages.status.listed'),
|
|
'listed',
|
|
$listed
|
|
);
|
|
}
|
|
|
|
// cleaning up
|
|
unset(
|
|
$props['drafts'],
|
|
$props['unlisted'],
|
|
$props['listed'],
|
|
$props['templates']
|
|
);
|
|
|
|
return [...$props, 'sections' => $sections];
|
|
};
|