mirror of
https://github.com/librenms/librenms.git
synced 2024-09-21 10:28:13 +00:00
Enable menu translation (#10298)
And better translation support for sensors, not complete
This commit is contained in:
parent
cc0fa745b2
commit
6ba05cdbbb
@ -617,7 +617,7 @@ class Sensor implements DiscoveryModule, PollerModule
|
||||
foreach ($sensors as $sensor) {
|
||||
$sensor_value = $data[$sensor['sensor_id']];
|
||||
|
||||
echo " {$sensor['sensor_descr']}: $sensor_value {$types[$sensor['sensor_class']]['unit']}\n";
|
||||
echo " {$sensor['sensor_descr']}: $sensor_value " . __('sensors.' . $sensor['sensor_class'] . '.unit') . PHP_EOL;
|
||||
|
||||
// update rrd and database
|
||||
$rrd_name = array(
|
||||
|
@ -129,125 +129,68 @@ class WirelessSensor extends Sensor
|
||||
*/
|
||||
public static function getTypes($valid = false, $device_id = null)
|
||||
{
|
||||
// Add new types here
|
||||
// Add new types here translations/descriptions/units in resources/lang/<lang>/wireless.php
|
||||
// FIXME I'm really bad with icons, someone please help!
|
||||
static $types = array(
|
||||
'ap-count' => array(
|
||||
'short' => 'APs',
|
||||
'long' => 'AP Count',
|
||||
'unit' => '',
|
||||
static $types = [
|
||||
'ap-count' => [
|
||||
'icon' => 'wifi',
|
||||
),
|
||||
'clients' => array(
|
||||
'short' => 'Clients',
|
||||
'long' => 'Client Count',
|
||||
'unit' => '',
|
||||
],
|
||||
'clients' => [
|
||||
'icon' => 'tablet',
|
||||
),
|
||||
'quality' => array(
|
||||
'short' => 'Quality',
|
||||
'long' => 'Quality',
|
||||
'unit' => '%',
|
||||
],
|
||||
'quality' => [
|
||||
'icon' => 'feed',
|
||||
),
|
||||
'capacity' => array(
|
||||
'short' => 'Capacity',
|
||||
'long' => 'Capacity',
|
||||
'unit' => '%',
|
||||
],
|
||||
'capacity' => [
|
||||
'icon' => 'feed',
|
||||
),
|
||||
'utilization' => array(
|
||||
'short' => 'Utilization',
|
||||
'long' => 'utilization',
|
||||
'unit' => '%',
|
||||
],
|
||||
'utilization' => [
|
||||
'icon' => 'percent',
|
||||
),
|
||||
'rate' => array(
|
||||
'short' => 'Rate',
|
||||
'long' => 'TX/RX Rate',
|
||||
'unit' => 'bps',
|
||||
],
|
||||
'rate' => [
|
||||
'icon' => 'tachometer',
|
||||
),
|
||||
'ccq' => array(
|
||||
'short' => 'CCQ',
|
||||
'long' => 'Client Connection Quality',
|
||||
'unit' => '%',
|
||||
],
|
||||
'ccq' => [
|
||||
'icon' => 'wifi',
|
||||
),
|
||||
'snr' => array(
|
||||
'short' => 'SNR',
|
||||
'long' => 'Signal-to-Noise Ratio',
|
||||
'unit' => 'dB',
|
||||
],
|
||||
'snr' => [
|
||||
'icon' => 'signal',
|
||||
),
|
||||
'ssr' => array(
|
||||
'short' => 'SSR',
|
||||
'long' => 'Signal Strength Ratio',
|
||||
'unit' => 'dB',
|
||||
],
|
||||
'ssr' => [
|
||||
'icon' => 'signal',
|
||||
),
|
||||
'mse' => array(
|
||||
'short' => 'MSE',
|
||||
'long' => 'Mean Square Error',
|
||||
'unit' => 'dB',
|
||||
],
|
||||
'mse' => [
|
||||
'icon' => 'signal',
|
||||
),
|
||||
'xpi' => array(
|
||||
'short' => 'XPI',
|
||||
'long' => 'Cross Polar Interference',
|
||||
'unit' => 'dB',
|
||||
],
|
||||
'xpi' => [
|
||||
'icon' => 'signal',
|
||||
),
|
||||
'rssi' => array(
|
||||
'short' => 'RSSI',
|
||||
'long' => 'Received Signal Strength Indicator',
|
||||
'unit' => 'dBm',
|
||||
],
|
||||
'rssi' => [
|
||||
'icon' => 'signal',
|
||||
),
|
||||
'power' => array(
|
||||
'short' => 'Power/Signal',
|
||||
'long' => 'TX/RX Power or Signal',
|
||||
'unit' => 'dBm',
|
||||
],
|
||||
'power' => [
|
||||
'icon' => 'bolt',
|
||||
),
|
||||
'noise-floor' => array(
|
||||
'short' => 'Noise Floor',
|
||||
'long' => 'Noise Floor',
|
||||
'unit' => 'dBm/Hz',
|
||||
],
|
||||
'noise-floor' => [
|
||||
'icon' => 'signal',
|
||||
),
|
||||
'errors' => array(
|
||||
'short' => 'Errors',
|
||||
'long' => 'Errors',
|
||||
'unit' => '',
|
||||
],
|
||||
'errors' => [
|
||||
'icon' => 'exclamation-triangle',
|
||||
'type' => 'counter',
|
||||
),
|
||||
'error-ratio' => array(
|
||||
'short' => 'Error Ratio',
|
||||
'long' => 'Bit/Packet Error Ratio',
|
||||
'unit' => '%',
|
||||
],
|
||||
'error-ratio' => [
|
||||
'icon' => 'exclamation-triangle',
|
||||
),
|
||||
'error-rate' => array(
|
||||
'short' => 'BER',
|
||||
'long' => 'Bit Error Rate',
|
||||
'unit' => 'bps',
|
||||
],
|
||||
'error-rate' => [
|
||||
'icon' => 'exclamation-triangle',
|
||||
),
|
||||
'frequency' => array(
|
||||
'short' => 'Frequency',
|
||||
'long' => 'Frequency',
|
||||
'unit' => 'MHz',
|
||||
],
|
||||
'frequency' => [
|
||||
'icon' => 'line-chart',
|
||||
),
|
||||
'distance' => array(
|
||||
'short' => 'Distance',
|
||||
'long' => 'Distance',
|
||||
'unit' => 'km',
|
||||
],
|
||||
'distance' => [
|
||||
'icon' => 'space-shuttle',
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
|
||||
if ($valid) {
|
||||
$sql = 'SELECT `sensor_class` FROM `wireless_sensors`';
|
||||
|
@ -34,9 +34,7 @@ class WirelessSensor extends DeviceRelatedModel
|
||||
|
||||
public function classDescr()
|
||||
{
|
||||
return collect(collect(\LibreNMS\Device\WirelessSensor::getTypes())
|
||||
->get($this->sensor_class, []))
|
||||
->get('short', ucwords(str_replace('_', ' ', $this->sensor_class)));
|
||||
return __("wireless.$this->sensor_class.short");
|
||||
}
|
||||
|
||||
public function icon()
|
||||
|
@ -58,7 +58,7 @@ function printEntPhysical($device, $ent, $level, $class)
|
||||
}
|
||||
|
||||
if ($ent['entPhysicalClass'] == 'sensor' && isset($sensor)) {
|
||||
echo ' ('.trim($sensor['sensor_current'] . ' ' . get_units_from_sensor($sensor)) . ')';
|
||||
echo ' (' . trim($sensor['sensor_current'] . ' ' . __('sensors.' . $sensor['sensor_class'] . '.unit')) . ')';
|
||||
}
|
||||
|
||||
if (isset($link)) {
|
||||
|
@ -38,7 +38,7 @@ foreach ($datas as $type) {
|
||||
}
|
||||
echo '>';
|
||||
|
||||
echo generate_link($types[$type]['short'], $wireless_link_array, array('metric' => $type));
|
||||
echo generate_link(__("wireless.$type.short"), $wireless_link_array, ['metric' => $type]);
|
||||
|
||||
echo '</span>';
|
||||
}
|
||||
@ -47,9 +47,10 @@ print_optionbar_end();
|
||||
|
||||
if ($vars['metric'] == 'overview') {
|
||||
foreach ($datas as $type) {
|
||||
$text = $types[$type]['long'];
|
||||
if (!empty($types[$type]['unit'])) {
|
||||
$text .= ' (' . $types[$type]['unit'] . ')';
|
||||
$text = __("wireless.$type.long");
|
||||
$unit = __("wireless.$type.unit");
|
||||
if (!empty($unit)) {
|
||||
$text .= " ($unit)";
|
||||
}
|
||||
|
||||
$graph_title = generate_link($text, $wireless_link_array, array('metric' => $type));
|
||||
@ -58,7 +59,7 @@ if ($vars['metric'] == 'overview') {
|
||||
include $config['install_dir'] . '/includes/html/print-device-graph.php';
|
||||
}
|
||||
} elseif (isset($types[$vars['metric']])) {
|
||||
$unit = $types[$vars['metric']]['unit'];
|
||||
$unit = __('wireless.' . $vars['metric'] . '.unit');
|
||||
$factor = 1;
|
||||
if ($unit == 'MHz') {
|
||||
$unit = 'Hz';
|
||||
|
@ -1676,46 +1676,6 @@ function return_number($value)
|
||||
return $value;
|
||||
}
|
||||
|
||||
function get_units_from_sensor($sensor)
|
||||
{
|
||||
switch ($sensor['sensor_class']) {
|
||||
case 'airflow':
|
||||
return 'cfm';
|
||||
case 'current':
|
||||
return 'A';
|
||||
case 'dbm':
|
||||
case 'signal':
|
||||
return 'dBm';
|
||||
case 'fanspeed':
|
||||
return 'rpm';
|
||||
case 'frequency':
|
||||
return 'Hz';
|
||||
case 'charge':
|
||||
case 'humidity':
|
||||
case 'load':
|
||||
return '%';
|
||||
case 'cooling':
|
||||
case 'power':
|
||||
return 'W';
|
||||
case 'power_consumed':
|
||||
return 'kWh';
|
||||
case 'pressure':
|
||||
return 'kPa';
|
||||
case 'runtime':
|
||||
return 'Min';
|
||||
case 'snr':
|
||||
return 'SNR';
|
||||
case 'state':
|
||||
return '#';
|
||||
case 'temperature':
|
||||
return '°C';
|
||||
case 'voltage':
|
||||
return 'V';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
function parse_entity_state($state, $value)
|
||||
{
|
||||
$data = array(
|
||||
|
169
resources/lang/en/sensors.php
Normal file
169
resources/lang/en/sensors.php
Normal file
@ -0,0 +1,169 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Sesnors Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to translate names and units of sensors
|
||||
|
|
||||
*/
|
||||
|
||||
'airflow' => [
|
||||
'short' => 'Airflow',
|
||||
'long' => 'Airflow',
|
||||
'unit' => 'cfm',
|
||||
'unit_long' => 'Cubic Feet per Minute',
|
||||
],
|
||||
'ber' => [
|
||||
'short' => 'BER',
|
||||
'long' => 'Bit Error Rate',
|
||||
'unit' => '',
|
||||
'unit_long' => '',
|
||||
],
|
||||
'charge' => [
|
||||
'short' => 'Charge',
|
||||
'long' => 'Charge Percent',
|
||||
'unit' => '%',
|
||||
'unit_long' => 'Percent',
|
||||
],
|
||||
'chromatic_dispersion' => [
|
||||
'short' => 'Chromatic Dispersion',
|
||||
'long' => 'Chromatic Dispersion',
|
||||
'unit' => 'ps/nm/km',
|
||||
'unit_long' => 'Picoseconds per Nanometer per Kilometer',
|
||||
],
|
||||
'cooling' => [
|
||||
'short' => 'Cooling',
|
||||
'long' => '',
|
||||
'unit' => 'W',
|
||||
'unit_long' => 'Watts',
|
||||
],
|
||||
'count' => [
|
||||
'short' => 'Count',
|
||||
'long' => 'Count',
|
||||
'unit' => '',
|
||||
'unit_long' => '',
|
||||
],
|
||||
'current' => [
|
||||
'short' => 'Current',
|
||||
'long' => 'Current',
|
||||
'unit' => 'A',
|
||||
'unit_long' => 'Amperes',
|
||||
],
|
||||
'dbm' => [
|
||||
'short' => 'dBm',
|
||||
'long' => 'dBm',
|
||||
'unit' => 'dBm',
|
||||
'unit_long' => 'Decibal-Milliwatts',
|
||||
],
|
||||
'delay' => [
|
||||
'short' => 'Delay',
|
||||
'long' => 'Delay',
|
||||
'unit' => 's',
|
||||
'unit_long' => 'Seconds',
|
||||
],
|
||||
'eer' => [
|
||||
'short' => 'EER',
|
||||
'long' => 'Energy Efficient Ratio',
|
||||
'unit' => '',
|
||||
'unit_long' => '',
|
||||
],
|
||||
'fanspeed' => [
|
||||
'short' => 'Fanspeed',
|
||||
'long' => 'Fan Speed',
|
||||
'unit' => 'RPM',
|
||||
'unit_long' => 'Rotations per Minute',
|
||||
],
|
||||
'frequency' => [
|
||||
'short' => 'Frequency',
|
||||
'long' => 'Frequency',
|
||||
'unit' => 'Hz',
|
||||
'unit_long' => 'Hertz',
|
||||
],
|
||||
'humidity' => [
|
||||
'short' => 'Humidity',
|
||||
'long' => 'Humidity Percent',
|
||||
'unit' => '%',
|
||||
'unit_long' => 'Percent',
|
||||
],
|
||||
'load' => [
|
||||
'short' => 'Load',
|
||||
'long' => 'Load Percent',
|
||||
'unit' => '%',
|
||||
'unit_long' => 'Percent',
|
||||
],
|
||||
'power' => [
|
||||
'short' => 'Power',
|
||||
'long' => 'Power',
|
||||
'unit' => 'W',
|
||||
'unit_long' => 'Watts',
|
||||
],
|
||||
'power_consumed' => [
|
||||
'short' => 'Power Consumed',
|
||||
'long' => 'Power Consumed',
|
||||
'unit' => 'kWh',
|
||||
'unit_long' => 'Killowatt-Hours',
|
||||
],
|
||||
'power_factor' => [
|
||||
'short' => 'Power Factor',
|
||||
'long' => 'Power Factor',
|
||||
'unit' => '',
|
||||
'unit_long' => '',
|
||||
],
|
||||
'pressure' => [
|
||||
'short' => 'Pressure',
|
||||
'long' => 'Pressure',
|
||||
'unit' => 'kPa',
|
||||
'unit_long' => 'Kilopascals',
|
||||
],
|
||||
'quality_factor' => [
|
||||
'short' => 'Quality Factor',
|
||||
'long' => 'Quality Factor',
|
||||
'unit' => '',
|
||||
'unit_long' => '',
|
||||
],
|
||||
'runtime' => [
|
||||
'short' => 'Runtime',
|
||||
'long' => 'Runtime',
|
||||
'unit' => 'Min',
|
||||
'unit_long' => 'Minutes',
|
||||
],
|
||||
'signal' => [
|
||||
'short' => 'Signal',
|
||||
'long' => 'Signal',
|
||||
'unit' => 'dBm',
|
||||
'unit_long' => 'Decibal-Milliwatts',
|
||||
],
|
||||
'snr' => [
|
||||
'short' => 'SNR',
|
||||
'long' => 'Signal to Noise Ratio',
|
||||
'unit' => 'dB',
|
||||
'unit_long' => 'Decibels',
|
||||
],
|
||||
'state' => [
|
||||
'short' => 'State',
|
||||
'long' => 'State',
|
||||
'unit' => '',
|
||||
],
|
||||
'temperature' => [
|
||||
'short' => 'Temperature',
|
||||
'long' => 'Temperature',
|
||||
'unit' => '°C',
|
||||
'unit_long' => '° Celsius',
|
||||
],
|
||||
'voltage' => [
|
||||
'short' => 'Voltage',
|
||||
'long' => 'voltage',
|
||||
'unit' => 'V',
|
||||
'unit_long' => 'Volts',
|
||||
],
|
||||
'waterflow' => [
|
||||
'short' => 'Waterflow',
|
||||
'long' => 'Water Flow',
|
||||
'unit' => 'l/m',
|
||||
'unit_long' => 'Liters Per Minute',
|
||||
],
|
||||
];
|
110
resources/lang/en/wireless.php
Normal file
110
resources/lang/en/wireless.php
Normal file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Wireless Sensors Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to translate names and units of wireless sensors
|
||||
|
|
||||
*/
|
||||
|
||||
'ap-count' => [
|
||||
'short' => 'APs',
|
||||
'long' => 'AP Count',
|
||||
'unit' => '',
|
||||
],
|
||||
'clients' => [
|
||||
'short' => 'Clients',
|
||||
'long' => 'Client Count',
|
||||
'unit' => '',
|
||||
],
|
||||
'capacity' => [
|
||||
'short' => 'Capacity',
|
||||
'long' => 'Capacity',
|
||||
'unit' => '%',
|
||||
],
|
||||
'ccq' => [
|
||||
'short' => 'CCQ',
|
||||
'long' => 'Client Connection Quality',
|
||||
'unit' => '%',
|
||||
],
|
||||
'errors' => [
|
||||
'short' => 'Errors',
|
||||
'long' => 'Error Count',
|
||||
'unit' => '',
|
||||
],
|
||||
'error-ratio' => [
|
||||
'short' => 'Error Ratio',
|
||||
'long' => 'Bit/Packet Error Ratio',
|
||||
'unit' => '%',
|
||||
],
|
||||
'error-rate' => [
|
||||
'short' => 'BER',
|
||||
'long' => 'Bit Error Rate',
|
||||
'unit' => 'bps',
|
||||
],
|
||||
'frequency' => [
|
||||
'short' => 'Frequency',
|
||||
'long' => 'Frequency',
|
||||
'unit' => 'MHz',
|
||||
],
|
||||
'distance' => [
|
||||
'short' => 'Distance',
|
||||
'long' => 'Distance',
|
||||
'unit' => 'km',
|
||||
],
|
||||
'mse' => [
|
||||
'short' => 'MSE',
|
||||
'long' => 'Mean Square Error',
|
||||
'unit' => 'dB',
|
||||
],
|
||||
'noise-floor' => [
|
||||
'short' => 'Noise Floor',
|
||||
'long' => 'Noise Floor',
|
||||
'unit' => 'dBm/Hz',
|
||||
],
|
||||
'power' => [
|
||||
'short' => 'Power/Signal',
|
||||
'long' => 'TX/RX Power or Signal',
|
||||
'unit' => 'dBm',
|
||||
],
|
||||
'quality' => [
|
||||
'short' => 'Quality',
|
||||
'long' => 'Quality',
|
||||
'unit' => '%',
|
||||
],
|
||||
'rate' => [
|
||||
'short' => 'Rate',
|
||||
'long' => 'TX/RX Rate',
|
||||
'unit' => 'bps',
|
||||
],
|
||||
'rssi' => [
|
||||
'short' => 'RSSI',
|
||||
'long' => 'Received Signal Strength Indicator',
|
||||
'unit' => 'dBm',
|
||||
],
|
||||
'snr' => [
|
||||
'short' => 'SNR',
|
||||
'long' => 'Signal-to-Noise Ratio',
|
||||
'unit' => 'dB',
|
||||
],
|
||||
'ssr' => [
|
||||
'short' => 'SSR',
|
||||
'long' => 'Signal Strength Ratio',
|
||||
'unit' => 'dB',
|
||||
],
|
||||
'utilization' => [
|
||||
'short' => 'Utilization',
|
||||
'long' => 'utilization',
|
||||
'unit' => '%',
|
||||
],
|
||||
'xpi' => [
|
||||
'short' => 'XPI',
|
||||
'long' => 'Cross Polar Interference',
|
||||
'unit' => 'dB',
|
||||
],
|
||||
|
||||
];
|
@ -2,7 +2,7 @@
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navHeaderCollapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="sr-only">@lang('Toggle navigation')</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
@ -20,16 +20,27 @@
|
||||
<ul class="nav navbar-nav">
|
||||
{{-- Overview --}}
|
||||
<li class="dropdown">
|
||||
<a href="{{ url('overview') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-home fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Overview</span></a>
|
||||
<a href="{{ url('overview') }}" class="dropdown-toggle" data-hover="dropdown"
|
||||
data-toggle="dropdown"><i class="fa fa-home fa-fw fa-lg fa-nav-icons hidden-md"
|
||||
aria-hidden="true"></i> <span
|
||||
class="hidden-sm">@lang('Overview')</span></a>
|
||||
<ul class="dropdown-menu multi-level" role="menu">
|
||||
<li><a href="{{ url('overview') }}"><i class="fa fa-tv fa-fw fa-lg" aria-hidden="true"></i> Dashboard</a></li>
|
||||
<li><a href="{{ url('overview') }}"><i class="fa fa-tv fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Dashboard')</a></li>
|
||||
<li class="dropdown-submenu">
|
||||
<a href="{{ url('overview') }}"><i class="fa fa-map fa-fw fa-lg" aria-hidden="true"></i> Maps</a>
|
||||
<a href="{{ url('overview') }}"><i class="fa fa-map fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Maps')</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('availability-map') }}"><i class="fa fa-arrow-circle-up fa-fw fa-lg" aria-hidden="true"></i> Availability</a></li>
|
||||
<li><a href="{{ url('map') }}"><i class="fa fa-sitemap fa-fw fa-lg" aria-hidden="true"></i> Network</a></li>
|
||||
<li><a href="{{ url('availability-map') }}"><i class="fa fa-arrow-circle-up fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Availability')
|
||||
</a></li>
|
||||
<li><a href="{{ url('map') }}"><i class="fa fa-sitemap fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Network')</a></li>
|
||||
@if($device_groups->isNotEmpty())
|
||||
<li class="dropdown-submenu"><a href="#"><i class="fa fa-th fa-fw fa-lg" aria-hidden="true"></i> Device Groups Maps</a><ul class="dropdown-menu scrollable-menu">
|
||||
<li class="dropdown-submenu"><a href="#"><i class="fa fa-th fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Device Groups Maps')
|
||||
</a>
|
||||
<ul class="dropdown-menu scrollable-menu">
|
||||
@foreach($device_groups as $group)
|
||||
<li><a href="{{ url("map/group=$group->id") }}" title="{{ $group->desc }}"><i class="fa fa-th fa-fw fa-lg" aria-hidden="true"></i>
|
||||
{{ ucfirst($group->name) }}
|
||||
@ -37,12 +48,14 @@
|
||||
@endforeach
|
||||
</ul></li>
|
||||
@endif
|
||||
<li><a href="{{ url('fullscreenmap') }}"><i class="fa fa-expand fa-fw fa-lg" aria-hidden="true"></i> Geographical</a></li>
|
||||
<li><a href="{{ url('fullscreenmap') }}"><i class="fa fa-expand fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Geographical')
|
||||
</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@if(auth()->user()->isAdmin() || \LibreNMS\Plugins::count())
|
||||
<li class="dropdown-submenu">
|
||||
<a><i class="fa fa-plug fa-fw fa-lg" aria-hidden="true"></i> Plugins</a>
|
||||
<a><i class="fa fa-plug fa-fw fa-lg" aria-hidden="true"></i> @lang('Plugins')</a>
|
||||
<ul class="dropdown-menu">
|
||||
{!! \LibreNMS\Plugins::call('menu') !!}
|
||||
@admin
|
||||
@ -50,65 +63,93 @@
|
||||
<li role="presentation" class="divider"></li>
|
||||
@endif
|
||||
<li><a href="{{ url('plugin/view=admin') }}"> <i class="fa fa-lock fa-fw fa-lg"
|
||||
aria-hidden="true"></i>Plugin Admin</a>
|
||||
aria-hidden="true"></i>@lang('Plugin Admin')
|
||||
</a>
|
||||
</li>
|
||||
@endadmin
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
<li class="dropdown-submenu">
|
||||
<a href="{{ url('overview') }}"><i class="fa fa-wrench fa-fw fa-lg" aria-hidden="true"></i> Tools</a>
|
||||
<a href="{{ url('overview') }}"><i class="fa fa-wrench fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Tools')</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('ripenccapi') }}"><i class="fa fa-star fa-fw fa-lg" aria-hidden="true"></i> RIPE NCC API</a></li>
|
||||
<li><a href="{{ url('ripenccapi') }}"><i class="fa fa-star fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('RIPE NCC API')
|
||||
</a></li>
|
||||
@config('oxidized.enabled')
|
||||
<li><a href="{{ url('oxidized') }}"><i class="fa fa-stack-overflow fa-fw fa-lg" aria-hidden="true"></i> Oxidized</a></li>
|
||||
<li><a href="{{ url('oxidized') }}"><i class="fa fa-stack-overflow fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Oxidized')</a>
|
||||
</li>
|
||||
@endconfig
|
||||
</ul>
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ url('eventlog') }}"><i class="fa fa-bookmark fa-fw fa-lg" aria-hidden="true"></i> Eventlog</a></li>
|
||||
<li><a href="{{ url('eventlog') }}"><i class="fa fa-bookmark fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Eventlog')</a></li>
|
||||
@config('enable_syslog')
|
||||
<li><a href="{{ url('syslog') }}"><i class="fa fa-clone fa-fw fa-lg" aria-hidden="true"></i> Syslog</a></li>
|
||||
<li><a href="{{ url('syslog') }}"><i class="fa fa-clone fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Syslog')</a></li>
|
||||
@endconfig
|
||||
@config('graylog.server')
|
||||
<li><a href="{{ url('graylog') }}"><i class="fa fa-clone fa-fw fa-lg" aria-hidden="true"></i> Graylog</a></li>
|
||||
<li><a href="{{ url('graylog') }}"><i class="fa fa-clone fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Graylog')</a></li>
|
||||
@endconfig
|
||||
|
||||
<li><a href="{{ url('inventory') }}"><i class="fa fa-cube fa-fw fa-lg" aria-hidden="true"></i> Inventory</a></li>
|
||||
<li><a href="{{ url('inventory') }}"><i class="fa fa-cube fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Inventory')</a></li>
|
||||
@if($package_count)
|
||||
<li><a href="{{ url('search/search=packages') }}"><i class="fa fa-archive fa-fw fa-lg" aria-hidden="true"></i> Packages</a></li>
|
||||
<li><a href="{{ url('search/search=packages') }}"><i class="fa fa-archive fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Packages')
|
||||
</a></li>
|
||||
@endif
|
||||
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ url('search/search=ipv4') }}"><i class="fa fa-search fa-fw fa-lg" aria-hidden="true"></i> IPv4 Address</a></li>
|
||||
<li><a href="{{ url('search/search=ipv6') }}"><i class="fa fa-search fa-fw fa-lg" aria-hidden="true"></i> IPv6 Address</a></li>
|
||||
<li><a href="{{ url('search/search=mac') }}"><i class="fa fa-search fa-fw fa-lg" aria-hidden="true"></i> MAC Address</a></li>
|
||||
<li><a href="{{ url('search/search=arp') }}"><i class="fa fa-search fa-fw fa-lg" aria-hidden="true"></i> ARP Tables</a></li>
|
||||
<li><a href="{{ url('search/search=fdb') }}"><i class="fa fa-search fa-fw fa-lg" aria-hidden="true"></i> FDB Tables</a></li>
|
||||
<li><a href="{{ url('search/search=ipv4') }}"><i class="fa fa-search fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('IPv4 Address')
|
||||
</a></li>
|
||||
<li><a href="{{ url('search/search=ipv6') }}"><i class="fa fa-search fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('IPv6 Address')
|
||||
</a></li>
|
||||
<li><a href="{{ url('search/search=mac') }}"><i class="fa fa-search fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('MAC Address')</a>
|
||||
</li>
|
||||
<li><a href="{{ url('search/search=arp') }}"><i class="fa fa-search fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('ARP Tables')</a>
|
||||
</li>
|
||||
<li><a href="{{ url('search/search=fdb') }}"><i class="fa fa-search fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('FDB Tables')</a>
|
||||
</li>
|
||||
@config('poller_modules.mib')
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ url('mibs') }}"><i class="fa fa-file-text-o fa-fw fa-lg" aria-hidden="true"></i> MIB definitions</a></li>
|
||||
<li><a href="{{ url('mibs') }}"><i class="fa fa-file-text-o fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('MIB definitions')</a></li>
|
||||
@endconfig
|
||||
</ul>
|
||||
</li>
|
||||
{{-- Devices --}}
|
||||
<li class="dropdown">
|
||||
<a href="{{ url('devices/') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-server fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Devices</span></a>
|
||||
<a href="{{ url('devices/') }}" class="dropdown-toggle" data-hover="dropdown"
|
||||
data-toggle="dropdown"><i class="fa fa-server fa-fw fa-lg fa-nav-icons hidden-md"
|
||||
aria-hidden="true"></i> <span class="hidden-sm">@lang('Devices')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
@if($device_types->isNotEmpty())
|
||||
<li class="dropdown-submenu">
|
||||
<a href="{{ url('devices') }}"><i class="fa fa-server fa-fw fa-lg" aria-hidden="true"></i> All Devices</a>
|
||||
<a href="{{ url('devices') }}"><i class="fa fa-server fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('All Devices')</a>
|
||||
<ul class="dropdown-menu scrollable-menu">
|
||||
@foreach($device_types as $type)
|
||||
<li><a href="{{ url("devices/type=$type") }}"><i class="fa fa-angle-double-right fa-fw fa-lg" aria-hidden="true"></i> {{ ucfirst($type) }}</a></li>
|
||||
@endforeach
|
||||
</ul></li>
|
||||
@else
|
||||
<li class="dropdown-submenu"><a href="#">No devices</a></li>
|
||||
<li class="dropdown-submenu"><a href="#">@lang('No devices')</a></li>
|
||||
@endif
|
||||
|
||||
@if($device_groups->isNotEmpty())
|
||||
<li class="dropdown-submenu"><a href="#"><i class="fa fa-th fa-fw fa-lg" aria-hidden="true"></i> Device Groups</a>
|
||||
<li class="dropdown-submenu"><a href="#"><i class="fa fa-th fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Device Groups')
|
||||
</a>
|
||||
<ul class="dropdown-menu scrollable-menu">
|
||||
@foreach($device_groups as $group)
|
||||
<li><a href="{{ url("devices/group=$group->id") }}" title="{{ $group->desc }}"><i class="fa fa-th fa-fw fa-lg" aria-hidden="true"></i> {{ ucfirst($group->name) }}</a></li>
|
||||
@ -132,21 +173,27 @@
|
||||
@admin
|
||||
<li role="presentation" class="divider"></li>
|
||||
@config('poller_modules.mib')
|
||||
<li><a href="{{ url('mib_assoc') }}"><i class="fa fa-file-text-o fa-fw fa-lg" aria-hidden="true"></i> MIB associations</a></li>
|
||||
<li><a href="{{ url('mib_assoc') }}"><i class="fa fa-file-text-o fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('MIB associations')</a>
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
@endconfig
|
||||
|
||||
@notconfig('navbar.manage_groups.hide')
|
||||
<li><a href="{{ url('device-groups') }}"><i class="fa fa-th fa-fw fa-lg" aria-hidden="true"></i> Manage Groups</a></li>
|
||||
<li><a href="{{ url('device-groups') }}"><i class="fa fa-th fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Manage Groups')</a>
|
||||
</li>
|
||||
@endconfig
|
||||
<li><a href="{{ url('device-dependencies') }}"><i class="fa fa-group fa-fw fa-lg"></i> Device Dependencies</a></li>
|
||||
<li><a href="{{ url('device-dependencies') }}"><i class="fa fa-group fa-fw fa-lg"></i> @lang('Device Dependencies')</a></li>
|
||||
@if($show_vmwinfo)
|
||||
<li><a href="{{ url('vminfo') }}"><i
|
||||
class="fa fa-cog fa-fw fa-lg"></i> @lang('Virtual Machines')</a></li>
|
||||
@endif
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ url('addhost') }}"><i class="fa fa-plus fa-fw fa-lg" aria-hidden="true"></i> Add Device</a></li>
|
||||
<li><a href="{{ url('delhost') }}"><i class="fa fa-trash fa-fw fa-lg" aria-hidden="true"></i> Delete Device</a></li>
|
||||
<li><a href="{{ url('addhost') }}"><i class="fa fa-plus fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Add Device')</a></li>
|
||||
<li><a href="{{ url('delhost') }}"><i class="fa fa-trash fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Delete Device')</a></li>
|
||||
@endadmin
|
||||
|
||||
</ul>
|
||||
@ -154,67 +201,101 @@
|
||||
{{-- Services --}}
|
||||
@config('show_services')
|
||||
<li class="dropdown">
|
||||
<a href="{{ url('services') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-cogs fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Services</span></a>
|
||||
<a href="{{ url('services') }}" class="dropdown-toggle" data-hover="dropdown"
|
||||
data-toggle="dropdown"><i class="fa fa-cogs fa-fw fa-lg fa-nav-icons hidden-md"
|
||||
aria-hidden="true"></i> <span
|
||||
class="hidden-sm">@lang('Services')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('services') }}"><i class="fa fa-cogs fa-fw fa-lg" aria-hidden="true"></i> All Services </a></li>
|
||||
<li><a href="{{ url('services') }}"><i class="fa fa-cogs fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('All Services')</a>
|
||||
</li>
|
||||
@if($service_counts['warning'] || $service_counts['critical'])
|
||||
<li role="presentation" class="divider"></li>
|
||||
@if($service_counts['warning'])
|
||||
<li><a href="{{ url('services/state=warning') }}"><i class="fa fa-bell fa-col-warning fa-fw fa-lg" aria-hidden="true"></i> Warning ({{ $service_counts['warning'] }})</a></li>
|
||||
<li><a href="{{ url('services/state=warning') }}"><i
|
||||
class="fa fa-bell fa-col-warning fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Warning :service_count', ['service_count' => $service_counts['warning']])
|
||||
</a></li>
|
||||
@endif
|
||||
@if($service_counts['critical'])
|
||||
<li><a href="{{ url('services/state=critical') }}"><i class="fa fa-bell fa-col-danger fa-fw fa-lg" aria-hidden="true"></i> Critical ({{ $service_counts['critical'] }})</a></li>
|
||||
<li><a href="{{ url('services/state=critical') }}"><i
|
||||
class="fa fa-bell fa-col-danger fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Critical :service_count', ['service_count' => $service_counts['critical']])
|
||||
</a></li>
|
||||
@endif
|
||||
@endif
|
||||
@admin
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ url('addsrv') }}"><i class="fa fa-plus fa-fw fa-lg" aria-hidden="true"></i> Add Service</a></li>
|
||||
<li><a href="{{ url('addsrv') }}"><i class="fa fa-plus fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Add Service')</a></li>
|
||||
@endadmin
|
||||
</ul>
|
||||
</li>
|
||||
@endconfig
|
||||
{{-- Ports --}}
|
||||
<li class="dropdown">
|
||||
<a href="{{ url('ports') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-link fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Ports</span></a>
|
||||
<a href="{{ url('ports') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i
|
||||
class="fa fa-link fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span
|
||||
class="hidden-sm">@lang('Ports')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('ports') }}"><i class="fa fa-link fa-fw fa-lg" aria-hidden="true"></i> All Ports</a></li>
|
||||
<li><a href="{{ url('ports') }}"><i class="fa fa-link fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('All Ports')</a></li>
|
||||
|
||||
@if($port_counts['errored'] > 0)
|
||||
<li><a href="{{ url('ports/errors=yes') }}"><i class="fa fa-exclamation-circle fa-fw fa-lg" aria-hidden="true"></i> Errored ({{ $port_counts['errored'] }})</a></li>
|
||||
<li><a href="{{ url('ports/errors=yes') }}"><i class="fa fa-exclamation-circle fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Errored :port_count', ['port_count' => $port_counts['errored']])
|
||||
</a></li>
|
||||
@endif
|
||||
|
||||
@if($port_counts['ignored'] > 0)
|
||||
<li><a href="{{ url('ports/ignore=yes') }}"><i class="fa fa-question-circle fa-fw fa-lg" aria-hidden="true"></i> Ignored ({{ $port_counts['ignored'] }})</a></li>
|
||||
<li><a href="{{ url('ports/ignore=yes') }}"><i class="fa fa-question-circle fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Ignored :port_count', ['port_count' => $port_counts['ignored']])
|
||||
</a></li>
|
||||
@endif
|
||||
|
||||
@config('enable_billing')
|
||||
<li><a href="{{ url('bills') }}"><i class="fa fa-money fa-fw fa-lg" aria-hidden="true"></i> Traffic Bills</a></li>
|
||||
<li><a href="{{ url('bills') }}"><i class="fa fa-money fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Traffic Bills')</a></li>
|
||||
@endconfig
|
||||
|
||||
@if($port_counts['pseudowire'] > 0)
|
||||
<li><a href="{{ url('pseudowires') }}"><i class="fa fa-arrows-alt fa-fw fa-lg" aria-hidden="true"></i> Pseudowires</a></li>
|
||||
<li><a href="{{ url('pseudowires') }}"><i class="fa fa-arrows-alt fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Pseudowires')</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if(auth()->user()->hasGlobalRead())
|
||||
@if($port_groups_exist)
|
||||
<li role="presentation" class="divider"></li>
|
||||
@config('int_customers')
|
||||
<li><a href="{{ url('customers') }}"><i class="fa fa-users fa-fw fa-lg" aria-hidden="true"></i> Customers</a></li>
|
||||
<li><a href="{{ url('customers') }}"><i class="fa fa-users fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Customers')</a>
|
||||
</li>
|
||||
@endconfig
|
||||
@config('int_l2tp')
|
||||
<li><a href="{{ url('iftype/type=l2tp') }}"><i class="fa fa-link fa-fw fa-lg" aria-hidden="true"></i> L2TP</a></li>
|
||||
<li><a href="{{ url('iftype/type=l2tp') }}"><i class="fa fa-link fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('L2TP')</a>
|
||||
</li>
|
||||
@endconfig
|
||||
@config('int_transit')
|
||||
<li><a href="{{ url('iftype/type=transit') }}"><i class="fa fa-truck fa-fw fa-lg" aria-hidden="true"></i> Transit</a></li>
|
||||
<li><a href="{{ url('iftype/type=transit') }}"><i class="fa fa-truck fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Transit')
|
||||
</a></li>
|
||||
@endconfig
|
||||
@config('int_peering')
|
||||
<li><a href="{{ url('iftype/type=peering') }}"><i class="fa fa-handshake-o fa-fw fa-lg" aria-hidden="true"></i> Peering</a></li>
|
||||
<li><a href="{{ url('iftype/type=peering') }}"><i class="fa fa-handshake-o fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Peering')
|
||||
</a></li>
|
||||
@endconfig
|
||||
@if(\LibreNMS\Config::get('int_peering') && \LibreNMS\Config::get('int_transit'))
|
||||
<li><a href="{{ url('iftype/type=peering,transit') }}"><i class="fa fa-rocket fa-fw fa-lg" aria-hidden="true"></i> Peering + Transit</a></li>
|
||||
<li><a href="{{ url('iftype/type=peering,transit') }}"><i
|
||||
class="fa fa-rocket fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Peering + Transit')</a></li>
|
||||
@endif
|
||||
@config('int_core')
|
||||
<li><a href="{{ url('iftype/type=core') }}"><i class="fa fa-code-fork fa-fw fa-lg" aria-hidden="true"></i> Core</a></li>
|
||||
<li><a href="{{ url('iftype/type=core') }}"><i class="fa fa-code-fork fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Core')</a>
|
||||
</li>
|
||||
@endconfig
|
||||
@foreach($custom_port_descr as $custom_descr)
|
||||
<li><a href="{{ url('iftype/type=' . urlencode($custom_descr)) }}"><i class="fa fa-connectdevelop fa-fw fa-lg" aria-hidden="true"></i> {{ ucwords($custom_descr) }}</a></li>
|
||||
@ -224,25 +305,43 @@
|
||||
<li role="presentation" class="divider"></li>
|
||||
|
||||
@if($port_counts['alerted'])
|
||||
<li><a href="{{ url('ports/alerted=yes') }}"><i class="fa fa-exclamation-circle fa-fw fa-lg" aria-hidden="true"></i> Alerts ({{ $port_counts['alerted'] }})</a></li>
|
||||
<li><a href="{{ url('ports/alerted=yes') }}"><i
|
||||
class="fa fa-exclamation-circle fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Alerts :port_count', ['port_count' => $port_counts['alerted']])
|
||||
</a></li>
|
||||
@endif
|
||||
|
||||
<li><a href="{{ url('ports/state=down') }}"><i class="fa fa-arrow-circle-down fa-fw fa-lg" aria-hidden="true"></i> Down ({{ $port_counts['down'] }})</a></li>
|
||||
<li><a href="{{ url('ports/state=admindown') }}"><i class="fa fa-arrow-circle-o-down fa-fw fa-lg" aria-hidden="true"></i> Disabled ({{ $port_counts['shutdown'] }})</a></li>
|
||||
<li><a href="{{ url('ports/state=down') }}"><i class="fa fa-arrow-circle-down fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Down :port_count', ['port_count' => $port_counts['down']])
|
||||
</a></li>
|
||||
<li><a href="{{ url('ports/state=admindown') }}"><i
|
||||
class="fa fa-arrow-circle-o-down fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Disabled :port_count', ['port_count' => $port_counts['shutdown']])
|
||||
</a></li>
|
||||
|
||||
@if($port_counts['deleted'])
|
||||
<li><a href="{{ url('ports/deleted=yes') }}"><i class="fa fa-minus-circle fa-fw fa-lg" aria-hidden="true"></i> Deleted ({{ $port_counts['deleted'] }})</a></li>
|
||||
<li><a href="{{ url('ports/deleted=yes') }}"><i class="fa fa-minus-circle fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Deleted :port_count', ['port_count' => $port_counts['deleted']])
|
||||
</a></li>
|
||||
@endif
|
||||
@endif
|
||||
</ul>
|
||||
</li>
|
||||
{{-- Sensors --}}
|
||||
<li class="dropdown">
|
||||
<a href="{{ url('health') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-heartbeat fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Health</span></a>
|
||||
<a href="{{ url('health') }}" class="dropdown-toggle" data-hover="dropdown"
|
||||
data-toggle="dropdown"><i class="fa fa-heartbeat fa-fw fa-lg fa-nav-icons hidden-md"
|
||||
aria-hidden="true"></i> <span class="hidden-sm">@lang('Health')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('health/metric=mempool') }}"><i class="fa fa-braille fa-fw fa-lg" aria-hidden="true"></i> Memory</a></li>
|
||||
<li><a href="{{ url('health/metric=processor') }}"><i class="fa fa-microchip fa-fw fa-lg" aria-hidden="true"></i> Processor</a></li>
|
||||
<li><a href="{{ url('health/metric=storage') }}"><i class="fa fa-database fa-fw fa-lg" aria-hidden="true"></i> Storage</a></li>
|
||||
<li><a href="{{ url('health/metric=mempool') }}"><i class="fa fa-braille fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Memory')</a>
|
||||
</li>
|
||||
<li><a href="{{ url('health/metric=processor') }}"><i class="fa fa-microchip fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Processor')
|
||||
</a></li>
|
||||
<li><a href="{{ url('health/metric=storage') }}"><i class="fa fa-database fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Storage')</a>
|
||||
</li>
|
||||
|
||||
@foreach($sensor_menu as $sensor_menu_group)
|
||||
@foreach($sensor_menu_group as $sensor_menu_entry)
|
||||
@ -258,7 +357,10 @@
|
||||
{{-- Wireless --}}
|
||||
@if($wireless_menu->isNotEmpty())
|
||||
<li class="dropdown">
|
||||
<a href="{{ url('wireless') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-wifi fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Wireless</span></a>
|
||||
<a href="{{ url('wireless') }}" class="dropdown-toggle" data-hover="dropdown"
|
||||
data-toggle="dropdown"><i class="fa fa-wifi fa-fw fa-lg fa-nav-icons hidden-md"
|
||||
aria-hidden="true"></i> <span
|
||||
class="hidden-sm">@lang('Wireless')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
@foreach($wireless_menu as $wireless_menu_entry)
|
||||
<li><a href="{{ url('wireless/metric=' . $wireless_menu_entry->sensor_class) }}"><i class="fa fa-{{ $wireless_menu_entry->icon() }} fa-fw fa-lg" aria-hidden="true"></i> {{ $wireless_menu_entry->classDescr() }}</a></li>
|
||||
@ -269,9 +371,13 @@
|
||||
{{-- App --}}
|
||||
@if($app_menu->isNotEmpty())
|
||||
<li class="dropdown">
|
||||
<a href="{{ url('apps') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-tasks fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Apps</span></a>
|
||||
<a href="{{ url('apps') }}" class="dropdown-toggle" data-hover="dropdown"
|
||||
data-toggle="dropdown"><i class="fa fa-tasks fa-fw fa-lg fa-nav-icons hidden-md"
|
||||
aria-hidden="true"></i> <span
|
||||
class="hidden-sm">@lang('Apps')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('apps') }}"><i class="fa fa-object-group fa-fw fa-lg" aria-hidden="true"></i> Overview</a></li>
|
||||
<li><a href="{{ url('apps') }}"><i class="fa fa-object-group fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Overview')</a></li>
|
||||
@foreach($app_menu as $app_type => $app_instances)
|
||||
@if($app_instances->filter->app_instance->isNotEmpty())
|
||||
<li class="dropdown-submenu">
|
||||
@ -292,7 +398,10 @@
|
||||
{{-- Routing --}}
|
||||
@if($routing_menu)
|
||||
<li class="dropdown">
|
||||
<a href="{{ url('routing') }}" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-random fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Routing</span></a>
|
||||
<a href="{{ url('routing') }}" class="dropdown-toggle" data-hover="dropdown"
|
||||
data-toggle="dropdown"><i class="fa fa-random fa-fw fa-lg fa-nav-icons hidden-md"
|
||||
aria-hidden="true"></i> <span
|
||||
class="hidden-sm">@lang('Routing')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
@foreach($routing_menu as $routing_menu_group)
|
||||
@if(!$loop->first)
|
||||
@ -305,12 +414,17 @@
|
||||
|
||||
@if($bgp_alerts)
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ url('routing/protocol=bgp/adminstatus=start/state=down') }}"><i class="fa fa-exclamation-circle fa-fw fa-lg" aria-hidden="true"></i> Alerted BGP ({{ $bgp_alerts }})</a></li>
|
||||
<li><a href="{{ url('routing/protocol=bgp/adminstatus=start/state=down') }}"><i
|
||||
class="fa fa-exclamation-circle fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Alerted BGP :alert_count', ['alert_count' => $bgp_alerts])
|
||||
</a></li>
|
||||
@endif
|
||||
@admin
|
||||
@if($show_peeringdb)
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ url('peering') }}"><i class="fa fa-hand-o-right fa-fw fa-lg" aria-hidden="true"></i> PeeringDB</a></li>
|
||||
<li><a href="{{ url('peering') }}"><i class="fa fa-hand-o-right fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('PeeringDB')</a>
|
||||
</li>
|
||||
@endif
|
||||
@endadmin
|
||||
</ul>
|
||||
@ -318,17 +432,29 @@
|
||||
@endif
|
||||
{{-- Alerts --}}
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-exclamation-circle fa-col-{{ $alert_menu_class }} fa-fw fa-lg fa-nav-icons hidden-md" aria-hidden="true"></i> <span class="hidden-sm">Alerts</span></a>
|
||||
<a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i
|
||||
class="fa fa-exclamation-circle fa-col-{{ $alert_menu_class }} fa-fw fa-lg fa-nav-icons hidden-md"
|
||||
aria-hidden="true"></i> <span class="hidden-sm">@lang('Alerts')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('alerts') }}"><i class="fa fa-bell fa-fw fa-lg" aria-hidden="true"></i> Notifications</a></li>
|
||||
<li><a href="{{ url('alert-log') }}"><i class="fa fa-file-text fa-fw fa-lg" aria-hidden="true"></i> Alert History</a></li>
|
||||
<li><a href="{{ url('alert-stats') }}"><i class="fa fa-bar-chart fa-fw fa-lg" aria-hidden="true"></i> Statistics</a></li>
|
||||
<li><a href="{{ url('alerts') }}"><i class="fa fa-bell fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Notifications')</a></li>
|
||||
<li><a href="{{ url('alert-log') }}"><i class="fa fa-file-text fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Alert History')</a></li>
|
||||
<li><a href="{{ url('alert-stats') }}"><i class="fa fa-bar-chart fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Statistics')</a></li>
|
||||
@admin
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ url('alert-rules') }}"><i class="fa fa-list fa-fw fa-lg" aria-hidden="true"></i> Alert Rules</a></li>
|
||||
<li><a href="{{ url('alert-schedule') }}"><i class="fa fa-calendar fa-fw fa-lg" aria-hidden="true"></i> Scheduled Maintenance</a></li>
|
||||
<li><a href="{{ url('templates') }}"><i class="fa fa-file fa-fw fa-lg" aria-hidden="true"></i> Alert Templates</a></li>
|
||||
<li><a href="{{ url('alert-transports') }}"><i class="fa fa-bus fa-fw fa-lg" aria-hidden="true"></i> Alert Transports</a></li>
|
||||
<li><a href="{{ url('alert-rules') }}"><i class="fa fa-list fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Alert Rules')</a></li>
|
||||
<li><a href="{{ url('alert-schedule') }}"><i class="fa fa-calendar fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Scheduled Maintenance')
|
||||
</a></li>
|
||||
<li><a href="{{ url('templates') }}"><i class="fa fa-file fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Alert Templates')</a>
|
||||
</li>
|
||||
<li><a href="{{ url('alert-transports') }}"><i class="fa fa-bus fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Alert Transports')
|
||||
</a></li>
|
||||
@endadmin
|
||||
</ul>
|
||||
</li>
|
||||
@ -345,10 +471,14 @@
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-user fa-fw fa-lg fa-nav-icons" aria-hidden="true"></i>
|
||||
<span class="visible-xs-inline-block">User</span><span class="badge badge-navbar-user count-notif {{ $notification_count ? 'badge-danger' : 'badge-default' }}">{{ $notification_count }}</span></a>
|
||||
<span class="visible-xs-inline-block">@lang('User')</span><span
|
||||
class="badge badge-navbar-user count-notif {{ $notification_count ? 'badge-danger' : 'badge-default' }}">{{ $notification_count }}</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('preferences') }}"><i class="fa fa-cog fa-fw fa-lg" aria-hidden="true"></i> My Settings</a></li>
|
||||
<li><a href="{{ url('notifications') }}"><span class="badge count-notif">{{ $notification_count }}</span> Notifications</a></li>
|
||||
<li><a href="{{ url('preferences') }}"><i class="fa fa-cog fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('My Settings')</a></li>
|
||||
<li><a href="{{ url('notifications') }}"><span
|
||||
class="badge count-notif">{{ $notification_count }}</span> @lang('Notifications')
|
||||
</a></li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li>
|
||||
<a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
|
||||
@ -362,14 +492,21 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown" style="margin-left:5px"><i class="fa fa-cog fa-fw fa-lg fa-nav-icons" aria-hidden="true"></i> <span class="visible-xs-inline-block">Settings</span></a>
|
||||
<a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"
|
||||
style="margin-left:5px"><i class="fa fa-cog fa-fw fa-lg fa-nav-icons" aria-hidden="true"></i>
|
||||
<span class="visible-xs-inline-block">@lang('Settings')</span></a>
|
||||
<ul class="dropdown-menu">
|
||||
@admin
|
||||
<li><a href="{{ url('settings') }}"><i class="fa fa-cogs fa-fw fa-lg" aria-hidden="true"></i> Global Settings</a></li>
|
||||
<li><a href="{{ url('validate') }}"><i class="fa fa-check-circle fa-fw fa-lg" aria-hidden="true"></i> Validate Config</a></li>
|
||||
<li><a href="{{ url('settings') }}"><i class="fa fa-cogs fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Global Settings')</a></li>
|
||||
<li><a href="{{ url('validate') }}"><i class="fa fa-check-circle fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Validate Config')</a></li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li><a href="{{ route('users.index') }}"><i class="fa fa-user-circle-o fa-fw fa-lg" aria-hidden="true"></i> Manage Users</a></li>
|
||||
<li><a href="{{ url('authlog') }}"><i class="fa fa-shield fa-fw fa-lg" aria-hidden="true"></i> Auth History</a></li>
|
||||
<li><a href="{{ route('users.index') }}"><i class="fa fa-user-circle-o fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Manage Users')</a>
|
||||
</li>
|
||||
<li><a href="{{ url('authlog') }}"><i class="fa fa-shield fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('Auth History')</a></li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li class="dropdown-submenu">
|
||||
<a href="{{ url('pollers') }}"><i class="fa fa-th-large fa-fw fa-lg" aria-hidden="true"></i> @lang('Pollers')</a>
|
||||
@ -384,10 +521,14 @@
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li class="dropdown-submenu">
|
||||
<a href="#"><i class="fa fa-code fa-fw fa-lg" aria-hidden="true"></i> API</a>
|
||||
<a href="#"><i class="fa fa-code fa-fw fa-lg" aria-hidden="true"></i> @lang('API')</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{ url('api-access') }}"><i class="fa fa-cog fa-fw fa-lg" aria-hidden="true"></i> API Settings</a></li>
|
||||
<li><a href="https://docs.librenms.org/API/" target="_blank" rel="noopener"><i class="fa fa-book fa-fw fa-lg" aria-hidden="true"></i> API Docs</a></li>
|
||||
<li><a href="{{ url('api-access') }}"><i class="fa fa-cog fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('API Settings')
|
||||
</a></li>
|
||||
<li><a href="https://docs.librenms.org/API/" target="_blank" rel="noopener"><i
|
||||
class="fa fa-book fa-fw fa-lg" aria-hidden="true"></i> @lang('API Docs')</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
@ -401,7 +542,9 @@
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
@endif
|
||||
<li><a href="{{ url('about') }}"><i class="fa fa-info-circle fa-fw fa-lg" aria-hidden="true"></i> About {{ \LibreNMS\Config::get('project_name') }}</a></li>
|
||||
<li><a href="{{ url('about') }}"><i class="fa fa-info-circle fa-fw fa-lg"
|
||||
aria-hidden="true"></i> @lang('About :project_name', ['project_name' => \LibreNMS\Config::get('project_name')])
|
||||
</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
Loading…
Reference in New Issue
Block a user