head.inc 6.1 KB
Newer Older
Ad Schellevis's avatar
Ad Schellevis committed
1 2
<?php

3 4
function system_get_language_code() {
	global $config;
5
	$code = "en-US"; // Set default code.
6 7

	// a language code, as per [RFC3066]
8 9 10
	if (isset($config['system']['language'])) {
		$language = $config['system']['language'];
		$code = str_replace("_", "-", $language);
11
	}
12 13 14 15

	return $code;
}

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
// link menu system
$menu = new OPNsense\Base\Menu\MenuSystem();

// add interfaces to "Interfaces" menu tab... kind of a hack, may need some improvement.
$cnf = OPNsense\Core\Config::getInstance();
$ifarr = array();
foreach ($cnf->object()->interfaces->children() as $key => $node) {
    $ifarr[$key] = $node->descr ? $node->descr->__toString() : strtoupper($key);
}
natcasesort($ifarr);
$ordid = 0;
foreach ($ifarr as $key => $descr) {
    $menu->appendItem('Interfaces', $key, array(
        'url' => '/interfaces.php?if=' . $key,
        'visiblename' => '[' . $descr . ']',
        'cssclass' => 'fa fa-sitemap',
        'order' => $ordid++,
    ));
}
unset($ifarr);
$menuSystem = $menu->getItems($_SERVER['REQUEST_URI']);
37 38 39 40 41 42

/* XXX workaround for dashboard */
if (!isset($menuBreadcrumbs)) {
	/* XXX generating breadcrumbs requires getItems() call */
	$menuBreadcrumbs = $menu->getBreadcrumbs();
}
43

Ad Schellevis's avatar
Ad Schellevis committed
44 45
$g['theme'] = get_current_theme();

46
$pagetitle = gentitle(array_reverse($menuBreadcrumbs), ' | ');
47
$pagetitle .= sprintf(' | %s.%s', $config['system']['hostname'], $config['system']['domain']);
Ad Schellevis's avatar
Ad Schellevis committed
48

49
?><!doctype html>
50 51 52 53
<!--[if IE 8 ]><html lang="<?=system_get_language_code();?>" class="ie ie8 lte9 lte8 no-js"><![endif]-->
<!--[if IE 9 ]><html lang="<?=system_get_language_code();?>" class="ie ie9 lte9 no-js"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html lang="<?=system_get_language_code();?>" class="no-js"><!--<![endif]-->
	<head>
Ad Schellevis's avatar
Ad Schellevis committed
54

55 56
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
57

58 59 60 61 62
		<meta name="robots" content="index, follow, noodp, noydir" />
		<meta name="keywords" content="" />
		<meta name="description" content="" />
		<meta name="copyright" content="" />
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
63

64
		<title><?= $pagetitle ?></title>
65

66 67 68
		<!-- include (theme) style -->
		<link href="/ui/themes/<?=$g['theme'];?>/build/css/main.css" media="screen, projection" rel="stylesheet">

69 70 71 72 73 74 75 76
		<!-- TODO: move to theme style -->
		<style>
			.menu-level-3-item {
				font-size: 90%;
				padding-left: 54px !important;
			}
		</style>

77
		<!-- Favicon -->
78 79 80 81 82 83 84 85
		<link href="/ui/themes/<?=$g['theme'];?>/build/images/favicon.png" rel="shortcut icon">

		<!-- Stylesheet for fancy select/dropdown -->
		<link rel="stylesheet" type="text/css" href="/ui/themes/<?=$g['theme'];?>/build/css/bootstrap-select.css">

		<!-- bootstrap dialog -->
		<link href="/ui/themes/<?=$g['theme'];?>/build/css/bootstrap-dialog.css" rel="stylesheet" type="text/css" />

86

87 88 89
		<!-- Font awesome -->
		<link rel="stylesheet" href="/ui/css/font-awesome.min.css">

90
		<!--[if lt IE 9]><script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script><![endif]-->
91

92 93
		<!-- nvd3 -->
		<link rel="stylesheet" href="/ui/css/nv.d3.css">
94

Ad Schellevis's avatar
Ad Schellevis committed
95
		<script>var theme = '<?=$g['theme'];?>'; </script>
96

97
		<!-- JQuery -->
98
		<script type="text/javascript" src="/ui/js/jquery-1.11.2.min.js"></script>
99

100
		<!-- Ticker used for notices-->
101
		<script type="text/javascript" src="/javascript/ticker.js"></script>
102

103 104
		<!-- d3 -->
		<script type="text/javascript" src="/ui/js/d3.min.js"></script>
105

106 107
		<!-- nvd3 -->
		<script type="text/javascript" src="/ui/js/nv.d3.min.js"></script>
108

109 110 111
		<!-- append some helper functions to integrate into the legacy code -->
		<script type="text/javascript" src="/javascript/opnsense_legacy.js"></script>

112 113 114 115 116 117
		<?php
		/*
		 *	Find all javascript files that need to be included
		 *	for this page ... from the arrays ... :)
		 *	Coded by: Erik Kristensen
		 */
118

119 120
		$dir  = trim(basename($_SERVER['SCRIPT_FILENAME'], '.php'));
		$path = '/usr/local/www/javascript/' . $dir . '/';
121 122 123
		if (is_dir($path)) {
			if ($dh = opendir($path)) {
				while (($file = readdir($dh)) !== false) {
124
					if (is_dir($file))
125 126 127 128 129 130
						continue;
					echo "\t<script type=\"text/javascript\" src=\"/javascript/{$dir}/{$file}\"></script>\n";
				}
				closedir($dh);
			}
		}
131

132
		?>
133

134
		<?php if (basename($_SERVER["SCRIPT_FILENAME"] != "index.php")): ?>
Ad Schellevis's avatar
Ad Schellevis committed
135 136
		<script type="text/javascript">
		//<![CDATA[
137 138
		$( document ).ready(function() {
			$('[data-toggle="tooltip"]').tooltip();
139
			$("input").attr("autocomplete","off");
140 141
			// hide empty menu items
			$('#mainmenu > div > .collapse').each(function(){
142 143 144 145 146 147 148 149 150
				// cleanup empty second level menu containers
				$(this).find("div.collapse").each(function(){
					if ($(this).children().length == 0 ) {
							$("#mainmenu").find('[href="#'+$(this).attr('id')+'"]').remove();
							$(this).remove();
					}
				});

				// cleanup empty first level menu items
151 152 153 154
				if ($(this).children().length == 0) {
					$("#mainmenu").find('[href="#'+$(this).attr('id')+'"]').remove();
				}
			});
155 156 157

			// link showhelp class behavior
			$("a[class='showhelp']").click(function (event) {
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
				$("*[for='" + $(this).attr('id') + "']").toggleClass("hidden show");
				event.preventDefault();
			});

			// handle all help messages show/hide
			$('[id*="show_all_help"]').click(function(event) {
				$('[id*="show_all_help"]').toggleClass("fa-toggle-on fa-toggle-off");
				$('[id*="show_all_help"]').toggleClass("text-success text-danger");
				if ($('[id*="show_all_help"]').hasClass("fa-toggle-on")) {
					$('[for*="help_for"]').addClass("show");
					$('[for*="help_for"]').removeClass("hidden");
				} else {
					$('[for*="help_for"]').addClass("hidden");
					$('[for*="help_for"]').removeClass("show");
				}
				event.preventDefault();
			});
175

176 177
			// hide submenu items
			$('#mainmenu .list-group-item').click(function(){
Ad Schellevis's avatar
Ad Schellevis committed
178 179 180 181 182 183 184
				if($(this).attr('href').substring(0,1) == '#') {
						$('#mainmenu .list-group-item').each(function(){
								if ($(this).attr('aria-expanded') == 'true' && $(this).data('parent') != '#mainmenu') {
									$("#"+$(this).attr('href').substring(1,999)).collapse('hide');
								}
						});
				}
185 186
			});

187
		});
Ad Schellevis's avatar
Ad Schellevis committed
188 189 190
		//]]>
		</script>

191
		<?php endif; ?>
Ad Schellevis's avatar
Ad Schellevis committed
192

193

194
<?php if (!isset($closehead) || !$closehead):?></head><?php endif;?>