# Kontext-Templates

## Einleitung

Kontext-Templates sind HTML-Dateien, die u.a. Makros enthalten. Dieses Dateien können als Kontextmenüs ("Rechtsklick"-Menüs) für die Objekte auf der Map benutzt werden.

Die Kontextmenüs befinden sich in `share/userfiles/templates/` relativ zum NagVis-Root-Verzeichnis. Die Templates sind wie folgt benannt: `<name>.context.html`. Es ist möglich, eine CSS-Datei zum Template hinzuzufügen, der Name lautet dann: `<name>.context.css`.

Es gibt einige sogenannte Makros in Kontextmenüs, die für alle Objekte verfügbar sind, und einige, die nur für spezielle Makros gelten. Alle Standardmakros sind nachfolgend aufgeführt.

## Allgemeines

Die folgenden Makros sind in Hover-Menüs für alle Objekttypen verfügbar:

Makro | Beschreibung
--- | ---
Allgemein
[obj_id] | ID des Objekts in JavaScript. Wird benötigt, um die objektspezifischen Teile zu lokalisieren, z.B. für eine manuelle Aktualisierung einer Statusinformation.
[type] | Typ des Objekts
[name] | Name des Objekts (Hostname, Hostgroupname, Servicegroupname, Mapname,...)
[backend_id] | Die backend_id des verwendeten Backends dieses Objekts.
[custom_1] | Das erste benutzerdefinierte Makro je Backend. Kann nützlich sein, um Backend-spezifische URLs zu setzen.
[custom_2] | Zweites benutzerdefiniertes Makro je Backend (s.o.).
[custom_3] | Drittes benutzerdefiniertes Makro je Backend (s.o.).
[map_name] | Name der aktuellen Map/Automap.
Sprachmakros
[lang_refresh_status] | Bezeichnung für die Auffrischung des Zustands des Objekts im Frontend.
[lang_schedule_downtime] | Bezeichnung für die Planung einer Ausfallzeit in Nagios.
[lang_reschedule_next_check] | Bezeichnung für die erneute Planung der nächsten Prüfung des Objekts in Nagios.
[lang_connect_by_ssh] | Label für die Verbindung eines Hosts per ssh.
Pfade
[html_base] | Absolute URL zur HTML-Basis (Default: /nagios/nagvis)
[html_cgi] | Absolute URL zu den Nagios-CGIs. Benutzt einen objektabhängigen Wert. Hängt vom verwendeten Backend ab. Wird kein backend-spezifischer Wert gesetzt, gilt der Default. (Default: /nagios/cgi-bin)
[html_templates] | Pfad zum Context-Templates-Verzeichnis (Default: /nagios/nagvis/nagvis/etc/templates/context)
[html_template_images] | Pfad zum Context-Template-Images-Verzeichnis (Default: /nagios/nagvis/nagvis/images/templates/context)

## Spezielle Makros

Es gibt Makros für Context-Templates eines bestimmten Typs. Diese Makros sollten zwischen "Section"-Makros stehen. Die "Section"-Makros definieren, dass der eingeschlossene Code entfernt wird, wenn das Hover-Template nicht für diesen Typ geparst wird.

Ein "Section"-Makro für Host-Makros sieht wie folgt aus:

    <!-- BEGIN host -->.+?<!-- END host -->

Nachfolgend finden Sie eine vollständige Liste der speziellen Makros.

### Host-Objekte

Makro | Beschreibung
--- | ---
[address] | Adresse des in Nagios konfigurierten Hosts
[pnp_hostname] | Hostname für Links zu PNP (Leerzeichen ersetzt)

### Service-Objekte

Makro | Beschreibung
--- | ---
[service_description] | Service-Beschreibung in Nagios
[pnp_service_description] | Service-Beschreibung für Links zu PNP (Leerzeichen ersetzt)

### Host- und Servicegroup-Objekte

Die Abschnittsmakros `<!-- BEGIN hostgroup -->` und `<!-- BEGIN servicegroup -->` existieren, um speziellen Template-Code für Hostgroup- und Servicegroup-Kontextmenüs zu ermöglichen. Beide bringen keine speziellen objektspezifischen Makros mit sich.

### Andere Abschnittsmakros

Es gibt einige andere spezielle Abschnittsmakros. Um bspw. Teile des Templates nur für Line-Objekts zu zeigen:

`<!-- BEGIN line -->This is only shown on line objects<!-- BEGIN servicegroup -->`

Abschnitt | Beschreibung
--- | ---
line | Dies nur für Line-Objekte zeigen.
stateful | Dies nur für "stateful"-Objekte zeigen.
not_automap | Dies nur für nicht-Automap-Ansichten zeigen (reguläre Maps).
locked | Dies nur für gesperrte Objekte zeigen.
unlocked | Dies nur für nicht gesperrte Objekte zeigen.
permitted_edit | Nur zeigen, wenn der Benutzer die Map editieren darf.