summaryrefslogtreecommitdiffstats
path: root/library/Map/ProvidedHook/Monitoring
diff options
context:
space:
mode:
Diffstat (limited to 'library/Map/ProvidedHook/Monitoring')
-rw-r--r--library/Map/ProvidedHook/Monitoring/HostActions.php30
-rw-r--r--library/Map/ProvidedHook/Monitoring/ServiceActions.php28
2 files changed, 58 insertions, 0 deletions
diff --git a/library/Map/ProvidedHook/Monitoring/HostActions.php b/library/Map/ProvidedHook/Monitoring/HostActions.php
new file mode 100644
index 0000000..d64f743
--- /dev/null
+++ b/library/Map/ProvidedHook/Monitoring/HostActions.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Icinga\Module\Map\ProvidedHook\Monitoring;
+
+use Icinga\Module\Monitoring\DataView\Customvar;
+use Icinga\Web\Controller\ModuleActionController;
+use Icinga\Module\Monitoring\Hook\HostActionsHook;
+use Icinga\Module\Monitoring\Object\Host;
+use Icinga\Web\Navigation\Navigation;
+use Icinga\Web\Navigation\NavigationItem;
+use Icinga\Web\Url;
+
+class HostActions extends HostActionsHook
+{
+ public function getActionsForHost(Host $host)
+ {
+ $nav = new Navigation();
+
+ $host->fetchCustomvars();
+ if (array_key_exists("geolocation", $host->customvars)) {
+ $nav->addItem(new NavigationItem(t('Show on map'), array(
+ 'url' => Url::fromPath('map/', array('showHost' => $host->getName())),
+ 'target' => '_next',
+ 'icon' => 'globe',
+ )));
+ }
+
+ return $nav;
+ }
+}
diff --git a/library/Map/ProvidedHook/Monitoring/ServiceActions.php b/library/Map/ProvidedHook/Monitoring/ServiceActions.php
new file mode 100644
index 0000000..e29140d
--- /dev/null
+++ b/library/Map/ProvidedHook/Monitoring/ServiceActions.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Icinga\Module\Map\ProvidedHook\Monitoring;
+
+use Icinga\Module\Monitoring\Hook\ServiceActionsHook;
+use Icinga\Module\Monitoring\Object\Service;
+use Icinga\Web\Navigation\Navigation;
+use Icinga\Web\Navigation\NavigationItem;
+use Icinga\Web\Url;
+
+class ServiceActions extends ServiceActionsHook
+{
+ public function getActionsForService(Service $service)
+ {
+ $nav = new Navigation();
+
+ $service->fetchCustomvars();
+ if (array_key_exists("geolocation", $service->customvars)) {
+ $nav->addItem(new NavigationItem(t('Show on map'), array(
+ 'url' => Url::fromPath('map/', array('showHost' => $service->host_name . "!" . $service->getName())),
+ 'target' => '_next',
+ 'icon' => 'globe',
+ )));
+ }
+
+ return $nav;
+ }
+}