# Context Templates

## Introduction

Context templates are html files with some macros in them. These files can be used as context menus (right click menus) for the objects on the maps.

The context templates are located in `share/userfiles/templates/` relative to the nagvis root directory. The templates are named like this: `<name>.context.html`. It is possible to add a css file to the template, the name has to be: `<name>.context.css`.

There are some so called macros available in context menus of all object types and some which are only available for some special objects. All standard macros are listed below.

## General

The following macros are available in hover menus of all object types:

Macro | Description
--- | ---
General
[obj_id] | ID of object in JavaScript. Needed to locate the object specific parts e.g. to schedule a manual update of the state information.
[type] | Type of the object
[name] | Name of the object (Hostname, Hostgroupname, Servicegroupname, Mapname,...)
[backend_id] | Represents the backend_id of the used backend for this object.
[custom_1] | Represents the first custom macro which can be defined per backend. Might be useful to set backend individual URLs.
[custom_2] | Second custom macro. Same as above.
[custom_3] | Third custom macro. Same as above.
[map_name] | Name of the current map/automap.
Language macros
[lang_refresh_status] | Label for refreshing the status of the object in frontend.
[lang_schedule_downtime] | Label for scheduling a downtime in Nagios.
[lang_reschedule_next_check] | Label for re-scheduling the next check of the object in Nagios.
[lang_connect_by_ssh] | Label for connecting a host by ssh.
Paths
[html_base] | Absolute URL to HTML-Base (Default: /nagvis)
[html_cgi] | Absolute URL to the Nagios CGIs. Using object specific value. Depends on the used backend. If no backend specific value set the default value will be used. (Default: /nagios/cgi-bin)
[html_templates] | Path to context templates directory (Default: /nagvis/userfiles/templates)
[html_template_images] | Path to context template images directory (Default: /nagvis/userfiles/images/templates)

## Special macros

There are macros for context templates of a specified type. These macros should be surrounded by section macros. The section macros define that the included code will be removed if the hover template is not parsed for this type.

For example a section macro for host macros looks like this:

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

Below you can find a full list of the special macros.

### Host objects

Macro | Description
--- | ---
[address] | Address of the host configured in Nagios
[pnp_hostname] | Hostname with replaced blanks for links to PNP

### Service objects

Macro | Description
--- | ---
[service_description] | Service description in Nagios
[pnp_service_description] | Service description with replaced blanks for links to PNP

### Host- and Servicegroup objects

The section macros `<!-- BEGIN hostgroup -->` and `<!-- BEGIN servicegroup -->` exist to make special template code for hostgroup and servicegroup context menus possible. Both don't bring any special object specific macros with them.

### Other section macros

There are some other special section macros. For example to show parts of the template only for line objects:

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

Section | Description
--- | ---
line | Only show this for line objects.
stateful | Only show this for stateful objects.
not_automap | Only show this for non automap views (regular maps).
locked | Only show for locked objects.
unlocked | Only show for unlocked objects.
permitted_edit | Only show when the user is able to edit the map.
permitted_perform | Only show when the user is able to perform actions.
action_* | Only show when this action is registered for this object.