Controller::createColumnControl(): Use parameter for default columns

Add a parameter for default columns to be used if no columns
are set in the URL
This commit is contained in:
Bastian Lederer 2026-03-09 09:55:45 +01:00
parent ba688bb431
commit a5dfb07f9c
3 changed files with 11 additions and 25 deletions

View file

@ -70,7 +70,7 @@ class HostsController extends Controller
$limitControl,
viewModeSwitcherClass: TabularViewModeSwitcher::class
);
$columns = $this->createColumnControl($hosts, $viewModeSwitcher);
$columns = $this->createColumnControl($hosts, $viewModeSwitcher, ['host.name', 'host.state.output']);
$searchBar = $this->createSearchBar($hosts, [
$limitControl->getLimitParam(),
@ -296,9 +296,4 @@ class HostsController extends Controller
return new FeatureStatus('host', $summary->first());
}
protected function getDefaultColumns(): string
{
return 'host.name, host.state.output';
}
}

View file

@ -81,7 +81,7 @@ class ServicesController extends Controller
$limitControl,
viewModeSwitcherClass: TabularViewModeSwitcher::class
);
$columns = $this->createColumnControl($services, $viewModeSwitcher);
$columns = $this->createColumnControl($services, $viewModeSwitcher, ['service.name', 'service.state.output']);
$searchBar = $this->createSearchBar($services, [
$limitControl->getLimitParam(),
@ -494,9 +494,4 @@ class ServicesController extends Controller
return $problemToggle;
}
protected function getDefaultColumns(): string
{
return 'service.name, service.state.output';
}
}

View file

@ -79,26 +79,27 @@ class Controller extends CompatController
*
* @param Query $query
* @param ViewModeSwitcher $viewModeSwitcher
* @param array $defaultColumns
*
* @return array provided columns
*/
public function createColumnControl(Query $query, ViewModeSwitcher $viewModeSwitcher): array
public function createColumnControl(Query $query, ViewModeSwitcher $viewModeSwitcher, array $defaultColumns): array
{
// All of that is essentially what `ColumnControl::apply()` should do
$viewMode = $viewModeSwitcher->getViewMode();
$columnsDef = $this->params->shift('columns');
if (! $columnsDef) {
if ($viewMode === 'tabular') {
$columnsDef = $this->getDefaultColumns();
$columns = $defaultColumns;
} else {
return [];
}
}
$columns = [];
foreach (explode(',', $columnsDef) as $column) {
if ($column = trim($column)) {
$columns[] = $column;
} else {
$columns = [];
foreach (explode(',', $columnsDef) as $column) {
if ($column = trim($column)) {
$columns[] = $column;
}
}
}
@ -497,9 +498,4 @@ class Controller extends CompatController
->getPlugin('Zend_Controller_Plugin_ErrorHandler')
->setErrorHandlerModule('icingadb');
}
protected function getDefaultColumns(): string
{
return 'name, state.output';
}
}