format href to link if it is a linker array

This commit is contained in:
envoyr
2022-02-24 15:38:10 +01:00
parent dcdc63679c
commit 9b184a758e
6 changed files with 93 additions and 8 deletions

View File

@@ -82,9 +82,11 @@ class Listing
// Set all actions for row
if (isset($tabellisting['actions'])) {
$actions = self::setLinks($tabellisting['actions'], $item);
$rows[$key]['action'] = [
'type' => 'actions',
'data' => $tabellisting['actions'],
'data' => $actions
];
}
}
@@ -92,6 +94,31 @@ class Listing
return $rows;
}
private static function setLinks($actions, array $item)
{
$linker = UI::getLinker();
// Check each action for a href
foreach ($actions as $key => $action) {
// Set link if href is an array
if (isset($action['href']) && is_array($action['href'])) {
// Search for "columns" in our href array
foreach ($action['href'] as $href_key => $href_value) {
$length = strlen(':');
if (substr($href_value, 0, $length) === ':') {
$column = ltrim($href_value, ':');
$action['href'][$href_key] = $item[$column];
}
}
// Set actual link from linker
$actions[$key]['href'] = $linker->getLink($action['href']);
}
}
return $actions;
}
public static function getVisibleColumnsForListing($listing, $default_columns)
{
// Hier käme dann die Logik, die das aus der DB zieht ...

View File

@@ -4,6 +4,8 @@ declare(strict_types=1);
namespace Froxlor\UI\Panel;
use Froxlor\UI\Linker;
class UI
{
@@ -217,7 +219,7 @@ class UI
self::$linker = $linker;
}
public static function getLinker()
public static function getLinker(): Linker
{
return self::$linker;
}

View File

@@ -66,11 +66,21 @@ return [
'actions' => [
'delete' => [
'icon' => 'fa fa-trash',
'href' => '#',
'href' => [
'section' => 'admins',
'page' => 'admins',
'action' => 'delete',
'id' => ':adminid'
],
],
'edit' => [
'text' => 'Edit',
'href' => '#',
'href' => [
'section' => 'admins',
'page' => 'admins',
'action' => 'edit',
'id' => ':adminid'
],
]
],
'contextual_class' => [

View File

@@ -65,5 +65,25 @@ return [
'c.diskspace',
'c.traffic',
]),
'actions' => [
'delete' => [
'icon' => 'fa fa-trash',
'href' => [
'section' => 'customers',
'page' => 'customers',
'action' => 'delete',
'id' => ':customerid'
],
],
'edit' => [
'text' => 'Edit',
'href' => [
'section' => 'customers',
'page' => 'customers',
'action' => 'edit',
'id' => ':customerid'
],
]
],
]
];

View File

@@ -57,11 +57,37 @@ return [
'actions' => [
'delete' => [
'icon' => 'fa fa-trash',
'href' => '#',
'href' => [
'section' => 'domains',
'page' => 'domains',
'action' => 'delete',
'id' => ':id'
],
],
'edit' => [
'icon' => 'fa fa-edit',
'href' => '#',
'text' => 'Edit',
'href' => [
'section' => 'domains',
'page' => 'domains',
'action' => 'edit',
'id' => ':id'
],
],
'logfiles' => [
'icon' => 'fa fa-file',
'href' => [
'section' => 'domains',
'page' => 'logfiles',
'domain_id' => ':id'
],
],
'domaindnseditor' => [
'icon' => 'fa fa-globe',
'href' => [
'section' => 'domains',
'page' => 'domaindnseditor',
'domain_id' => ':id'
],
]
]
]