Michael Friedrich 34bd8e14c3 Enhance the documentation and fix outdated information (preferences, etc.)
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
2017-09-29 11:01:37 +02:00

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>';
    }
}

How it looks

Screenshot