diff --git a/admin_ipsandports.php b/admin_ipsandports.php index 0eb6ac90..dbe549d9 100644 --- a/admin_ipsandports.php +++ b/admin_ipsandports.php @@ -37,39 +37,24 @@ if ($page == 'ipsandports' || $page == 'overview') { if ($action == '') { $log->logAction(\Froxlor\FroxlorLogger::ADM_ACTION, LOG_NOTICE, "viewed admin_ipsandports"); - $fields = array( - 'ip' => $lng['admin']['ipsandports']['ip'], - 'port' => $lng['admin']['ipsandports']['port'] - ); + $ipsandports_list_data = include_once dirname(__FILE__) . '/lib/tablelisting/admin/tablelisting.ipsandports.php'; + try { - // get total count - $json_result = IpsAndPorts::getLocal($userinfo)->listingCount(); - $result = json_decode($json_result, true)['data']; + // get collection + $collection = new \Froxlor\UI\Collection(\Froxlor\Api\Commands\IpsAndPorts::class, $userinfo); // initialize pagination and filtering - $paging = new \Froxlor\UI\Pagination($userinfo, $fields, $result); - // get list - $json_result = IpsAndPorts::getLocal($userinfo, $paging->getApiCommandParams())->listing(); + $paging = new \Froxlor\UI\Pagination($userinfo, $ipsandports_list_data['ipsandports_list']['columns'], $collection->count()); + // get filtered collection + $collection = new \Froxlor\UI\Collection(\Froxlor\Api\Commands\IpsAndPorts::class, $userinfo, $paging->getApiCommandParams()); } catch (Exception $e) { \Froxlor\UI\Response::dynamic_error($e->getMessage()); } $result = json_decode($json_result, true)['data']; - $ipsandports = ''; - $sortcode = $paging->getHtmlSortCode($lng); - $arrowcode = $paging->getHtmlArrowCode($filename . '?page=' . $page . '&s=' . $s); - $searchcode = $paging->getHtmlSearchCode($lng); - $pagingcode = $paging->getHtmlPagingCode($filename . '?page=' . $page . '&s=' . $s); - $count = 0; - - foreach ($result['list'] as $row) { - $row = \Froxlor\PhpHelper::htmlentitiesArray($row); - if (filter_var($row['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - $row['ip'] = '[' . $row['ip'] . ']'; - } - eval("\$ipsandports.=\"" . \Froxlor\UI\Template::getTemplate("ipsandports/ipsandports_ipandport") . "\";"); - $count++; - } - eval("echo \"" . \Froxlor\UI\Template::getTemplate("ipsandports/ipsandports") . "\";"); + UI::twigBuffer('user/table.html.twig', [ + 'listing' => \Froxlor\UI\Listing::format($collection, $ipsandports_list_data['ipsandports_list']), + ]); + UI::twigOutputBuffer(); } elseif ($action == 'delete' && $id != 0) { try { $json_result = IpsAndPorts::getLocal($userinfo, array( diff --git a/lib/tablelisting/admin/tablelisting.ipsandports.php b/lib/tablelisting/admin/tablelisting.ipsandports.php new file mode 100644 index 00000000..8ebf4abd --- /dev/null +++ b/lib/tablelisting/admin/tablelisting.ipsandports.php @@ -0,0 +1,77 @@ + (2010-) + * @author Maurice Preuß + * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt + * @package Tabellisting + * + */ + +return [ + 'ipsandports_list' => [ + 'title' => $lng['admin']['ipsandports']['ipsandports'], + 'icon' => 'fa-solid fa-user', + 'columns' => [ + 'ip' => [ + 'label' => $lng['admin']['ipsandports']['ip'], + 'column' => 'ip', + ], + 'port' => [ + 'label' => $lng['admin']['ipsandports']['port'], + 'column' => 'port', + ], + 'listen' => [ + 'label' => 'Listen', + 'column' => 'listen_statement', + 'format_callback' => [\Froxlor\UI\Callbacks\Text::class, 'boolean'], + 'visible' => \Froxlor\Settings::Get('system.webserver') != 'nginx' + ], + 'namevirtualhost' => [ + 'label' => 'NameVirtualHost', + 'column' => 'namevirtualhost_statement', + 'format_callback' => [\Froxlor\UI\Callbacks\Text::class, 'boolean'], + 'visible' => \Froxlor\Settings::Get('system.webserver') == 'apache2' && (int) \Froxlor\Settings::Get('system.apache24') == 0 + ], + 'vhostcontainer' => [ + 'label' => 'vHost-Container', + 'column' => 'vhostcontainer', + 'format_callback' => [\Froxlor\UI\Callbacks\Text::class, 'boolean'] + ], + 'specialsettings' => [ + 'label' => 'Specialsettings', + 'column' => 'specialsettings', + 'format_callback' => [\Froxlor\UI\Callbacks\Text::class, 'boolean'] + ], + 'servername' => [ + 'label' => 'ServerName', + 'column' => 'vhostcontainer_servername_statement', + 'format_callback' => [\Froxlor\UI\Callbacks\Text::class, 'boolean'], + 'visible' => \Froxlor\Settings::Get('system.webserver') == 'apache2' + ], + 'ssl' => [ + 'label' => 'SSL', + 'column' => 'ssl', + 'format_callback' => [\Froxlor\UI\Callbacks\Text::class, 'boolean'] + ], + ], + 'visible_columns' => \Froxlor\UI\Listing::getVisibleColumnsForListing('ipsandports_list', [ + 'ip', + 'port', + 'listen', + 'namevirtualhost', + 'vhostcontainer', + 'specialsettings', + 'servername', + 'ssl' + ]), + ] +]; diff --git a/templates/Froxlor/table/callbacks.html.twig b/templates/Froxlor/table/callbacks.html.twig index 1ffbe3c8..8daee937 100644 --- a/templates/Froxlor/table/callbacks.html.twig +++ b/templates/Froxlor/table/callbacks.html.twig @@ -12,8 +12,8 @@ {% macro boolean(data) %} {% if (data) %} - + {% else %} - + {% endif %} -{% endmacro %} \ No newline at end of file +{% endmacro %}