121 lines
4.1 KiB
PHTML
121 lines
4.1 KiB
PHTML
<?php
|
|
use MintyPHP\Router;
|
|
|
|
$canCreatePermissions = (bool) ($canCreatePermissions ?? false);
|
|
$toolbarFilterSchema = is_array($toolbarFilterSchema ?? null) ? $toolbarFilterSchema : [];
|
|
$searchToolbarFilterSchema = is_array($searchToolbarFilterSchema ?? null) ? $searchToolbarFilterSchema : [];
|
|
$drawerToolbarFilterSchema = is_array($drawerToolbarFilterSchema ?? null) ? $drawerToolbarFilterSchema : [];
|
|
$toolbarFilterState = is_array($toolbarFilterState ?? null) ? $toolbarFilterState : [];
|
|
$filterChipMeta = is_array($filterChipMeta ?? null) ? $filterChipMeta : [];
|
|
$clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchema : [];
|
|
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
|
|
?>
|
|
<?php
|
|
$breadcrumbs = [
|
|
['label' => t('Home'), 'path' => 'admin'],
|
|
['label' => t('Permissions')],
|
|
];
|
|
require templatePath('partials/app-breadcrumb.phtml');
|
|
?>
|
|
<?php
|
|
$listTitle = t('Permissions');
|
|
ob_start();
|
|
?>
|
|
<?php if ($canCreatePermissions): ?>
|
|
<a role="button" class="primary" href="admin/permissions/create">
|
|
<i class="bi bi-plus"></i> <?php e(t('Create permission')); ?>
|
|
</a>
|
|
<?php endif; ?>
|
|
<?php
|
|
$listTitleActionsHtml = ob_get_clean();
|
|
require templatePath('partials/app-list-titlebar.phtml');
|
|
?>
|
|
<?php
|
|
$filterUiNamespace = 'permissions';
|
|
require templatePath('partials/app-list-filters.phtml');
|
|
?>
|
|
<div class="app-list-table">
|
|
<div id="permissions-grid"></div>
|
|
</div>
|
|
|
|
<script src="<?php e(asset('vendor/gridjs/gridjs.umd.js')); ?>"></script>
|
|
<script type="module">
|
|
import { initStandardListPage } from "<?php e(assetVersion('js/core/app-grid-factory.js')); ?>";
|
|
import { badgeHtml, getAppBase } from "<?php e(assetVersion('js/pages/app-list-utils.js')); ?>";
|
|
|
|
const appBase = getAppBase();
|
|
const gridSearch = <?php gridJsonForJs($searchConfig); ?>;
|
|
const filterSchema = <?php gridJsonForJs($clientFilterSchema); ?>;
|
|
const filterChipMeta = <?php gridJsonForJs($filterChipMeta); ?>;
|
|
const labels = {
|
|
active: "<?php e(t('Active')); ?>",
|
|
inactive: "<?php e(t('Inactive')); ?>",
|
|
system: "<?php e(t('System')); ?>"
|
|
};
|
|
|
|
const initPermissionsGrid = () => {
|
|
const gridOptions = {
|
|
gridjs: window.gridjs,
|
|
container: '#permissions-grid',
|
|
dataUrl: 'admin/permissions/data',
|
|
appBase,
|
|
columns: [
|
|
{ name: "<?php e(t('Description')); ?>", sort: true },
|
|
{ name: "<?php e(t('Permission key')); ?>", sort: true },
|
|
{
|
|
name: "<?php e(t('Status')); ?>",
|
|
sort: true,
|
|
formatter: (cell) => cell
|
|
? gridjs.html(`<span class="badge" data-variant="success">${labels.active}</span>`)
|
|
: gridjs.html(`<span class="badge" data-variant="danger">${labels.inactive}</span>`)
|
|
},
|
|
{
|
|
name: "<?php e(t('System')); ?>",
|
|
sort: false,
|
|
formatter: (cell) => cell
|
|
? gridjs.html(`<span class="badge" data-variant="neutral">${labels.system}</span>`)
|
|
: gridjs.html('')
|
|
},
|
|
{ name: "<?php e(t('Created')); ?>", sort: true, formatter: (cell) => badgeHtml(gridjs, cell) },
|
|
{ name: 'ID', hidden: true }
|
|
],
|
|
sortColumns: ['description', 'key', 'active', null, 'created', null],
|
|
paginationLimit: 10,
|
|
language: <?php MintyPHP\Buffer::get('grid_lang'); ?>,
|
|
mapData: (data) => data.data.map((row) => [
|
|
row.description,
|
|
row.key,
|
|
row.active,
|
|
row.is_system,
|
|
row.created,
|
|
row.id
|
|
]),
|
|
rowDblClick: {
|
|
getUrl: (row) => {
|
|
const id = row?.cells?.[5]?.data;
|
|
return id ? new URL(`admin/permissions/edit/${id}`, appBase).toString() : '';
|
|
}
|
|
},
|
|
search: gridSearch,
|
|
filterSchema,
|
|
urlSync: true
|
|
};
|
|
|
|
const { gridConfig } = initStandardListPage({
|
|
grid: gridOptions,
|
|
filters: {
|
|
mode: 'drawer',
|
|
chipMeta: filterChipMeta,
|
|
watchInputs: ['#permission-search']
|
|
}
|
|
});
|
|
if (!gridConfig || !gridConfig.grid) {
|
|
console.warn('Permissions grid init failed');
|
|
return null;
|
|
}
|
|
return gridConfig;
|
|
};
|
|
|
|
initPermissionsGrid();
|
|
</script>
|