diff options
author | Adam Young <ayoung@redhat.com> | 2011-01-19 12:26:14 -0500 |
---|---|---|
committer | Endi Sukma Dewata <edewata@people01.fedoraproject.org> | 2011-01-20 14:12:47 +0000 |
commit | b9ad279ad2d8d93dd501115a028783cf8fe7fcbd (patch) | |
tree | 3c3bd271231ff635278b1cf88bfbd79d792de23d /install/ui/navigation.js | |
parent | 835436df1549578932705f5722bc78ec985c2f69 (diff) | |
download | freeipa-b9ad279ad2d8d93dd501115a028783cf8fe7fcbd.tar.gz freeipa-b9ad279ad2d8d93dd501115a028783cf8fe7fcbd.tar.xz freeipa-b9ad279ad2d8d93dd501115a028783cf8fe7fcbd.zip |
rename static to ui
Directory rename
Diffstat (limited to 'install/ui/navigation.js')
-rw-r--r-- | install/ui/navigation.js | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/install/ui/navigation.js b/install/ui/navigation.js new file mode 100644 index 00000000..7ae5b656 --- /dev/null +++ b/install/ui/navigation.js @@ -0,0 +1,149 @@ +/*jsl:import ipa.js */ + +/* 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, either version 3 of the License, or + * (at your option) any later version. + * + * 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, see <http://www.gnu.org/licenses/>. +*/ + +var nav_tabs_lists; +var nav_container; + +function nav_push_state(params) +{ + $.bbq.pushState(params); +} + +function nav_get_state(key) +{ + return $.bbq.getState(key, true); +} + +function nav_remove_state(key) +{ + $.bbq.removeState(key); +} + +function nav_create(nls, container, tabclass) +{ + if (!container) + container = $('#navigation'); + if (!tabclass) + tabclass = 'tabs'; + + nav_tabs_lists = nls; + nav_container = container; + + nav_generate_tabs(nls, container, tabclass, 1); + + var tabs = $('.' + tabclass); + tabs.tabs({ + select: function(event, ui) { + var panel = $(ui.panel); + var parent = panel.parent(); + var id = parent.attr('id'); + var state = {}; + state[id] = ui.index; + nav_push_state(state); + return true; + } + }); + + nav_update_tabs(); +} + +function nav_generate_tabs(nls, container, tabclass, depth) +{ + container.addClass(tabclass); + container.addClass('tabs'+depth); + + var ul = $('<ul/>'); + container.append(ul); + + for (var i = 0; i < nls.length; ++i) { + var tab = nls[i]; + + var label = tab.name; + if (tab.entity) { + var entity = IPA.get_entity(tab.entity); + label = entity.label; + } + + var li = nav_create_tab_li(tab.name, label); + ul.append(li); + + var div = nav_create_tab_div(tab.name); + container.append(div); + + if (tab.entity) { + div.addClass('entity-container'); + } + + if (tab.children && depth === 1) { + nav_generate_tabs(tab.children, div, tabclass, depth +1 ); + } + } +} + +function nav_create_tab_li(id, name) +{ + return $('<li/>').append($('<a/>', { + href: '#'+id, + title: id, + html: name + })); +} + +function nav_create_tab_div(id) +{ + return $('<div/>', { + id: id + }); +} + +function nav_update_tabs() +{ + _nav_update_tabs(nav_tabs_lists, nav_container,1); +} + +function _nav_update_tabs(nls, container,depth) +{ + var id = container.attr('id'); + var index = nav_get_state(id); + if (!index || index >= nls.length) index = 0; + + container.tabs('select', index); + + var tab = nls[index]; + var container2 = $('#' + tab.name); + + if (tab.children && depth === 1 ) { + _nav_update_tabs(tab.children, container2,depth+1); + + } else if (tab.entity) { + var entity_name = tab.entity; + + var nested_entity = nav_get_state(entity_name+'-entity'); + + if (nested_entity){ + entity_name = nested_entity; + } + + var entity = IPA.get_entity(entity_name); + entity.setup(container2); + } +} |