summaryrefslogtreecommitdiffstats
path: root/install/static/navigation.js
diff options
context:
space:
mode:
Diffstat (limited to 'install/static/navigation.js')
-rw-r--r--install/static/navigation.js286
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");
-}