2010-12-03 15:56:57 +00:00
< ? php
2015-07-13 20:10:26 +02:00
require $config [ 'install_dir' ] . '/includes/object-cache.inc.php' ;
2010-01-28 17:47:48 +00:00
2012-05-25 12:24:34 +00:00
// FIXME - this could do with some performance improvements, i think. possible rearranging some tables and setting flags at poller time (nothing changes outside of then anyways)
2012-04-20 10:36:59 +00:00
2011-05-12 20:09:10 +00:00
$service_alerts = dbFetchCell ( " SELECT COUNT(service_id) FROM services WHERE service_status = '0' " );
2012-05-16 13:25:50 +00:00
$if_alerts = dbFetchCell ( " SELECT COUNT(port_id) FROM `ports` WHERE `ifOperStatus` = 'down' AND `ifAdminStatus` = 'up' AND `ignore` = '0' " );
2011-05-12 20:09:10 +00:00
2015-03-28 13:08:55 +00:00
if ( $_SESSION [ 'userlevel' ] >= 5 ) {
$links [ 'count' ] = dbFetchCell ( " SELECT COUNT(*) FROM `links` " );
2015-07-13 20:10:26 +02:00
}
else {
$links [ 'count' ] = dbFetchCell ( " SELECT COUNT(*) FROM `links` AS `L`, `devices` AS `D`, `devices_perms` AS `P` WHERE `P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id` AND `L`.`local_device_id` = `D`.`device_id` " , array ( $_SESSION [ 'user_id' ]));
2015-03-28 13:08:55 +00:00
}
2015-07-13 20:10:26 +02:00
if ( isset ( $config [ 'enable_bgp' ]) && $config [ 'enable_bgp' ]) {
$bgp_alerts = dbFetchCell ( " SELECT COUNT(bgpPeer_id) FROM bgpPeers AS B where (bgpPeerAdminStatus = 'start' OR bgpPeerAdminStatus = 'running') AND bgpPeerState != 'established' " );
2010-07-27 20:49:31 +00:00
}
2010-01-28 17:47:48 +00:00
2015-03-31 18:08:13 +01:00
if ( isset ( $config [ 'site_style' ]) && ( $config [ 'site_style' ] == 'dark' || $config [ 'site_style' ] == 'mono' )) {
2015-03-26 23:51:13 +00:00
$navbar = 'navbar-inverse' ;
}
2010-01-28 17:47:48 +00:00
?>
2015-03-26 23:51:13 +00:00
< nav class = " navbar navbar-default <?php echo $navbar ; ?> navbar-fixed-top " role = " navigation " >
2014-06-15 01:36:49 +01:00
< div class = " container-fluid " >
2014-01-13 10:05:19 +00:00
< div class = " navbar-header " >
2014-06-15 01:36:49 +01:00
< button type = " button " class = " navbar-toggle " data - toggle = " collapse " data - target = " #navHeaderCollapse " >
< span class = " sr-only " > Toggle navigation </ span >
< span class = " icon-bar " ></ span >
< span class = " icon-bar " ></ span >
< span class = " icon-bar " ></ span >
</ button >
2014-01-14 19:40:59 +00:00
< ? php
2015-07-13 20:10:26 +02:00
if ( $config [ 'title_image' ]) {
2015-08-05 21:00:21 +00:00
echo ( '<a class="hidden-md hidden-sm navbar-brand" href=""><img src="' . $config [ 'title_image' ] . '" /></a>' );
2015-07-13 20:10:26 +02:00
}
else {
2015-08-05 21:00:21 +00:00
echo ( '<a class="hidden-md hidden-sm navbar-brand" href="">' . $config [ 'project_name' ] . '</a>' );
2015-07-13 20:10:26 +02:00
}
2014-01-14 19:40:59 +00:00
?>
2014-01-13 10:05:19 +00:00
</ div >
2014-06-15 01:36:49 +01:00
< div class = " collapse navbar-collapse " id = " navHeaderCollapse " >
2014-01-13 10:05:19 +00:00
< ul class = " nav navbar-nav " >
< li class = " dropdown " >
2015-03-31 12:17:41 +01:00
< a href = " <?php echo(generate_url(array('page'=>'overview'))); ?> " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-lightbulb-o fa-fw fa-lg fa-nav-icons " ></ i > Overview </ a >
2014-01-13 10:05:19 +00:00
< ul class = " dropdown-menu " >
2015-03-26 23:51:13 +00:00
< li >< a href = " <?php echo(generate_url(array('page'=>'overview'))); ?> " >< i class = " fa fa-lightbulb-o fa-fw fa-lg " ></ i > Overview </ a ></ li >
2015-02-20 14:25:36 +01:00
< li class = " dropdown-submenu " >
2015-10-02 15:50:41 +02:00
< a >< i class = " fa fa-exclamation-circle fa-fw fa-lg " > </ i > Alerts </ a >
2015-02-20 14:25:36 +01:00
< ul class = " dropdown-menu scrollable-menu " >
2015-04-22 17:25:46 +01:00
< li >< a href = " <?php echo(generate_url(array('page'=>'alerts'))); ?> " >< i class = " fa fa-bell fa-fw fa-lg " ></ i > Notifications </ a ></ li >
< li >< a href = " <?php echo(generate_url(array('page'=>'alert-log'))); ?> " >< i class = " fa fa-th-list fa-fw fa-lg " ></ i > Historical Log </ a ></ li >
< li >< a href = " <?php echo(generate_url(array('page'=>'alert-stats'))); ?> " >< i class = " fa fa-bar-chart fa-fw fa-lg " ></ i > Statistics </ a ></ li >
2014-11-30 17:49:52 +00:00
< ? php
2015-02-16 23:45:28 +00:00
if ( $_SESSION [ 'userlevel' ] >= '10' ) {
2014-11-30 17:49:52 +00:00
?>
2015-04-22 17:25:46 +01:00
< li >< a href = " <?php echo(generate_url(array('page'=>'alert-rules'))); ?> " >< i class = " fa fa-tasks fa-fw fa-lg " ></ i > Rules </ a ></ li >
2015-04-19 20:41:13 +01:00
< li >< a href = " <?php echo(generate_url(array('page'=>'alert-schedule'))); ?> " >< i class = " fa fa-calendar fa-fw fa-lg " ></ i > Maintenance Windows </ a ></ li >
2015-04-22 17:25:46 +01:00
< li >< a href = " <?php echo(generate_url(array('page'=>'alert-map'))); ?> " >< i class = " fa fa-link fa-fw fa-lg " ></ i > Rule Mapping </ a ></ li >
< li >< a href = " <?php echo(generate_url(array('page'=>'templates'))); ?> " >< i class = " fa fa-sitemap fa-fw fa-lg " ></ i > Templates </ a ></ li >
2014-11-30 17:49:52 +00:00
< ? php
}
?>
2015-02-20 14:25:36 +01:00
</ ul >
2015-07-17 00:36:29 +02:00
</ li >
< li class = " dropdown-submenu " >
< a href = " <?php echo(generate_url(array('page'=>'overview'))); ?> " >< i class = " fa fa-sitemap fa-fw fa-lg " ></ i > Maps </ a >
< ul class = " dropdown-menu scrollable-menu " >
< li >< a href = " <?php echo(generate_url(array('page'=>'availability-map'))); ?> " >< i class = " fa fa-arrow-circle-up fa-fw fa-lg " ></ i > Availability </ a ></ li >
2015-07-17 13:05:25 +02:00
< li >< a href = " <?php echo(generate_url(array('page'=>'map'))); ?> " >< i class = " fa fa-desktop fa-fw fa-lg " ></ i > Network </ a ></ li >
2015-07-17 00:36:29 +02:00
</ ul >
2015-02-20 14:25:36 +01:00
</ li >
2014-02-26 03:27:52 +00:00
< li role = " presentation " class = " divider " ></ li >
2015-03-26 23:51:13 +00:00
< li >< a href = " <?php echo(generate_url(array('page'=>'eventlog'))); ?> " >< i class = " fa fa-book fa-fw fa-lg " ></ i > Eventlog </ a ></ li >
2015-08-10 13:36:55 -07:00
< ? php
if ( isset ( $config [ 'enable_syslog' ]) && $config [ 'enable_syslog' ]) {
echo ' <li><a href="' . generate_url ( array ( 'page' => 'syslog' )) . '"><i class="fa fa-book fa-fw fa-lg"></i> Syslog</a></li>' ;
}
if ( isset ( $config [ 'graylog' ][ 'server' ]) && isset ( $config [ 'graylog' ][ 'port' ])) {
echo ' <li><a href="' . generate_url ( array ( 'page' => 'graylog' )) . '"><i class="fa fa-book fa-fw fa-lg"></i> Graylog</a></li>' ;
}
?>
2015-03-26 23:51:13 +00:00
< li >< a href = " <?php echo(generate_url(array('page'=>'inventory'))); ?> " >< i class = " fa fa-cube fa-fw fa-lg " ></ i > Inventory </ a ></ li >
2015-08-30 17:59:05 +01:00
< ? php
if ( dbFetchCell ( " SELECT 1 from `packages` LIMIT 1 " ) ) {
?>
< li >
2015-09-22 23:45:33 +02:00
< a href = " <?php echo(generate_url(array('page'=>'search','search'=>'packages'))); ?> " >< i class = " fa fa-archive fa-fw fa-lg " ></ i > Packages </ a >
2015-08-30 17:59:05 +01:00
</ li >
< ? php
} # if ($packages)
?>
2014-01-13 10:05:19 +00:00
< li role = " presentation " class = " divider " ></ li >
< li role = " presentation " class = " dropdown-header " > Search </ li >
2015-03-26 23:51:13 +00:00
< li >< a href = " <?php echo(generate_url(array('page'=>'search','search'=>'ipv4'))); ?> " >< i class = " fa fa-search fa-fw fa-lg " ></ i > IPv4 Search </ a ></ li >
< li >< a href = " <?php echo(generate_url(array('page'=>'search','search'=>'ipv6'))); ?> " >< i class = " fa fa-search fa-fw fa-lg " ></ i > IPv6 Search </ a ></ li >
< li >< a href = " <?php echo(generate_url(array('page'=>'search','search'=>'mac'))); ?> " >< i class = " fa fa-search fa-fw fa-lg " ></ i > MAC Search </ a ></ li >
< li >< a href = " <?php echo(generate_url(array('page'=>'search','search'=>'arp'))); ?> " >< i class = " fa fa-search fa-fw fa-lg " ></ i > ARP Tables </ a ></ li >
2014-01-13 10:05:19 +00:00
</ ul >
</ li >
< li class = " dropdown " >
2015-03-31 12:17:41 +01:00
< a href = " devices/ " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-server fa-fw fa-lg fa-nav-icons " ></ i > Devices </ a >
2014-01-13 10:05:19 +00:00
< ul class = " dropdown-menu " >
2015-02-16 17:47:00 +00:00
< li class = " dropdown-submenu " >
2015-03-26 23:51:13 +00:00
< a href = " devices/ " >< i class = " fa fa-server fa-fw fa-lg " ></ i > All Devices </ a >
2015-02-16 17:47:00 +00:00
< ul class = " dropdown-menu scrollable-menu " >
2010-01-28 17:47:48 +00:00
< ? php
2010-07-30 17:05:25 +00:00
2015-04-22 21:11:18 +01:00
if ( is_admin () === TRUE || is_read () === TRUE ) {
$sql = " SELECT `type`,COUNT(`type`) AS total_type FROM `devices` AS D WHERE 1 GROUP BY `type` ORDER BY `type` " ;
2015-07-13 20:10:26 +02:00
}
else {
2015-04-22 21:11:18 +01:00
$sql = " SELECT `type`,COUNT(`type`) AS total_type FROM `devices` AS `D`, `devices_perms` AS `P` WHERE `P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id` GROUP BY `type` ORDER BY `type` " ;
$param [] = $_SESSION [ 'user_id' ];
}
2015-07-13 20:10:26 +02:00
2015-04-22 21:11:18 +01:00
foreach ( dbFetchRows ( $sql , $param ) as $devtype ) {
2015-02-16 17:47:00 +00:00
if ( empty ( $devtype [ 'type' ])) {
2015-03-10 14:07:40 +00:00
$devtype [ 'type' ] = 'generic' ;
2015-02-16 17:47:00 +00:00
}
2015-03-26 23:51:13 +00:00
echo ( ' <li><a href="devices/type=' . $devtype [ 'type' ] . '/"><i class="fa fa-angle-double-right fa-fw fa-lg"></i> ' . ucfirst ( $devtype [ 'type' ]) . '</a></li>' );
2010-07-30 17:05:25 +00:00
}
2015-04-03 18:22:29 +00:00
2015-02-16 17:47:00 +00:00
echo ( ' </ ul >
</ li > ' );
2015-10-02 17:05:36 -03:00
require_once '../includes/device-groups.inc.php' ;
$devices_groups = GetDeviceGroups ();
if ( count ( $devices_groups ) > 0 ){
2015-10-06 08:12:31 -03:00
echo '<li class="dropdown-submenu"><a href="#"><i class="fa fa-th fa-fw fa-lg"></i> Device Groups</a><ul class="dropdown-menu scrollable-menu">' ;
2015-10-02 17:18:34 -03:00
foreach ( $devices_groups as $group ) {
2015-10-02 17:05:36 -03:00
echo '<li><a href="' . generate_url ( array ( 'page' => 'devices' , 'group' => $group [ 'id' ])) . '" alt="' . $group [ 'desc' ] . '"><i class="fa fa-th fa-fw fa-lg"></i> ' . ucfirst ( $group [ 'name' ]) . '</a></li>' ;
}
unset ( $group );
echo '</ul></li>' ;
}
2015-02-16 17:47:00 +00:00
if ( $_SESSION [ 'userlevel' ] >= '10' ) {
2015-07-13 20:10:26 +02:00
if ( $config [ 'show_locations' ]) {
echo ( '
2015-03-26 23:51:13 +00:00
< li role = " presentation " class = " divider " ></ li >
2014-01-13 10:05:19 +00:00
< li class = " dropdown-submenu " >
2015-07-13 20:10:26 +02:00
< a href = " # " >< i class = " fa fa-map-marker fa-fw fa-lg " ></ i > Locations </ a >
< ul class = " dropdown-menu scrollable-menu " >
' );
if ( $config [ 'show_locations_dropdown' ]) {
foreach ( getlocations () as $location ) {
echo ( ' <li><a href="devices/location=' . urlencode ( $location ) . '/"><i class="fa fa-building-o fa-fw fa-lg"></i> ' . $location . ' </a></li>' );
}
}
echo ( '
</ ul >
2014-01-13 10:05:19 +00:00
</ li >
2015-07-13 20:10:26 +02:00
' );
}
2015-07-30 18:04:27 +00:00
echo '
2015-03-26 23:51:13 +00:00
< li role = " presentation " class = " divider " ></ li >
2015-07-30 18:04:27 +00:00
' ;
if ( $config [ 'navbar' ][ 'manage_groups' ][ 'hide' ] === 0 ) {
echo '<li><a href="' . generate_url ( array ( 'page' => 'device-groups' )) . '"><i class="fa fa-th fa-fw fa-lg"></i> Manage Groups</a></li>' ;
}
echo '
2015-05-15 12:44:29 +05:30
< li >< a href = " addhost/ " >< i class = " fa fa-plus fa-col-success fa-fw fa-lg " ></ i > Add Device </ a ></ li >
2015-07-30 18:04:27 +00:00
< li >< a href = " delhost/ " >< i class = " fa fa-trash fa-col-info fa-fw fa-lg " ></ i > Delete Device </ a ></ li > ' ;
2010-01-28 17:47:48 +00:00
}
2015-03-28 13:08:55 +00:00
?>
2011-09-02 19:25:54 +00:00
</ ul >
2014-01-13 10:05:19 +00:00
</ li >
2011-09-02 19:25:54 +00:00
2011-09-06 10:07:17 +00:00
< ? php
2015-07-13 20:10:26 +02:00
if ( $config [ 'show_services' ]) {
2011-09-06 10:07:17 +00:00
?>
2014-01-13 10:05:19 +00:00
< li class = " dropdown " >
2015-03-31 12:17:41 +01:00
< a href = " services/ " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-cogs fa-fw fa-lg fa-nav-icons " ></ i > Services </ a >
2014-01-13 10:05:19 +00:00
< ul class = " dropdown-menu " >
2015-03-26 23:51:13 +00:00
< li >< a href = " services/ " >< i class = " fa fa-cogs fa-fw fa-lg " ></ i > All Services </ a ></ li >
2011-09-02 19:25:54 +00:00
2012-01-19 10:35:27 +00:00
< ? php
2015-07-13 20:10:26 +02:00
if ( $service_alerts ) {
echo ( '
2014-01-13 10:05:19 +00:00
< li role = " presentation " class = " divider " ></ li >
2015-03-26 23:51:13 +00:00
< li >< a href = " services/status=0/ " >< i class = " fa fa-bell-o fa-fw fa-lg " ></ i > Alerts ( '.$service_alerts.' ) </ a ></ li > ' );
2012-01-19 10:35:27 +00:00
}
2010-01-28 17:47:48 +00:00
2015-07-13 20:10:26 +02:00
if ( $_SESSION [ 'userlevel' ] >= '10' ) {
echo ( '
2014-01-13 10:05:19 +00:00
< li role = " presentation " class = " divider " ></ li >
2015-03-26 23:51:13 +00:00
< li >< a href = " addsrv/ " >< i class = " fa fa-cog fa-col-success fa-fw fa-lg " ></ i > Add Service </ a ></ li >
2015-05-19 17:18:39 +01:00
< li >< a href = " editsrv/ " >< i class = " fa fa-cog fa-col-primary fa-fw fa-lg " ></ i > Edit Service </ a ></ li >
< li >< a href = " delsrv/ " >< i class = " fa fa-cog fa-col-danger fa-fw fa-lg " ></ i > Delete Service </ a ></ li > ' );
2010-01-28 17:47:48 +00:00
}
?>
2014-01-13 10:05:19 +00:00
</ ul >
</ li >
2011-09-02 19:25:54 +00:00
< ? php
2011-09-06 10:07:17 +00:00
}
2010-01-28 17:47:48 +00:00
?>
2011-09-02 19:25:54 +00:00
<!-- PORTS -->
2014-01-13 10:05:19 +00:00
< li class = " dropdown " >
2015-03-31 12:17:41 +01:00
< a href = " ports/ " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-link fa-fw fa-lg fa-nav-icons " ></ i > Ports </ a >
2014-01-13 10:05:19 +00:00
< ul class = " dropdown-menu " >
2015-03-26 23:51:13 +00:00
< li >< a href = " ports/ " >< i class = " fa fa-link fa-fw fa-lg " ></ i > All Ports </ a ></ li >
2010-01-28 17:47:48 +00:00
< ? php
2015-04-12 15:56:54 +00:00
$ports = new ObjCache ( 'ports' );
2010-01-28 17:47:48 +00:00
2015-07-13 20:10:26 +02:00
if ( $ports [ 'errored' ] > 0 ) {
echo ( ' <li><a href="ports/errors=1/"><i class="fa fa-exclamation-circle fa-fw fa-lg"></i> Errored (' . $ports [ 'errored' ] . ')</a></li>' );
2010-01-28 17:47:48 +00:00
}
2015-07-13 20:10:26 +02:00
if ( $ports [ 'ignored' ] > 0 ) {
echo ( ' <li><a href="ports/ignore=1/"><i class="fa fa-question-circle fa-fw fa-lg"></i> Ignored (' . $ports [ 'ignored' ] . ')</a></li>' );
2010-02-25 22:23:48 +00:00
}
2014-01-13 10:05:19 +00:00
if ( $config [ 'enable_billing' ]) {
2015-07-13 20:10:26 +02:00
echo ( ' <li><a href="bills/"><i class="fa fa-money fa-fw fa-lg"></i> Traffic Bills</a></li>' );
$ifbreak = 1 ;
2014-01-13 10:05:19 +00:00
}
2010-01-28 17:47:48 +00:00
2014-01-13 10:05:19 +00:00
if ( $config [ 'enable_pseudowires' ]) {
2015-07-13 20:10:26 +02:00
echo ( ' <li><a href="pseudowires/"><i class="fa fa-arrows-alt fa-fw fa-lg"></i> Pseudowires</a></li>' );
$ifbreak = 1 ;
2014-01-13 10:05:19 +00:00
}
2010-01-28 17:47:48 +00:00
2010-12-03 15:56:57 +00:00
?>
2010-01-28 17:47:48 +00:00
< ? php
2015-07-13 20:10:26 +02:00
if ( $_SESSION [ 'userlevel' ] >= '5' ) {
echo ( ' <li role="presentation" class="divider"></li>' );
if ( $config [ 'int_customers' ]) {
echo ( ' <li><a href="customers/"><i class="fa fa-users fa-fw fa-lg"></i> Customers</a></li>' );
$ifbreak = 1 ;
}
if ( $config [ 'int_l2tp' ]) {
echo ( ' <li><a href="iftype/type=l2tp/"><i class="fa fa-link fa-fw fa-lg"></i> L2TP</a></li>' );
$ifbreak = 1 ;
}
if ( $config [ 'int_transit' ]) {
echo ( ' <li><a href="iftype/type=transit/"><i class="fa fa-truck fa-fw fa-lg"></i> Transit</a></li>' );
$ifbreak = 1 ;
}
if ( $config [ 'int_peering' ]) {
echo ( ' <li><a href="iftype/type=peering/"><i class="fa fa-user-plus fa-fw fa-lg"></i> Peering</a></li>' );
$ifbreak = 1 ;
}
if ( $config [ 'int_peering' ] && $config [ 'int_transit' ]) {
echo ( ' <li><a href="iftype/type=peering,transit/"><i class="fa fa-user-secret fa-fw fa-lg"></i> Peering + Transit</a></li>' );
$ifbreak = 1 ;
}
if ( $config [ 'int_core' ]) {
echo ( ' <li><a href="iftype/type=core/"><i class="fa fa-anchor fa-fw fa-lg"></i> Core</a></li>' );
$ifbreak = 1 ;
}
2015-05-24 20:07:37 +01:00
if ( is_array ( $config [ 'custom_descr' ]) === FALSE ) {
$config [ 'custom_descr' ] = array ( $config [ 'custom_descr' ]);
}
foreach ( $config [ 'custom_descr' ] as $custom_type ) {
if ( ! empty ( $custom_type )) {
echo ' <li><a href="iftype/type=' . strtolower ( $custom_type ) . '"><i class="fa fa-connectdevelop fa-fw fa-lg"></i> ' . ucfirst ( $custom_type ) . '</a></li>' ;
$ifbreak = 1 ;
}
}
2010-01-28 17:47:48 +00:00
}
2014-01-13 10:05:19 +00:00
if ( $ifbreak ) {
2015-07-13 20:10:26 +02:00
echo ( ' <li role="presentation" class="divider"></li>' );
2014-01-13 10:05:19 +00:00
}
2010-01-28 17:47:48 +00:00
2015-07-13 20:10:26 +02:00
if ( isset ( $interface_alerts )) {
echo ( ' <li><a href="ports/alerted=yes/"><i class="fa fa-exclamation-circle fa-fw fa-lg"></i> Alerts (' . $interface_alerts . ')</a></li>' );
2010-01-28 17:47:48 +00:00
}
2010-12-03 15:56:57 +00:00
$deleted_ports = 0 ;
2015-07-13 20:10:26 +02:00
foreach ( dbFetchRows ( " SELECT * FROM `ports` AS P, `devices` as D WHERE P.`deleted` = '1' AND D.device_id = P.device_id " ) as $interface ) {
if ( port_permitted ( $interface [ 'port_id' ], $interface [ 'device_id' ])) {
$deleted_ports ++ ;
}
2010-12-03 15:56:57 +00:00
}
2010-01-28 17:47:48 +00:00
?>
2015-05-15 22:48:46 +05:30
< li >< a href = " ports/state=down/ " >< i class = " fa fa-exclamation-triangle fa-col-danger fa-fw fa-lg " ></ i > Down </ a ></ li >
2015-05-15 12:48:24 +05:30
< li >< a href = " ports/state=admindown/ " >< i class = " fa fa-pause fa-col-info fa-fw fa-lg " ></ i > Disabled </ a ></ li >
2010-06-10 19:47:50 +00:00
< ? php
2010-04-24 22:58:36 +00:00
2015-07-13 20:10:26 +02:00
if ( $deleted_ports ) {
echo ( ' <li><a href="deleted-ports/"><i class="fa fa-minus-circle fa-col-primary fa-fw fa-lg"></i> Deleted (' . $deleted_ports . ')</a></li>' );
}
2010-04-24 22:58:36 +00:00
?>
2011-09-02 19:25:54 +00:00
2014-01-13 10:05:19 +00:00
</ ul >
</ li >
2011-04-21 10:37:23 +00:00
< ? php
2012-05-25 12:24:34 +00:00
// FIXME does not check user permissions...
2015-07-13 20:10:26 +02:00
foreach ( dbFetchRows ( " SELECT sensor_class,COUNT(sensor_id) AS c FROM sensors GROUP BY sensor_class ORDER BY sensor_class " ) as $row ) {
$used_sensors [ $row [ 'sensor_class' ]] = $row [ 'c' ];
2011-04-21 10:37:23 +00:00
}
# Copy the variable so we can use $used_sensors later in other parts of the code
$menu_sensors = $used_sensors ;
?>
2010-02-11 23:37:41 +00:00
2014-01-13 10:05:19 +00:00
< li class = " dropdown " >
2015-03-31 12:17:41 +01:00
< a href = " health/ " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-heartbeat fa-fw fa-lg fa-nav-icons " ></ i > Health </ a >
2014-01-13 10:05:19 +00:00
< ul class = " dropdown-menu " >
2015-03-26 23:51:13 +00:00
< li >< a href = " health/metric=mempool/ " >< i class = " fa fa-gears fa-fw fa-lg " ></ i > Memory </ a ></ li >
< li >< a href = " health/metric=processor/ " >< i class = " fa fa-desktop fa-fw fa-lg " ></ i > Processor </ a ></ li >
< li >< a href = " health/metric=storage/ " >< i class = " fa fa-database fa-fw fa-lg " ></ i > Storage </ a ></ li >
2011-04-21 10:37:23 +00:00
< ? php
2015-07-13 20:10:26 +02:00
if ( $menu_sensors ) {
$sep = 0 ;
echo ( ' <li role="presentation" class="divider"></li>' );
2011-04-21 10:37:23 +00:00
}
2015-06-14 23:21:44 +01:00
$icons = array ( 'fanspeed' => 'tachometer' , 'humidity' => 'tint' , 'temperature' => 'fire' , 'current' => 'bolt' , 'frequency' => 'line-chart' , 'power' => 'power-off' , 'voltage' => 'bolt' , 'charge' => 'plus-square' , 'dbm' => 'sun-o' , 'load' => 'spinner' , 'state' => 'bullseye' );
2015-07-13 20:10:26 +02:00
foreach ( array ( 'fanspeed' , 'humidity' , 'temperature' ) as $item ) {
if ( isset ( $menu_sensors [ $item ])) {
echo ( ' <li><a href="health/metric=' . $item . '/"><i class="fa fa-' . $icons [ $item ] . ' fa-fw fa-lg"></i> ' . nicecase ( $item ) . '</a></li>' );
unset ( $menu_sensors [ $item ]); $sep ++ ;
}
2011-04-21 10:37:23 +00:00
}
2015-07-13 20:10:26 +02:00
if ( $sep && array_keys ( $menu_sensors )) {
echo ( ' <li role="presentation" class="divider"></li>' );
$sep = 0 ;
2011-09-19 13:59:08 +00:00
}
2015-07-13 20:10:26 +02:00
foreach ( array ( 'current' , 'frequency' , 'power' , 'voltage' ) as $item ) {
if ( isset ( $menu_sensors [ $item ])) {
echo ( ' <li><a href="health/metric=' . $item . '/"><i class="fa fa-' . $icons [ $item ] . ' fa-fw fa-lg"></i> ' . nicecase ( $item ) . '</a></li>' );
unset ( $menu_sensors [ $item ]); $sep ++ ;
}
2011-09-19 13:59:08 +00:00
}
2015-07-13 20:10:26 +02:00
if ( $sep && array_keys ( $menu_sensors )) {
echo ( ' <li role="presentation" class="divider"></li>' );
$sep = 0 ;
2011-04-21 10:37:23 +00:00
}
2011-09-19 13:59:08 +00:00
2015-07-13 20:10:26 +02:00
foreach ( array_keys ( $menu_sensors ) as $item ) {
echo ( ' <li><a href="health/metric=' . $item . '/"><i class="fa fa-' . $icons [ $item ] . ' fa-fw fa-lg"></i> ' . nicecase ( $item ) . '</a></li>' );
unset ( $menu_sensors [ $item ]); $sep ++ ;
2011-04-27 14:29:11 +00:00
}
2011-04-21 10:37:23 +00:00
?>
2014-01-13 10:05:19 +00:00
</ ul >
</ li >
2010-01-28 17:47:48 +00:00
< ? php
2011-04-30 22:20:11 +00:00
2015-08-28 17:01:51 +02:00
$app_list = dbFetchRows ( " SELECT DISTINCT(`app_type`) AS `app_type` FROM `applications` ORDER BY `app_type` " );
2012-04-20 10:36:59 +00:00
2015-08-28 17:01:51 +02:00
if ( $_SESSION [ 'userlevel' ] >= '5' && count ( $app_list ) > " 0 " ) {
2012-04-20 10:36:59 +00:00
?>
2014-01-13 10:05:19 +00:00
< li class = " dropdown " >
2015-03-31 12:17:41 +01:00
< a href = " apps/ " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-tasks fa-fw fa-lg fa-nav-icons " ></ i > Apps </ a >
2014-01-13 10:05:19 +00:00
< ul class = " dropdown-menu " >
2012-04-20 10:36:59 +00:00
< ? php
2015-07-13 20:10:26 +02:00
foreach ( $app_list as $app ) {
if ( isset ( $app [ 'app_type' ])) {
2015-08-28 17:01:51 +02:00
$app_i_list = dbFetchRows ( " SELECT DISTINCT(`app_instance`) FROM `applications` WHERE `app_type` = ? ORDER BY `app_instance` " , array ( $app [ 'app_type' ]));
2015-07-13 20:10:26 +02:00
$image = $config [ 'html_dir' ] . " /images/icons/ " . $app [ 'app_type' ] . " .png " ;
$icon = ( file_exists ( $image ) ? $app [ 'app_type' ] : " apps " );
2015-08-28 17:01:51 +02:00
if ( count ( $app_i_list ) > 1 ) {
echo '<li class="dropdown-submenu">' ;
echo '<a href="apps/app=' . $app [ 'app_type' ] . '/"><i class="fa fa-server fa-fw fa-lg"></i> ' . nicecase ( $app [ 'app_type' ]) . ' </a>' ;
echo '<ul class="dropdown-menu scrollable-menu">' ;
foreach ( $app_i_list as $instance ) {
echo ' <li><a href="apps/app=' . $app [ 'app_type' ] . '/instance=' . $instance [ 'app_instance' ] . '/"><i class="fa fa-angle-double-right fa-fw fa-lg"></i> ' . nicecase ( $instance [ 'app_instance' ]) . '</a></li>' ;
}
echo '</ul></li>' ;
}
else {
echo ( '<li><a href="apps/app=' . $app [ 'app_type' ] . '/"><i class="fa fa-angle-double-right fa-fw fa-lg"></i> ' . nicecase ( $app [ 'app_type' ]) . ' </a></li>' );
}
2015-07-13 20:10:26 +02:00
}
}
2012-04-20 10:36:59 +00:00
?>
</ ul >
2015-07-13 20:10:26 +02:00
</ li >
2012-04-20 10:36:59 +00:00
< ? php
}
2014-10-29 19:52:50 +00:00
$routing_count [ 'bgp' ] = dbFetchCell ( " SELECT COUNT(bgpPeer_id) from `bgpPeers` LEFT JOIN devices AS D ON bgpPeers.device_id=D.device_id WHERE D.device_id IS NOT NULL " );
2012-04-05 13:21:27 +00:00
$routing_count [ 'ospf' ] = dbFetchCell ( " SELECT COUNT(ospf_instance_id) FROM `ospf_instances` WHERE `ospfAdminStat` = 'enabled' " );
$routing_count [ 'cef' ] = dbFetchCell ( " SELECT COUNT(cef_switching_id) from `cef_switching` " );
$routing_count [ 'vrf' ] = dbFetchCell ( " SELECT COUNT(vrf_id) from `vrfs` " );
2011-04-30 22:20:11 +00:00
2015-07-13 20:10:26 +02:00
if ( $_SESSION [ 'userlevel' ] >= '5' && ( $routing_count [ 'bgp' ] + $routing_count [ 'ospf' ] + $routing_count [ 'cef' ] + $routing_count [ 'vrf' ]) > " 0 " ) {
2011-04-17 12:00:13 +00:00
2011-09-02 19:25:54 +00:00
?>
2014-01-13 10:05:19 +00:00
< li class = " dropdown " >
2015-03-31 12:17:41 +01:00
< a href = " routing/ " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-arrows fa-fw fa-lg fa-nav-icons " ></ i > Routing </ a >
2014-01-13 10:05:19 +00:00
< ul class = " dropdown-menu " >
2011-09-02 19:25:54 +00:00
< ? php
2015-07-13 20:10:26 +02:00
$separator = 0 ;
if ( $_SESSION [ 'userlevel' ] >= '5' && $routing_count [ 'vrf' ]) {
echo ( ' <li><a href="routing/protocol=vrf/"><i class="fa fa-arrows-alt fa-fw fa-lg"></i> VRFs</a></li>' );
$separator ++ ;
2012-04-08 16:09:58 +00:00
}
2015-07-13 20:10:26 +02:00
if ( $_SESSION [ 'userlevel' ] >= '5' && $routing_count [ 'ospf' ]) {
if ( $separator ) {
echo ( ' <li role="presentation" class="divider"></li>' );
$separator = 0 ;
}
echo ( '<li><a href="routing/protocol=ospf/"><i class="fa fa-circle-o-notch fa-rotate-180 fa-fw fa-lg"></i> OSPF Devices </a></li>' );
$separator ++ ;
2012-02-15 20:59:40 +00:00
}
2015-07-13 20:10:26 +02:00
// BGP Sessions
if ( $_SESSION [ 'userlevel' ] >= '5' && $routing_count [ 'bgp' ]) {
if ( $separator ) {
echo ( ' <li role="presentation" class="divider"></li>' );
$separator = 0 ;
}
echo ( ' < li >< a href = " routing/protocol=bgp/type=all/graph=NULL/ " >< i class = " fa fa-link fa-fw fa-lg " ></ i > BGP All Sessions </ a ></ li >
2015-03-26 23:51:13 +00:00
< li >< a href = " routing/protocol=bgp/type=external/graph=NULL/ " >< i class = " fa fa-external-link fa-fw fa-lg " ></ i > BGP External </ a ></ li >
2015-03-31 15:03:39 +02:00
< li >< a href = " routing/protocol=bgp/type=internal/graph=NULL/ " >< i class = " fa fa-external-link fa-rotate-180 fa-fw fa-lg " ></ i > BGP Internal </ a ></ li > ' );
2015-07-13 20:10:26 +02:00
}
2010-01-28 17:47:48 +00:00
2012-05-25 12:24:34 +00:00
// Do Alerts at the bottom
2015-07-13 20:10:26 +02:00
if ( $bgp_alerts ) {
echo ( '
2014-01-13 10:05:19 +00:00
< li role = " presentation " class = " divider " ></ li >
2015-07-13 20:10:26 +02:00
< li >< a href = " routing/protocol=bgp/adminstatus=start/state=down/ " >< i class = " fa fa-exclamation-circle fa-fw fa-lg " ></ i > Alerted BGP ( ' . $bgp_alerts . ' ) </ a ></ li > ' );
}
2011-04-17 12:00:13 +00:00
2015-07-13 20:10:26 +02:00
echo ( ' </ul>' );
2011-09-20 09:55:11 +00:00
?>
2014-01-13 10:05:19 +00:00
</ li ><!-- End 4 columns container -->
2010-01-28 17:47:48 +00:00
2011-09-02 19:25:54 +00:00
< ? php
}
2014-03-12 22:03:47 +00:00
?>
< li class = " dropdown " >
2015-08-05 21:00:21 +00:00
< a href = " # " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-plug fa-fw fa-lg fa-nav-icons " ></ i > < span class = " hidden-md hidden-sm " > Plugins </ span ></ a >
2014-03-12 22:03:47 +00:00
< ul class = " dropdown-menu " >
< ? php
Plugins :: call ( 'menu' );
2015-03-26 23:51:13 +00:00
2015-07-13 20:10:26 +02:00
if ( $_SESSION [ 'userlevel' ] >= '10' ) {
if ( dbFetchCell ( " SELECT COUNT(*) from `plugins` WHERE plugin_active = '1' " ) > 0 ) {
echo ( '<li role="presentation" class="divider"></li>' );
}
echo ( '<li><a href="plugin/view=admin"> <i class="fa fa-lock fa-fw fa-lg"></i>Plugin Admin</a></li>' );
2014-03-12 22:03:47 +00:00
}
?>
</ ul >
</ li >
2012-04-05 13:41:54 +00:00
2014-03-12 22:03:47 +00:00
< ? php
2012-05-25 12:24:34 +00:00
// Custom menubar entries.
2015-07-13 20:10:26 +02:00
if ( is_file ( " includes/print-menubar-custom.inc.php " )) {
require 'includes/print-menubar-custom.inc.php' ;
2012-04-05 13:41:54 +00:00
}
2012-04-05 13:11:20 +00:00
?>
2014-01-13 10:05:19 +00:00
2015-03-12 23:26:47 +00:00
</ ul >
2015-04-29 15:18:14 +01:00
< form role = " search " class = " navbar-form navbar-right global-search " >
2015-03-12 23:26:47 +00:00
< div class = " form-group " >
2015-04-29 15:18:14 +01:00
< input class = " form-control typeahead " type = " search " id = " gsearch " name = " gsearch " placeholder = " Global Search " >
2015-03-12 23:26:47 +00:00
</ div >
</ form >
< ul class = " nav navbar-nav navbar-right " >
2014-01-13 10:05:19 +00:00
< li class = " dropdown " >
2015-03-31 12:17:41 +01:00
< a href = " # " class = " dropdown-toggle " data - hover = " dropdown " data - toggle = " dropdown " >< i class = " fa fa-cog fa-fw fa-lg fa-nav-icons " ></ i ></ a >
2014-01-13 10:05:19 +00:00
< ul class = " dropdown-menu " >
< li role = " presentation " class = " dropdown-header " > Settings </ li >
2012-01-19 10:35:27 +00:00
< ? php
2015-07-13 20:10:26 +02:00
if ( $_SESSION [ 'userlevel' ] >= '10' ) {
echo ( '<li><a href="settings/"><i class="fa fa-cogs fa-fw fa-lg"></i> Global Settings</a></li>' );
2012-01-19 10:35:27 +00:00
}
2015-07-13 20:10:26 +02:00
2012-01-19 10:35:27 +00:00
?>
2015-03-26 23:51:13 +00:00
< li >< a href = " preferences/ " >< i class = " fa fa-cog fa-fw fa-lg " ></ i > My Settings </ a ></ li >
2014-01-13 10:05:19 +00:00
< li role = " presentation " class = " divider " ></ li >
< li role = " presentation " class = " dropdown-header " > Users </ li >
2011-09-02 19:25:54 +00:00
2015-07-13 20:10:26 +02:00
< ? php if ( $_SESSION [ 'userlevel' ] >= '10' ) {
if ( auth_usermanagement ()) {
echo ( '
2015-03-26 23:51:13 +00:00
< li >< a href = " adduser/ " >< i class = " fa fa-user-plus fa-fw fa-lg " ></ i > Add User </ a ></ li >
< li >< a href = " deluser/ " >< i class = " fa fa-user-times fa-fw fa-lg " ></ i > Remove User </ a ></ li >
2015-07-13 20:10:26 +02:00
' );
}
echo ( '
2015-03-26 23:51:13 +00:00
< li >< a href = " edituser/ " >< i class = " fa fa-user-secret fa-fw fa-lg " ></ i > Edit User </ a ></ li >
< li >< a href = " authlog/ " >< i class = " fa fa-key fa-fw fa-lg " ></ i > Authlog </ a ></ li >
2015-07-13 20:10:26 +02:00
< li role = " presentation " class = " divider " ></ li > ' );
echo ( '
2015-03-02 17:02:28 +00:00
< li class = " dropdown-submenu " >
2015-03-26 23:51:13 +00:00
< a href = " # " >< i class = " fa fa-clock-o fa-fw fa-lg " ></ i > Pollers </ a >
2015-03-02 17:02:28 +00:00
< ul class = " dropdown-menu scrollable-menu " >
2015-09-01 19:14:18 +05:30
< li >< a href = " poll-log/ " >< i class = " fa fa-list-alt fa-fw fa-lg " ></ i > Poll - log </ a ></ li > ' );
2015-03-25 22:05:51 +01:00
2015-07-13 20:10:26 +02:00
if ( $config [ 'distributed_poller' ] === TRUE ) {
echo ( '
2015-08-11 14:54:05 -07:00
< li >< a href = " pollers/tab=pollers/ " >< i class = " fa fa-clock-o fa-fw fa-lg " ></ i > Pollers </ a ></ li >
< li >< a href = " pollers/tab=groups/ " >< i class = " fa fa-gears fa-fw fa-lg " ></ i > Groups </ a ></ li > ' );
2015-07-13 20:10:26 +02:00
}
echo ( '
2015-03-02 17:02:28 +00:00
</ ul >
</ li >
2015-07-13 20:10:26 +02:00
< li role = " presentation " class = " divider " ></ li > ' );
echo ( '
2014-07-16 23:10:18 +01:00
< li class = " dropdown-submenu " >
2015-03-26 23:51:13 +00:00
< a href = " # " >< i class = " fa fa-code fa-fw fa-lg " ></ i > API </ a >
2014-07-16 23:10:18 +01:00
< ul class = " dropdown-menu scrollable-menu " >
2015-03-26 23:51:13 +00:00
< li >< a href = " api-access/ " >< i class = " fa fa-wrench fa-fw fa-lg " ></ i > API Settings </ a ></ li >
2015-05-31 17:11:23 +05:30
< li >< a href = " http://docs.librenms.org/API/API-Docs/ " target = " _blank " >< i class = " fa fa-book fa-fw fa-lg " ></ i > API Docs </ a ></ li >
2014-07-16 23:10:18 +01:00
</ ul >
2015-03-08 21:33:40 +00:00
</ li >
2014-07-16 23:10:18 +01:00
< li role = " presentation " class = " divider " ></ li > ' );
2015-10-05 12:27:12 -03:00
}
2015-07-13 20:10:26 +02:00
if ( $_SESSION [ 'authenticated' ]) {
echo ( '
2015-03-08 21:33:40 +00:00
< li class = " dropdown-submenu " >
< a href = " # " >< span class = " countdown_timer " id = " countdown_timer " ></ span ></ a >
< ul class = " dropdown-menu scrollable-menu " >
< li >< a href = " # " >< span class = " countdown_timer_status " id = " countdown_timer_status " ></ span ></ a ></ li >
</ ul >
</ li >
2015-07-13 20:10:26 +02:00
< li >< a href = " logout/ " >< i class = " fa fa-sign-out fa-fw fa-lg " ></ i > Logout </ a ></ li > ' );
2014-01-13 10:05:19 +00:00
}
?>
2011-09-02 19:25:54 +00:00
2014-01-13 10:05:19 +00:00
< li role = " presentation " class = " divider " ></ li >
2015-03-26 23:51:13 +00:00
< li >< a href = " about/ " >< i class = " fa fa-exclamation-circle fa-fw fa-lg " ></ i > About & nbsp ; < ? php echo ( $config [ 'project_name' ]); ?> </a></li>
2014-01-13 10:05:19 +00:00
</ ul >
</ li >
</ ul >
</ div >
</ div >
</ nav >
< script >
2015-04-29 15:18:14 +01:00
var devices = new Bloodhound ({
2015-05-03 23:15:00 +01:00
datumTokenizer : Bloodhound . tokenizers . obj . whitespace ( 'name' ),
2015-04-29 15:18:14 +01:00
queryTokenizer : Bloodhound . tokenizers . whitespace ,
remote : {
url : " ajax_search.php?search=%QUERY&type=device " ,
filter : function ( devices ) {
return $ . map ( devices , function ( device ) {
return {
device_id : device . device_id ,
device_image : device . device_image ,
url : device . url ,
name : device . name ,
device_os : device . device_os ,
version : device . version ,
device_hardware : device . device_hardware ,
device_ports : device . device_ports ,
location : device . location
};
});
},
wildcard : " %QUERY "
}
});
var ports = new Bloodhound ({
datumTokenizer : Bloodhound . tokenizers . obj . whitespace ( 'name' ),
queryTokenizer : Bloodhound . tokenizers . whitespace ,
remote : {
url : " ajax_search.php?search=%QUERY&type=ports " ,
filter : function ( ports ) {
return $ . map ( ports , function ( port ) {
return {
count : port . count ,
url : port . url ,
name : port . name ,
description : port . description ,
colours : port . colours ,
hostname : port . hostname
};
});
},
wildcard : " %QUERY "
}
});
var bgp = new Bloodhound ({
datumTokenizer : Bloodhound . tokenizers . obj . whitespace ( 'name' ),
queryTokenizer : Bloodhound . tokenizers . whitespace ,
remote : {
url : " ajax_search.php?search=%QUERY&type=bgp " ,
filter : function ( bgp_sessions ) {
return $ . map ( bgp_sessions , function ( bgp ) {
return {
count : bgp . count ,
url : bgp . url ,
name : bgp . name ,
description : bgp . description ,
localas : bgp . localas ,
bgp_image : bgp . bgp_image ,
remoteas : bgp . remoteas ,
colours : bgp . colours ,
hostname : bgp . hostname
};
});
},
wildcard : " %QUERY "
}
});
2015-04-29 17:48:57 +01:00
if ( $ ( window ) . width () < 768 ) {
var cssMenu = 'typeahead-left' ;
} else {
var cssMenu = '' ;
}
2015-04-29 15:18:14 +01:00
devices . initialize ();
ports . initialize ();
2015-04-29 17:48:57 +01:00
bgp . initialize ();
2015-07-18 18:27:24 +01:00
$ ( '#gsearch' ) . bind ( 'typeahead:select' , function ( ev , suggestion ) {
window . location . href = suggestion . url ;
});
2015-04-29 15:18:14 +01:00
$ ( '#gsearch' ) . typeahead ({
hint : true ,
highlight : true ,
2015-04-29 17:48:57 +01:00
minLength : 1 ,
classNames : {
menu : cssMenu
}
2015-04-29 15:18:14 +01:00
},
{
source : devices . ttAdapter (),
async : true ,
2015-05-03 23:15:00 +01:00
display : 'name' ,
valueKey : 'name' ,
2015-04-29 15:18:14 +01:00
templates : {
header : '<h5><strong> Devices</strong></h5>' ,
2015-05-03 14:08:45 +01:00
suggestion : Handlebars . compile ( '<p><a href="{{url}}"><img src="{{device_image}}" border="0"> <small><strong>{{name}}</strong> | {{device_os}} | {{version}} | {{device_hardware}} with {{device_ports}} port(s) | {{location}}</small></a></p>' )
2015-04-29 15:18:14 +01:00
}
},
{
source : ports . ttAdapter (),
async : true ,
2015-05-03 23:15:00 +01:00
display : 'name' ,
valueKey : 'name' ,
2015-04-29 15:18:14 +01:00
templates : {
header : '<h5><strong> Ports</strong></h5>' ,
2015-05-03 15:52:04 +01:00
suggestion : Handlebars . compile ( '<p><a href="{{url}}"><small><img src="images/icons/port.png" /> <strong>{{name}}</strong> – {{hostname}}<br /><i>{{description}}</i></small></a></p>' )
2015-04-29 15:18:14 +01:00
}
},
{
source : bgp . ttAdapter (),
async : true ,
2015-05-03 23:15:00 +01:00
display : 'name' ,
valueKey : 'name' ,
2015-04-29 15:18:14 +01:00
templates : {
header : '<h5><strong> BGP Sessions</strong></h5>' ,
2015-05-03 15:52:04 +01:00
suggestion : Handlebars . compile ( '<p><a href="{{url}}"><small><img src="{{bgp_image}}" border="0">{{name}} - {{hostname}}<br />AS{{localas}} -> AS{{remoteas}}</small></a></p>' )
2014-01-13 10:05:19 +00:00
}
2015-04-29 15:18:14 +01:00
});
$ ( '#gsearch' ) . bind ( 'typeahead:open' , function ( ev , suggestion ) {
$ ( '#gsearch' ) . addClass ( 'search-box' );
});
2014-01-13 10:05:19 +00:00
</ script >