cerebrate/templates/element/Settings/panel.php

74 lines
2.5 KiB
PHP

<?php
if (!function_exists('isLeaf')) {
function isLeaf($setting)
{
return !empty($setting['name']) && !empty($setting['type']);
}
}
if (!function_exists('getResolvableID')) {
function getResolvableID($sectionName, $panelName = false)
{
$id = sprintf('sp-%s', preg_replace('/(\.|\W)/', '_', h($sectionName)));
if (!empty($panelName)) {
$id .= '-' . preg_replace('/(\.|\W)/', '_', h($panelName));
}
return $id;
}
}
$panelHTML = '';
if (isLeaf($panelSettings)) {
$singleSetting = $this->element('Settings/fieldGroup', [
'panelName' => $panelName,
'panelSettings' => $panelSettings,
'settingName' => $panelName,
'setting' => $panelSettings,
]);
$panelHTML = "<div>{$singleSetting}</div>";
} else {
$panelID = getResolvableID($sectionName, $panelName);
$panelHTML .= sprintf('<h4 id="%s"><a class="text-reset text-decoration-none" href="#%s">%s%s</a></h4>',
$panelID,
$panelID,
!empty($panelSettings['_icon']) ? $this->Bootstrap->icon($panelSettings['_icon'], ['class' => 'me-1']) : '',
h($panelName)
);
if (!empty($panelSettings['_description'])) {
$panelHTML .= $this->Bootstrap->node('div', [
'class' => ['mb-1',],
], h($panelSettings['_description']));
}
$groupIssueSeverity = false;
foreach ($panelSettings as $singleSettingName => $singleSetting) {
if (substr($singleSettingName, 0, 1) == '_') {
continue;
}
$singleSettingHTML = $this->element('Settings/fieldGroup', [
'panelName' => $panelName,
'panelSettings' => $panelSettings,
'settingName' => $singleSettingName,
'setting' => $singleSetting,
]);
$panelHTML .= sprintf('<div class="ms-3">%s</div>', $singleSettingHTML);
if (!empty($singleSetting['error'])) {
$settingVariant = $this->get('variantFromSeverity')[$singleSetting['severity']];
if ($groupIssueSeverity != 'danger') {
if ($groupIssueSeverity != 'warning') {
$groupIssueSeverity = $settingVariant;
}
}
}
}
$panelHTML = $this->Bootstrap->node('div', [
'class' => [
'shadow',
'p-2',
'mb-4',
'rounded',
'settings-group',
'callout',
(!empty($groupIssueSeverity) ? "callout-${groupIssueSeverity}" : ''),
],
], $panelHTML);
}
echo $panelHTML;