diff --git a/application/controllers/HostController.php b/application/controllers/HostController.php index d7206c48..9f4a753c 100644 --- a/application/controllers/HostController.php +++ b/application/controllers/HostController.php @@ -64,6 +64,7 @@ class HostController extends Controller $this->addControl((new HostList([$this->host])) ->setViewMode('minimal') + ->setDetailActionsDisabled() ->setNoSubjectLink()); $this->addControl(new QuickActions($this->host)); diff --git a/application/controllers/ServiceController.php b/application/controllers/ServiceController.php index 8e5a285f..a67aa9dc 100644 --- a/application/controllers/ServiceController.php +++ b/application/controllers/ServiceController.php @@ -61,6 +61,7 @@ class ServiceController extends Controller $this->addControl((new ServiceList([$this->service])) ->setViewMode('minimal') + ->setDetailActionsDisabled() ->setNoSubjectLink()); $this->addControl(new QuickActions($this->service)); diff --git a/library/Icingadb/Widget/BaseHostListItem.php b/library/Icingadb/Widget/BaseHostListItem.php index 7d1527db..5183dcb0 100644 --- a/library/Icingadb/Widget/BaseHostListItem.php +++ b/library/Icingadb/Widget/BaseHostListItem.php @@ -34,11 +34,11 @@ abstract class BaseHostListItem extends StateListItem { parent::init(); - $this->setMultiselectFilter(Filter::equal('host.name', $this->item->name)); - $this->setDetailFilter(Filter::equal('name', $this->item->name)); - if ($this->list->getNoSubjectLink()) { $this->setNoSubjectLink(); } + + $this->list->addDetailFilterAttribute($this, Filter::equal('name', $this->item->name)) + ->addMultiselectFilterAttribute($this, Filter::equal('host.name', $this->item->name)); } } diff --git a/library/Icingadb/Widget/BaseItemList.php b/library/Icingadb/Widget/BaseItemList.php index 454c0244..0133a07a 100644 --- a/library/Icingadb/Widget/BaseItemList.php +++ b/library/Icingadb/Widget/BaseItemList.php @@ -6,9 +6,9 @@ namespace Icinga\Module\Icingadb\Widget; use Icinga\Module\Icingadb\Common\BaseFilter; use Icinga\Module\Icingadb\Common\BaseTableRowItem; +use Icinga\Module\Icingadb\Common\DetailActions; use InvalidArgumentException; use ipl\Html\BaseHtmlElement; -use ipl\Web\Url; /** * Base class for item lists @@ -18,8 +18,9 @@ use ipl\Web\Url; abstract class BaseItemList extends BaseHtmlElement { use BaseFilter; + use DetailActions; - protected $baseAttributes = ['class' => 'action-list item-list', 'data-base-target' => '_next']; + protected $baseAttributes = ['class' => 'item-list', 'data-base-target' => '_next']; /** @var iterable */ protected $data; @@ -41,6 +42,7 @@ abstract class BaseItemList extends BaseHtmlElement $this->addAttributes($this->baseAttributes); + $this->initializeDetailActions(); $this->init(); } @@ -55,20 +57,6 @@ abstract class BaseItemList extends BaseHtmlElement { } - protected function setMultiselectUrl(Url $url) - { - $this->addAttributes(['data-icinga-multiselect-url' => $url]); - - return $this; - } - - protected function setDetailUrl(Url $url) - { - $this->addAttributes(['data-icinga-detail-url' => $url]); - - return $this; - } - protected function assemble() { $itemClass = $this->getItemClass(); diff --git a/library/Icingadb/Widget/BaseServiceListItem.php b/library/Icingadb/Widget/BaseServiceListItem.php index 7cc2bea3..9d95f344 100644 --- a/library/Icingadb/Widget/BaseServiceListItem.php +++ b/library/Icingadb/Widget/BaseServiceListItem.php @@ -51,13 +51,15 @@ abstract class BaseServiceListItem extends StateListItem $this->setNoSubjectLink(); } - $this->setMultiselectFilter( + $this->list->addMultiselectFilterAttribute( + $this, Filter::all( Filter::equal('service.name', $this->item->name), Filter::equal('host.name', $this->item->host->name) ) ); - $this->setDetailFilter( + $this->list->addDetailFilterAttribute( + $this, Filter::all( Filter::equal('name', $this->item->name), Filter::equal('host.name', $this->item->host->name)