diff options
Diffstat (limited to 'install/static/navigation.js')
-rw-r--r-- | install/static/navigation.js | 286 |
1 files changed, 62 insertions, 224 deletions
diff --git a/install/static/navigation.js b/install/static/navigation.js index ed190778..ec048d9a 100644 --- a/install/static/navigation.js +++ b/install/static/navigation.js @@ -1,242 +1,80 @@ -function setLoggedInText(principal){ - $("#loggedinas").html( "Logged in as " + principal); +/* Authors: + * Pavel Zuna <pzuna@redhat.com> + * + * Copyright (C) 2010 Red Hat + * see file 'COPYING' for use and warranty information + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; version 2 only + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +function nav_create(nls, container, tabclass) +{ + if (!container) + container = $('#navigation'); + if (!tabclass) + tabclass = 'tabs'; + + nav_generate_tabs(nls, container, tabclass); + + var tabs = $('.' + tabclass); + tabs.tabs({event: 'change'}); + tabs.find('ul.ui-tabs-nav a').click(_nav_tab_on_click); } -function whoamiSuccess(response){ +function nav_generate_tabs(nls, container, tabclass) +{ + container.addClass(tabclass); + container.prepend('<ul></ul>'); - $.cookie("whoami", response.result.summary); - setLoggedInText(response.result.summary); -} - -function unimplemented(facet){ - - showContent(); - $('#content').append("<div>Not yet implemented.</div>"); - -} - -var parentTabs; -function getParentTabs(){ - if (!parentTabs){ - parentTabs = { - user : "identity", - group : "identity", - host : "identity", - hostgroup: "identity", - netgroup : "identity", - service : "identity", - policy : "policy", - config : "config" - }; - } - return parentTabs; -} - -function buildNavigation(){ - params= ipa_parse_qs(); - var tab = params["tab"]; - - if (!tab){ - tab=$.cookie("lastpage"); - } - if ( !tab ) { - tab="user"; - } - - var facet = params["facet"]; - - - var siteMap = [{name:"IDENTITY", - tab:"identity", //Default subtab - children : [ - {name:"Users",tab:"user", setup: setupUser}, - {name:"Groups",tab:"group",setup: setupGroup}, - {name:"Hosts",tab:"host", setup: setupHost}, - {name:"Hostgroups", - tab:"hostgroup", - setup: setupHostgroup}, - {name:"Netgroups",tab:"netgroup", setup:setupNetgroup}, - {name:"Services",tab:"service", setup:setupService} - ]}, - {name:"POLICY", tab:"policy", setup: unimplemented}, - {name:"CONFIG", tab:"config", setup: unimplemented }]; + var ul = container.children().first(); + for (var i = 0; i < nls.length; ++i) { + var n = nls[i]; - //TODO autogen this from the site map + nav_insert_tab_li(ul, n[0], n[1]); + nav_insert_tab_div(container, n[0]); - var separator = $("<span class='main-separator' />"); - - var currentMain = siteMap[0]; - for (var i = 0 ; i < siteMap.length; i++){ - current = siteMap[i]; - if (i > 0){ - $('#main-nav').append(separator.clone()); - } - var tabClass = "main-nav-off"; - if (tab == current.tab){ - currentMain = current; - tabClass = "main-nav-on"; - } - - var span = $("<span/>", { - "class": tabClass, - id: "span-tab-"+current.tab, - }); - - $("<a/>",{ - "id": "tab-"+current.tab, - href: "#tab="+current.tab, - text: current.name, - }).appendTo(span); - - span.appendTo("#main-nav") - } - - if (currentMain.children){ - var selectedSub; - for (var i =0; i < currentMain.children.length; i++){ - var currentSub = currentMain.children[i]; - - var tabClass = "sub-nav-off"; - if (tab == currentSub.tab){ - tabClass = "sub-nav-on"; - selectedSub = currentSub; + var div = ul.parent().children().last(); + if (typeof n[2] == 'function') { + n[2](div); + } else if (n[2].length) { + nav_generate_tabs(n[2], div, tabclass); } - - var span = $("<span/>", { - "class": tabClass, - id: "span-subtab-"+currentSub.tab - }); - - $("<a/>",{ - "id": "subtab-"+currentSub.tab, - href: "#tab="+currentSub.tab, - text: currentSub.name, - //click: setActiveSubtab, - }).appendTo(span); - - span.appendTo("#sub-nav"); - } - - if (selectedSub && selectedSub.setup){ - selectedSub.setup(facet); } - }else if (currentMain && currentMain.setup){ - currentMain.setup(facet); - } - - var whoami = $.cookie("whoami"); - if (whoami == null){ - ipa_cmd( 'whoami', [], {}, whoamiSuccess, null,null); - }else{ - setLoggedInText(whoami); - } -} - -var setupFunctions; -function getSetupFunctions(){ - if (!setupFunctions){ - setupFunctions = { - user: setupUser, - group: setupGroup, - host: setupHost, - hostgroup:setupHostgroup, - netgroup:setupNetgroup, - service:setupService, - }; - } - return setupFunctions; } -$(window).bind( 'hashchange', function(e) { - - var queryParams = ipa_parse_qs(); - var tab=queryParams.tab; - if (!tab){ - tab = 'user'; - } - $(".sub-nav-on").removeClass('sub-nav-on').addClass("sub-nav-off") - var active = "#span-subtab-"+tab; - $(active).removeClass('sub-nav-off').addClass("sub-nav-on") - setActiveTab(getParentTabs()[tab]); +var _nav_li_tab_template = '<li><a href="#I">N</a></li>'; - getSetupFunctions()[tab](queryParams.facet ); -}); - - - -function setActiveTab(tabName){ - - $(".main-nav-on").removeClass('main-nav-on').addClass("main-nav-off") - var activeTab = "#span-tab-"+tabName; - $(activeTab).removeClass('main-nav-off').addClass("main-nav-on") +function nav_insert_tab_li(jobj, id, name) +{ + jobj.append(_nav_li_tab_template.replace('I', id).replace('N', name)); } +var _nav_div_tab_template = '<div id="T"></div>'; -function buildFacetNavigation(facets){ - setupFacetNavigation(qs['tab'], qs['pkey'],qs['facet'], facets); +function nav_insert_tab_div(jobj, id) +{ + jobj.append(_nav_div_tab_template.replace('T', id)); } -function setupFacetNavigation(tab, pkey,facet,facets){ - $('#viewtype').css("display","block"); - $("#viewtype").html(""); +function _nav_tab_on_click(obj) +{ + var jobj = $(this); + var state = {}; + var id = jobj.closest('.tabs').attr('id'); + var index = jobj.parent().prevAll().length; - for (var i =0; i < facets.length; i++){ - var li = $('<li>').appendTo($("#viewtype")); - if (facets[i] == facet){ - $('<img src="but-selected.png" alt="" />'); - li.html(facets[i]); - }else{ - $('<img src="but-unselected.png" alt="" />').appendTo(li); - $('<a/>',{ - href: "#tab="+tab+"&facet="+facets[i]+"&pkey="+pkey, - html: facets[i] - }).appendTo(li); - } - } + state[id] = index; + $.bbq.pushState(state); } -function clearOld(){ - - $('h1').html(""); - $('#viewtype').css("display","none"); - - $('#search').css("display","none"); - $('#details').css("display","none"); - $('#content').css("display","none"); - $('#associations').css("display","none"); - - - $('#searchResultsTable thead').html(""); - $('#searchResultsTable tfoot').html(""); - $('#searchResultsTable tbody').find("tr").remove(); - $("#searchButtons").html(""); - - $('#content').html(""); - - //remove old details - $('.entryattrs dd').remove(); - $('#detail-lists').html("<hr/>"); -} - -function showSearch(){ - clearOld(); - $('#search').css("display","block"); - $("#filter").css("display","block"); -} - -function showContent(){ - clearOld(); - $('#viewtype').css("display","block"); - $('#content').css("display","block"); -} - -function showDetails(){ - clearOld(); - $('#viewtype').css("display","block"); - $('#details').css("display","block"); -} - -function showAssociations(){ - clearOld(); - $('#associations').css("display","block"); -} |