mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-05-14 11:40:10 +02:00
This applies a new structure for the main doc/ and modules/*/doc tree with 01-About.md 02-Installation.md ... This allows us to link from the main doc directory into module specific documentation entries. Furthermore table formatting, examples, and missing settings have been added where applicable. This patch also takes care about proper URL anchors and file names and directories. fixes #2950
2.3 KiB
2.3 KiB
Monitoring Module Hooks
Detail View Extension Hook
This hook can be used to easily extend the detail view of monitored objects (hosts and services).
How it works
Directory structure
icingaweb2/modules/example
library/Example/ProvidedHook/Monitoring/DetailviewExtension/Simple.php
run.php
Files
run.php
<?php
/** @var \Icinga\Application\Modules\Module $this */
$this->provideHook(
'monitoring/DetailviewExtension',
'Icinga\Module\Example\ProvidedHook\Monitoring\DetailviewExtension\Simple'
);
Simple.php
<?php
namespace Icinga\Module\Example\ProvidedHook\Monitoring\DetailviewExtension;
use Icinga\Module\Monitoring\Hook\DetailviewExtensionHook;
use Icinga\Module\Monitoring\Object\MonitoredObject;
class Simple extends DetailviewExtensionHook
{
public function getHtmlForObject(MonitoredObject $object)
{
$stats = array();
foreach (str_split($object->name) as $c) {
if (isset($stats[$c])) {
++$stats[$c];
} else {
$stats[$c] = 1;
}
}
ksort($stats);
$view = $this->getView();
$thead = '';
$tbody = '';
foreach ($stats as $c => $amount) {
$thead .= '<th>' . $view->escape($c) . '</th>';
$tbody .= '<td>' . $amount . '</td>';
}
return '<h2>'
. $view->escape(sprintf($view->translate('A %s named "%s"'), $object->getType(), $object->name))
. '</h2>'
. '<h3>Character stats</h3>'
. '<table>'
. '<thead>' . $thead . '</thead>'
. '<tbody>' . $tbody . '</tbody>'
. '</table>';
}
}