202 lines
8.3 KiB
PHP
202 lines
8.3 KiB
PHP
<?php
|
|
use Cake\Utility\Hash;
|
|
|
|
if (!empty($updateableTemplate)) {
|
|
$alertHtml = sprintf('<strong>%s</strong> %s', __('New meta-templates available!'), __n('There is one new template on disk that can be loaded in the database', 'There are {0} new templates on disk that can be loaded in the database:', count($updateableTemplate['new'])));
|
|
$alertList = Hash::combine(
|
|
$updateableTemplate,
|
|
null,
|
|
['%s :: %s', 'new.{s}.template.namespace', 'new.{s}.template.name'],
|
|
'new.{n}.template.namespace'
|
|
);
|
|
$alertList = array_map(function($entry) {
|
|
return h($entry);
|
|
}, $alertList);
|
|
$alertHtml .= $this->Html->nestedList($alertList);
|
|
echo $this->Bootstrap->alert([
|
|
'html' => $alertHtml,
|
|
'variant' => 'warning',
|
|
]);
|
|
}
|
|
|
|
echo $this->element('genericElements/IndexTable/index_table', [
|
|
'data' => [
|
|
'data' => $data,
|
|
'top_bar' => [
|
|
'children' => [
|
|
[
|
|
'type' => 'context_filters',
|
|
'context_filters' => $filteringContexts
|
|
],
|
|
[
|
|
'type' => 'search',
|
|
'button' => __('Search'),
|
|
'placeholder' => __('Enter value to search'),
|
|
'data' => '',
|
|
'searchKey' => 'value'
|
|
]
|
|
]
|
|
],
|
|
'fields' => [
|
|
[
|
|
'name' => '#',
|
|
'sort' => 'id',
|
|
'data_path' => 'id',
|
|
],
|
|
[
|
|
'name' => 'Enabled',
|
|
'sort' => 'enabled',
|
|
'data_path' => 'enabled',
|
|
'element' => 'toggle',
|
|
'url' => '/metaTemplates/toggle/{{0}}',
|
|
'url_params_vars' => ['id'],
|
|
'toggle_data' => [
|
|
'editRequirement' => [
|
|
'function' => function($row, $options) {
|
|
return true;
|
|
},
|
|
],
|
|
'skip_full_reload' => true
|
|
]
|
|
],
|
|
[
|
|
'name' => 'Default',
|
|
'sort' => 'is_default',
|
|
'data_path' => 'is_default',
|
|
'element' => 'toggle',
|
|
'url' => '/metaTemplates/toggle/{{0}}/{{1}}',
|
|
'url_params_vars' => [['datapath' => 'id'], ['raw' => 'is_default']],
|
|
'toggle_data' => [
|
|
'editRequirement' => [
|
|
'function' => function($row, $options) {
|
|
return true;
|
|
}
|
|
],
|
|
'confirm' => [
|
|
'enable' => [
|
|
'titleHtml' => __('Make {{0}} the default template?'),
|
|
'bodyHtml' => $this->Html->nestedList([
|
|
__('Only one template per scope can be set as the default template'),
|
|
'{{0}}',
|
|
]),
|
|
'type' => '{{0}}',
|
|
'confirmText' => __('Yes, set as default'),
|
|
'arguments' => [
|
|
'titleHtml' => ['name'],
|
|
'bodyHtml' => [
|
|
[
|
|
'function' => function($row, $data) {
|
|
$conflictingTemplate = getConflictingTemplate($row, $data);
|
|
if (!empty($conflictingTemplate)) {
|
|
return sprintf(
|
|
"<span class=\"text-danger fw-bolder\">%s</span> %s.<br />
|
|
<ul><li><span class=\"fw-bolder\">%s</span> %s <span class=\"fw-bolder\">%s</span></li></ul>",
|
|
__('Conflict with:'),
|
|
$this->Html->link(
|
|
h($conflictingTemplate->name),
|
|
'/metaTemplates/view/' . h($conflictingTemplate->id),
|
|
['target' => '_blank']
|
|
),
|
|
__('By proceeding'),
|
|
h($conflictingTemplate->name),
|
|
__('will not be the default anymore')
|
|
);
|
|
}
|
|
return __('Current scope: {0}', h($row->scope));
|
|
},
|
|
'data' => [
|
|
'defaultTemplatePerScope' => $defaultTemplatePerScope
|
|
]
|
|
]
|
|
],
|
|
'type' => [
|
|
'function' => function($row, $data) {
|
|
$conflictingTemplate = getConflictingTemplate($row, $data);
|
|
if (!empty($conflictingTemplate)) {
|
|
return 'confirm-danger';
|
|
}
|
|
return 'confirm-warning';
|
|
},
|
|
'data' => [
|
|
'defaultTemplatePerScope' => $defaultTemplatePerScope
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'disable' => [
|
|
'titleHtml' => __('Remove {{0}} as the default template?'),
|
|
'type' => 'confirm-warning',
|
|
'confirmText' => __('Yes, do not set as default'),
|
|
'arguments' => [
|
|
'titleHtml' => ['name'],
|
|
]
|
|
]
|
|
]
|
|
]
|
|
],
|
|
[
|
|
'name' => __('Scope'),
|
|
'sort' => 'scope',
|
|
'data_path' => 'scope',
|
|
],
|
|
[
|
|
'name' => __('Name'),
|
|
'sort' => 'name',
|
|
'data_path' => 'name',
|
|
],
|
|
[
|
|
'name' => __('Namespace'),
|
|
'sort' => 'namespace',
|
|
'data_path' => 'namespace',
|
|
],
|
|
[
|
|
'name' => __('Version'),
|
|
'sort' => 'version',
|
|
'data_path' => 'version',
|
|
],
|
|
[
|
|
'name' => __('UUID'),
|
|
'sort' => 'uuid',
|
|
'data_path' => 'uuid'
|
|
],
|
|
[
|
|
'name' => __('Updateable'),
|
|
'data_path' => 'status',
|
|
'element' => 'update_status',
|
|
],
|
|
],
|
|
'title' => __('Meta Field Templates'),
|
|
'description' => __('The various templates used to enrich certain objects by a set of standardised fields.'),
|
|
'pull' => 'right',
|
|
'actions' => [
|
|
[
|
|
'url' => '/metaTemplates/view',
|
|
'url_params_data_paths' => ['id'],
|
|
'icon' => 'eye'
|
|
],
|
|
[
|
|
'open_modal' => '/metaTemplates/update/[onclick_params_data_path]',
|
|
'modal_params_data_path' => 'id',
|
|
'title' => __('Update Meta-Template'),
|
|
'icon' => 'download',
|
|
'complex_requirement' => [
|
|
'function' => function ($row, $options) {
|
|
return empty($row['status']['up_to_date']);
|
|
}
|
|
]
|
|
]
|
|
]
|
|
]
|
|
]);
|
|
|
|
function getConflictingTemplate($row, $data) {
|
|
if (!empty($data['data']['defaultTemplatePerScope'][$row->scope])) {
|
|
$conflictingTemplate = $data['data']['defaultTemplatePerScope'][$row->scope];
|
|
if (!empty($conflictingTemplate)) {
|
|
return $conflictingTemplate;
|
|
}
|
|
}
|
|
return [];
|
|
}
|
|
?>
|