Management controllers: make format functions first-level

This commit is contained in:
Aaron van Geffen 2025-01-08 18:31:29 +01:00
parent 6ca3ee6d9d
commit 9740416cb2
6 changed files with 70 additions and 111 deletions

View File

@ -35,18 +35,14 @@ class ManageAlbums extends HTMLController
'tag' => [
'header' => 'Album',
'is_sortable' => true,
'format' => [
'link' => BASEURL . '/editalbum/?id={ID_TAG}',
'data' => 'tag',
],
'value' => 'tag',
],
'slug' => [
'header' => 'Slug',
'is_sortable' => true,
'format' => [
'link' => BASEURL . '/editalbum/?id={ID_TAG}',
'data' => 'slug',
],
'value' => 'slug',
],
'count' => [
'header' => '# Photos',

View File

@ -38,20 +38,14 @@ class ManageAssets extends HTMLController
'checkbox' => [
'header' => '<input type="checkbox" id="selectall">',
'is_sortable' => false,
'format' => [
'type' => 'function',
'data' => function($row) {
return '<input type="checkbox" class="asset_select" name="delete[]" value="' . $row['id_asset'] . '">';
},
],
'format' => fn($row) =>
'<input type="checkbox" class="asset_select" name="delete[]" value="' . $row['id_asset'] . '">',
],
'thumbnail' => [
'header' => '&nbsp;',
'is_sortable' => false,
'cell_class' => 'text-center',
'format' => [
'type' => 'function',
'data' => function($row) {
'format' => function($row) {
$asset = Image::byRow($row);
$width = $height = 65;
if ($asset->isImage())
@ -72,7 +66,6 @@ class ManageAssets extends HTMLController
return sprintf('<img src="%s" style="width: %s; height: %s;">', $thumb, $width, $height);
},
],
],
'id_asset' => [
'value' => 'id_asset',
'header' => 'ID',
@ -87,18 +80,13 @@ class ManageAssets extends HTMLController
'value' => 'filename',
'header' => 'Filename',
'is_sortable' => true,
'format' => [
'type' => 'value',
'link' => BASEURL . '/editasset/?id={ID_ASSET}',
'data' => 'filename',
],
'value' => 'filename',
],
'id_user_uploaded' => [
'header' => 'User uploaded',
'is_sortable' => true,
'format' => [
'type' => 'function',
'data' => function($row) {
'format' => function($row) {
if (!empty($row['id_user']))
return sprintf('<a href="%s/edituser/?id=%d">%s</a>', BASEURL, $row['id_user'],
$row['first_name'] . ' ' . $row['surname']);
@ -106,13 +94,10 @@ class ManageAssets extends HTMLController
return 'n/a';
},
],
],
'dimensions' => [
'header' => 'Dimensions',
'is_sortable' => false,
'format' => [
'type' => 'function',
'data' => function($row) {
'format' => function($row) {
if (!empty($row['image_width']))
return $row['image_width'] . ' x ' . $row['image_height'];
else
@ -120,7 +105,6 @@ class ManageAssets extends HTMLController
},
],
],
],
'default_sort_order' => 'id_asset',
'default_sort_direction' => 'down',
'start' => $_GET['start'] ?? 0,

View File

@ -45,9 +45,9 @@ class ManageErrors extends HTMLController
'is_sortable' => true,
],
'message' => [
'format' => [
'type' => 'function',
'data' => function($row) {
'header' => 'Message / URL',
'is_sortable' => false,
'format' => function($row) {
return $row['message'] . '<br>' .
'<div><a onclick="this.parentNode.childNodes[1].style.display=\'block\';this.style.display=\'none\';">Show debug info</a>' .
'<pre style="display: none">' . htmlspecialchars($row['debug_info']) .
@ -55,10 +55,7 @@ class ManageErrors extends HTMLController
'<small><a href="' . BASEURL .
htmlspecialchars($row['request_uri']) . '">' .
htmlspecialchars($row['request_uri']) . '</a></small>';
}
],
'header' => 'Message / URL',
'is_sortable' => false,
},
],
'file' => [
'value' => 'file',
@ -89,10 +86,8 @@ class ManageErrors extends HTMLController
'uid' => [
'header' => 'UID',
'is_sortable' => true,
'format' => [
'link' => BASEURL . '/edituser/?id={ID_USER}',
'data' => 'id_user',
],
'value' => 'id_user',
],
],
'default_sort_order' => 'id_entry',

View File

@ -37,25 +37,19 @@ class ManageTags extends HTMLController
'tag' => [
'header' => 'Tag',
'is_sortable' => true,
'format' => [
'link' => BASEURL . '/edittag/?id={ID_TAG}',
'data' => 'tag',
],
'value' => 'tag',
],
'slug' => [
'header' => 'Slug',
'is_sortable' => true,
'format' => [
'link' => BASEURL . '/edittag/?id={ID_TAG}',
'data' => 'slug',
],
'value' => 'slug',
],
'id_user_owner' => [
'header' => 'Owning user',
'is_sortable' => true,
'format' => [
'type' => 'function',
'data' => function($row) {
'format' => function($row) {
if (!empty($row['id_user']))
return sprintf('<a href="%s/edituser/?id=%d">%s</a>', BASEURL, $row['id_user'],
$row['first_name'] . ' ' . $row['surname']);
@ -63,7 +57,6 @@ class ManageTags extends HTMLController
return 'n/a';
},
],
],
'count' => [
'header' => 'Cardinality',
'is_sortable' => true,

View File

@ -37,26 +37,20 @@ class ManageUsers extends HTMLController
'surname' => [
'header' => 'Last name',
'is_sortable' => true,
'format' => [
'link' => BASEURL . '/edituser/?id={ID_USER}',
'data' => 'surname',
],
'value' => 'surname',
],
'first_name' => [
'header' => 'First name',
'is_sortable' => true,
'format' => [
'link' => BASEURL . '/edituser/?id={ID_USER}',
'data' => 'first_name',
],
'value' => 'first_name',
],
'slug' => [
'header' => 'Slug',
'is_sortable' => true,
'format' => [
'link' => BASEURL . '/edituser/?id={ID_USER}',
'data' => 'slug',
],
'value' => 'slug',
],
'emailaddress' => [
'value' => 'emailaddress',
@ -82,12 +76,7 @@ class ManageUsers extends HTMLController
'is_admin' => [
'is_sortable' => true,
'header' => 'Admin?',
'format' => [
'type' => 'function',
'data' => function($row) {
return $row['is_admin'] ? 'yes' : 'no';
}
],
'format' => fn($row) => $row['is_admin'] ? 'yes' : 'no',
],
],
'default_sort_order' => 'id_user',

View File

@ -192,7 +192,9 @@ class GenericTable
foreach ($options['columns'] as $column)
{
// Process formatting
if (isset($column['format']))
if (isset($column['format']) && is_callable($column['format']))
$value = $column['format']($row);
elseif (isset($column['format']))
$value = self::processFormatting($column['format'], $row);
else
$value = $row[$column['value']];