default.volt 7.08 KB
Newer Older
1 2 3 4
<!doctype html>
<!--[if IE 8 ]><html lang="en-US" class="ie ie8 lte9 lte8 no-js"><![endif]-->
<!--[if IE 9 ]><html lang="en-US" class="ie ie9 lte9 no-js"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html lang="en-US" class="no-js"><!--<![endif]-->
5
	<head>
6 7 8 9 10 11 12 13 14 15

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

		<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" />

16
		<title>{{title|default("OPNsense") }}</title>
17

18
        <!-- include (theme) style -->
19
		<link href="/ui/themes/{{ui_theme|default('opnsense')}}/build/css/main.css" media="screen, projection" rel="stylesheet">
20

21 22 23 24 25 26 27 28 29
		<!-- TODO: move to theme style -->
		<style>
			.menu-level-3-item {
				font-size: 90%;
				padding-left: 54px !important;
			}

		</style>

30
		<!-- Favicon -->
31
		<link href="/ui/themes/{{ui_theme|default('opnsense')}}/build/images/favicon.png" rel="shortcut icon">
32 33

        <!-- Stylesheet for fancy select/dropdown -->
34 35 36 37
        <link rel="stylesheet" type="text/css" href="/ui/themes/{{ui_theme|default('opnsense')}}/build/css/bootstrap-select.css">

		<!-- bootstrap dialog -->
		<link href="/ui/themes/{{ui_theme|default('opnsense')}}/build/css/bootstrap-dialog.css" rel="stylesheet" type="text/css" />
38 39 40

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

Ad Schellevis's avatar
Ad Schellevis committed
42 43
		<!-- JQuery -->
		<script type="text/javascript" src="/ui/js/jquery-1.11.2.min.js"></script>
44
		<script type="text/javascript">
45 46 47 48 49 50 51 52 53 54
            // setup default scripting after page loading.
            $( document ).ready(function() {
                // hook into jquery ajax requests to ensure csrf handling.
                $.ajaxSetup({
                    'beforeSend': function(xhr) {
                        xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}" );
                        xhr.setRequestHeader("X-CSRFTokenKey", "{{ csrf_tokenKey }}" );
                    }
                });

55
                // hide empty menu items
56 57 58 59 60 61 62 63 64 65
                $('#mainmenu > div > .collapse').each(function () {
                    // 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
66
                    if ($(this).children().length == 0) {
67
                        $("#mainmenu").find('[href="#' + $(this).attr('id') + '"]').remove();
68 69
                    }
                });
70 71
                // hide submenu items
                $('#mainmenu .list-group-item').click(function(){
72 73 74 75 76 77 78
                    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');
                            }
                        });
                    }
79
                });
80

81 82 83 84 85
                initFormHelpUI();
                initFormAdvancedUI();
                addMultiSelectClearUI();

            });
86
        </script>
87

88

89 90 91 92
        <!-- JQuery Tokenize (http://zellerda.com/projects/tokenize) -->
        <script type="text/javascript" src="/ui/js/jquery.tokenize.js"></script>
        <link rel="stylesheet" type="text/css" href="/ui/css/jquery.tokenize.css" />

93 94 95 96
        <!-- Bootgrind (grid system from http://www.jquery-bootgrid.com/ )  -->
        <link rel="stylesheet" type="text/css" href="/ui/css/jquery.bootgrid.css"/>
        <script src="/ui/js/jquery.bootgrid.js"></script>

97 98
        <!-- OPNsense standard toolkit -->
        <script type="text/javascript" src="/ui/js/opnsense.js"></script>
99
        <script type="text/javascript" src="/ui/js/opnsense_ui.js"></script>
100
        <script type="text/javascript" src="/ui/js/opnsense_bootgrid_plugin.js"></script>
101

102 103
	</head>
	<body>
104 105 106 107 108
	<header class="page-head">
		<nav class="navbar navbar-default" role="navigation">
			<div class="container-fluid">
				<div class="navbar-header">
					<a class="navbar-brand" href="/">
109 110
						<img class="brand-logo" src="/ui/themes/{{ui_theme|default('opnsense')}}/build/images/default-logo.png" height="30"/>
						<img class="brand-icon" src="/ui/themes/{{ui_theme|default('opnsense')}}/build/images/icon-logo.png" height="30"/>
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
					</a>
					<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navigation">
						<span class="sr-only">Toggle navigation</span>
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
					</button>
				</div>

				<div class="collapse navbar-collapse">
					<ul class="nav navbar-nav navbar-right">
						<li id="menu_messages">
							<a href="#">{{title|default("OPNsense") }}</a>					</li>
						<li></li><li></li><li></li>


127 128
						<li><a href="/help.php?page=firewall_virtual_ip.php" target="_blank" title="{{ lang._('Help for items on this page') }}">{{ lang._('Help') }}</a></li>
						<li class="active"><a href="/index.php?logout">{{ lang._('Logout') }}</a></li>
129 130 131 132 133 134 135 136 137 138 139 140 141
					</ul>

				</div>
			</div>
		</nav>
	</header>

	<main class="page-content col-sm-10 col-sm-push-2 ">

		<!-- menu system -->
		{{ partial("layout_partials/base_menu_system") }}

		<div class="row">
142
            <!-- page header -->
143 144 145
			<header class="page-content-head">
				<div class="container-fluid">
						<ul class="list-inline">
146
							<li class="__mb"><h1>{{title | default("")}}</h1></li>
147

148 149
							<li class="btn-group-container" id="service_status_container">
                                <!-- placeholder for service status buttons -->
150 151 152 153
							</li>
						</ul>
				</div>
			</header>
154
            <!-- page content -->
155 156
			<section class="page-content-main">
				<div class="container-fluid">
157 158 159 160 161 162
                    <div class="row">
                        <section class="col-xs-12">
                            <div id="messageregion"></div>
                                {{ content() }}
                        </section>
                    </div>
163 164 165 166 167
				</div>
			</section>

		</div>

168
        <!-- page footer -->
169 170
		<footer class="page-foot col-sm-push-2">
			<div class="container-fluid">
171 172
				<a target="_blank" href="https://opnsense.org/" class="redlnk">OPNsense</a> (c) 2014-2015 <a href="https://www.deciso.com" class="tblnk">Deciso B.V.</a>
				(<a href="/license.php" class="tblnk">{{ lang._('view license') }}</a>)
173 174 175 176 177
			</div>
		</footer>

	</main>

178
    <!-- bootstrap script -->
179
	<script type="text/javascript" src="/ui/js/bootstrap.min.js"></script>
Ad Schellevis's avatar
Ad Schellevis committed
180
	<script type="text/javascript" src="/ui/js/bootstrap-select.min.js"></script>
181 182
    <!-- bootstrap dialog -->
    <script src="/ui/js/bootstrap-dialog.js"></script>
183
    </body>
184
</html>