blob: dc41624592644119b16b7f3d17e8717d63a7daf6 [file] [log] [blame]
<?php
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
////////////////////////////////////////////////////////////////////////////////
///
/// \fn getHeader($refresh)
///
/// \param $refresh - bool for adding code to refresh page
///
/// \return string of html to go before the main content
///
/// \brief builds the html that goes before the main content
///
////////////////////////////////////////////////////////////////////////////////
function getHeader($refresh) {
global $user, $mode, $authed, $viewmode, $locale, $VCLversion;
$v = $VCLversion;
$rt = "<!DOCTYPE html>\n";
$rt .= "<html lang=\"en-US\">\n";
$rt .= "<head>\n";
$usenls = 0;
$usenlsstr = "false";
if(! preg_match('/^en/', $locale)) {
$usenls = 1;
$usenlsstr = "true";
}
$rt .= "<link rel=\"shortcut icon\" href=\"images/favicon.ico\" type=\"image/x-icon\" />\n";
$rt .= "<link href=\"css/vcl.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
$rt .= "<meta charset=\"UTF-8\">\n";
$rt .= "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n";
$rt .= "<title>" . i('VCL: The Virtual Computing Lab') . "</title>\n";
$rt .= "<meta name='robots' content='noindex,follow' />\n";
$rt .= "<link href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u\" crossorigin=\"anonymous\" media=\"all\" />\n";
$rt .= "<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js\" integrity=\"sha512-jGsMH83oKe9asCpkOVkBnUrDDTp8wl+adkB2D+//JtlxO4SrLoJdhbOysIFQJloQFD+C4Fl1rMsQZF76JjV0eQ==\" crossorigin=\"anonymous\"></script>\n";
$rt .= "<link href=\"themes/dropdownmenus/css/theme.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
$rt .= "<script src=\"themes/dropdownmenus/js/topnav.js\" type=\"text/javascript\"></script>\n";
$rt .= "<script src=\"js/code.js?v=$v\" type=\"text/javascript\"></script>\n";
if($usenls)
$rt .= "<script type=\"text/javascript\" src=\"js/nls/$locale/messages.js?v=$v\"></script>\n";
$rt .= "<script type=\"text/javascript\">\n";
$rt .= "var cookiedomain = '" . COOKIEDOMAIN . "';\n";
$rt .= "usenls = $usenlsstr;\n";
$rt .= "</script>\n";
$rt .= getDojoHTML($refresh);
if($refresh)
$rt .= "<noscript><meta http-equiv=refresh content=20></noscript>\n";
$extracss = getExtraCSS();
foreach($extracss as $file)
$rt .= "<link rel=stylesheet type=\"text/css\" href=\"css/$file\">\n";
$rt .= "</head>\n";
$rt .= "<body class=\"dropdownmenus\">\n";
$rt .= "<div id=\"wrapperdiv\" class=\"container-fluid\">\n";
$rt .= "<header id=\"siteheader\" role=\"banner\">\n";
if($authed) {
$rt .= " <div id=\"loggedinidbox\">\n";
$rt .= " {$user['unityid']}@{$user['affiliation']}\n";
$rt .= " </div>\n";
}
$rt .= " <div class=\"container\">\n";
$rt .= " <img src=\"themes/dropdownmenus/images/vcllogo.png\" class=\"header-logo\" />\n";
$rt .= " <h1 class=\"site-title\">\n";
$rt .= " <span>" . i('Virtual Computing Lab') . "</span><br />\n";
$rt .= " </h1>\n";
$rt .= " </div><!-- .container -->\n";
$rt .= " <div class=\"container-fluid\">\n";
$rt .= " <div id=\"above-site-navigation\"></div>\n";
$rt .= " <nav id=\"site-navigation\" class=\"navbar navbar-default\" role=\"navigation\">\n";
$rt .= " <a class=\"skip-link screen-reader-text\" href=\"#content\">" . i('Skip to content') . "</a>\n";
$rt .= " <div class=\"container\">\n";
$rt .= " <div class=\"navbar-header\">\n";
$rt .= " <button id=\"navmenubtn\" type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse-main\">\n";
$rt .= " <span class=\"sr-only\">" . i('Toggle navigation') . "</span>\n";
$rt .= " <span class=\"icon-bar\"></span>\n";
$rt .= " <span class=\"icon-bar\"></span>\n";
$rt .= " <span class=\"icon-bar\"></span>\n";
$rt .= " </button>\n";
$rt .= " </div><!-- .navbar-header -->\n";
$rt .= " <div class=\"navbar-collapse collapse\" id=\"navbar-collapse-main\">\n";
$rt .= " <div id=\"rightmenubox\">\n";
if($mode != 'inmaintenance')
$rt .= getSelectLanguagePulldown();
if($authed) {
$rt .= " <span id=\"logoutlink1\"><a href=\"" . BASEURL . SCRIPT . "?mode=logout\">" . i('Log out') . "</a></span>\n";
}
$rt .= " </div>\n"; # rightmenubox
$rt .= " <ul id=\"topmenu\" class=\"nav navbar-nav\">\n";
if($authed) {
$menu = getNavMenuData();
uasort($menu, 'sortMenuList');
if($menu['reservations']['selected'])
$rt .= " <li class=\"active\"><a href=\"{$menu['reservations']['url']}\">{$menu['reservations']['title']}</a></li>\n";
else
$rt .= " <li><a href=\"{$menu['reservations']['url']}\">{$menu['reservations']['title']}</a></li>\n";
$rt .= " <li><a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" data-target=\"#\">" . i('Manage') . "<b class=\"caret\"></b></a>\n";
$rt .= " <ul class=\"dropdown-menu\">\n";
foreach($menu as $page => $item) {
if(in_array($page, array('dashboard', 'statistics', 'reservations', 'home', 'authentication', 'codeDocumentation', 'userLookup')))
continue;
$selected = '';
if($item['selected'])
$selected = ' class="active"';
$rt .= " <li$selected><a href=\"{$item['url']}\">{$item['title']}</a></li>\n";
}
$rt .= " </ul>\n";
$rt .= " </li>\n";
$rt .= " <li><a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" data-target=\"#\">" . i('Reporting') . "<b class=\"caret\"></b></a>\n";
$rt .= " <ul class=\"dropdown-menu\">\n";
$items = array('dashboard', 'statistics', 'userLookup');
foreach($items as $item) {
if(! isset($menu[$item]))
continue;
$selected = '';
if($menu[$item]['selected'])
$selected = ' class="active"';
$rt .= " <li$selected><a href=\"{$menu[$item]['url']}\">{$menu[$item]['title']}</a></li>\n";
}
$rt .= " </ul>\n";
$rt .= " </li>\n";
$rt .= " <li><a href=\"{$menu['codeDocumentation']['url']}\">{$menu['codeDocumentation']['title']}</a></li>\n";
}
# example help menu
/*$rt .= " <li><a href=\"#\" data-toggle=\"dropdown\">" . i(Help & Documentation) . "<b class=\"caret\"></b></a>\n";
$rt .= "<ul class=\"dropdown-menu\">\n";
$rt .= " <li><a href=\"https://example.edu/\">" . i('Help Item 1') . "</a></li>\n";
$rt .= " <li><a href=\"https://example.edu\">" . i('Help Item 2') . "</a></li>\n";
$rt .= "</ul>\n";
$rt .= "</li>\n";*/
if($mode != 'inmaintenance') {
$rt .= " <li id=\"mobilelanguagemenu\"><a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" data-target=\"#\">" . i('Language') . "<b class=\"caret\"></b></a>\n";
$rt .= " <ul class=\"dropdown-menu\">\n";
$menu = getSelectLanguagePulldown();
$menu = str_replace("\n", '', $menu);
$tmp = preg_match_all('|(<option[^>]+>[^<]+</option>)|', $menu, $matches);
foreach($matches[0] as $item) {
preg_match('|<option value="([^"]+)"( selected)?>([^<]+)</option>|', $item, $parts);
if($parts[2] == ' selected')
$rt .= " <li class=\"active\"><a href=\"" . BASEURL . SCRIPT . "?continuation={$parts[1]}\">{$parts[3]}</a></li>\n";
else
$rt .= " <li><a href=\"" . BASEURL . SCRIPT . "?continuation={$parts[1]}\">{$parts[3]}</a></li>\n";
}
$rt .= " </ul>\n";
}
if(! $authed && $mode != 'selectauth' && $mode != 'submitLogin' && $mode != 'inmaintenance')
$rt .= " <li><a href=\"" . BASEURL . SCRIPT . "?mode=selectauth\">" . i('Log in') . "</a></li>\n";
elseif($authed)
$rt .= " <li id=\"logoutlink2\"><a href=\"" . BASEURL . SCRIPT . "?mode=logout\">" . i('Log out') . "</a></li>\n";
$rt .= " </ul>\n";
$rt .= " </div><!-- /.navbar-collapse -->\n";
$rt .= " </div><!-- .container -->\n";
$rt .= " </nav><!-- #site-navigation -->\n";
$rt .= " </div><!-- .container-fluid -->\n";
$rt .= " </header><!-- #siteheader -->\n";
$rt .= " <main id=\"main\" role=\"main\">\n";
$rt .= "<div id=\"content\">\n";
return $rt;
}
////////////////////////////////////////////////////////////////////////////////
///
/// \fn sortMenuList($menu)
///
/// \param $a - first item
/// \param $b - second item
///
/// \return -1 if $a['title'] < $b['title'], 0 if $a['title'] == $b['title'],
/// 1 if $a['title'] > $b['title']
///
/// \brief
///
////////////////////////////////////////////////////////////////////////////////
function sortMenuList($a, $b) {
return strcmp($a['title'], $b['title']);
}
////////////////////////////////////////////////////////////////////////////////
///
/// \fn getFooter()
///
/// \return string of html to go after the main content
///
/// \brief builds the html that goes after the main content
///
////////////////////////////////////////////////////////////////////////////////
function getFooter() {
global $totalQueries, $queryTimes, $debug, $totalQueryTime, $startload, $mode;
$rt = "";
$rt .= "</div><!-- #content -->\n";
$rt .= " </main><!-- #main -->\n";
$rt .= " <div class=\"container-fluid\">\n";
$rt .= " <footer role=\"contentinfo\">\n";
$rt .= " <div class=\"row\">\n";
$rt .= " <div class=\"site-info\">\n";
$rt .= " Copyright &copy; " . date('Y') . " &#183; ";
$rt .= "<img src=\"themes/dropdownmenus/images/feather_tiny.png\">";
$rt .= "<a href=\"http://vcl.apache.org\">Apache Software Foundation</a>";
# footer links
#$rt .= " &#183; <a href=\"http://example.edu/\">Some link</a>\n";
$rt .= " </div><!-- .site-info -->\n";
$rt .= " </div><!-- .row -->\n";
$rt .= " </footer>\n";
$rt .= " </div><!-- .container-fluid -->\n";
# below footer - useful for entity name and address, etc
#$rt .= " <div class=\"sub-footer\">\n";
#$rt .= " <div class=\"container\">\n";
#$rt .= " <h4><a href=\"http://www.example.edu/\"><strong>My University</strong></a></h4>\n";
#$rt .= " <address>\n";
#$rt .= " <span><strong>Title</strong></span>\n";
#$rt .= " <span>Address</span>\n";
#$rt .= " <span>Phone#</span>\n";
#$rt .= " </address>\n";
#$rt .= " </div><!-- .container -->\n";
#$rt .= " </div><!-- .sub-footer -->\n";
$rt .= "</div><!-- #wrapperdiv -->\n";
$rt .= "<script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\" integrity=\"sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa\" crossorigin=\"anonymous\"></script>\n";
$rt .= "</body>\n";
$rt .= "</html>\n";
return $rt;
}
?>