arrow-admin
Version:
Arrow Admin Website
82 lines (68 loc) • 2.4 kB
JavaScript
/* global APIDocOnly */
define(['jquery','index','docs','config','logs','build','cms','unauthorized'], function($, Index, Docs, Config, Logs, Build, CMS, Unauthorized) {
var menus = {
'index.html': { title: 'Arrow', action: Index },
'docs.html': { title: 'API Docs', action: Docs },
'config.html': { title: 'Configurations', action: Config },
'build.html': { title: 'Build', action: Build },
'cms.html': { title: 'Data', action: CMS },
'logs.html': { title: 'Logs', action: Logs },
'unauthorized.html': { title: 'Unauthorized', action: Unauthorized, hidden: true }
},
paths = window.location.pathname.split('/'),
pathname = paths[paths.length-1],
buildEnabled = window.location.search && window.location.search.indexOf('build=1') > 0,
apidocOnly = typeof(APIDocOnly)==='undefined' ? false : APIDocOnly;
if (!apidocOnly && (!CONFIG.authenticated || $('body').hasClass('body-unauthorized')) && pathname!=='unauthorized.html') {
window.location.href = 'unauthorized.html';
return;
}
if (apidocOnly) {
pathname = 'docs.html';
}
if (CONFIG.enableDataEditor===false) {
delete menus['cms.html'];
}
if (CONFIG.authenticated) {
window.Appc.afterHeaderRender(function () {
var idx = 0;
for (var k in menus) {
var menu = menus[k],
cls = pathname===k ? 'active' : '',
name = k.replace('.html','');
if (menu.hidden) {
continue;
}
// check and see if our menu is enabled
if (CONFIG && CONFIG.menus && CONFIG.menus.length && CONFIG.menus.indexOf(name)===-1) {
continue;
}
var link = document.createElement('a');
link.innerHTML = menus[k].title;
link.href = k;
link.className = link.className + " " + cls;
link.id = 'appc-unified-header-nav-menu-'+name;
document.querySelector('#appc-unified-header-nav > div:first-child').appendChild(link);
if (++idx === 1) {
$(link).css({'width':'114px','text-align':'center'});
}
}
});
}
var showBranding = !apidocOnly;
if (CONFIG && CONFIG.menus && CONFIG.menus.length===1 && CONFIG.menus[0]==='docs') {
// force to docs
pathname = 'docs.html';
showBranding = false;
}
if (showBranding) {
$('body').removeClass('nobranding');
}
var menu = menus[pathname];
if (window.location.search) {
menu && menu.action(window.location.search.substr(1));
}
else {
menu && menu.action && menu.action();
}
});