diff options
Diffstat (limited to 'install/static/webui.js')
-rw-r--r-- | install/static/webui.js | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/install/static/webui.js b/install/static/webui.js new file mode 100644 index 000000000..f7cccff6f --- /dev/null +++ b/install/static/webui.js @@ -0,0 +1,124 @@ +/* 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 + */ + +/* REQUIRES: everything, this file puts it all togheter */ + +/* tabs definition for IPA webUI */ +var nav_tabs_lists = [ + ['identity', 'IDENTITY', [ + ['user', 'Users', ipa_entity_setup], + ['group', 'Groups', ipa_entity_setup], + ['host', 'Hosts', ipa_entity_setup], + ['hostgroup', 'Hostgroups', ipa_entity_setup], + ['netgroup', 'Netgroups', ipa_entity_setup], + ]], + ['policy', 'POLICY', unimplemented_tab], + ['config', 'CONFIG', unimplemented_tab] +]; + +/* main (document onready event handler) */ +$(function() { + function set_logged_in_as(principal) { + $.cookie('whoami', principal); + $('#loggedinas').find('strong').text(principal); + }; + + function whoami_on_win(data, text_status, xhr) { + if (!data.error) + set_logged_in_as(data.result.summary); + }; + + function init_on_win(data, text_status, xhr) { + nav_create(nav_tabs_lists, $('#navigation'), 'tabs'); + + $(window).bind('hashchange', window_hashchange); + window_hashchange(null); + + var whoami = $.cookie('whoami'); + if (whoami) + set_logged_in_as(whoami); + else + ipa_cmd('whoami', [], {}, whoami_on_win, null, null, 'sampledata/whoami.json'); + }; + + ipa_init(null, init_on_win); +}); + +/* use this to track individual changes between two hashchange events */ +var window_hash_cache = {}; + +/* main loop (hashchange event handler) */ +function window_hashchange(evt) +{ + $('.tabs').each(function () { + var jobj = $(this); + var index = $.bbq.getState(jobj.attr('id'), true) || 0; + jobj.find('ul.ui-tabs-nav a').eq(index).triggerHandler('change'); + }); + + for (var i = 0; i < nav_tabs_lists.length; ++i) { + var t = nav_tabs_lists[i]; + if (typeof t[2] != 'function' && t[2].length) { + for (var j = 0; j < t[2].length; ++j) { + var tt = t[2][j]; + var obj_name = tt[0]; + var entity_setup = tt[2]; + var div = $('#' + t[0] + ' div[title=' + obj_name + ']'); + + var state = obj_name + '-facet'; + var facet = $.bbq.getState(state, true) || 'search'; + var last_facet = window_hash_cache[state] || 'search'; + if (facet != last_facet) { + entity_setup(div); + continue; + } + + if (facet == 'search') { + state = obj_name + '-filter'; + var filter = $.bbq.getState(state, true); + var last_filter = window_hash_cache[state]; + if (filter != last_filter) + entity_setup(div); + } else if (facet == 'details') { + state = obj_name + '-pkey'; + var pkey = $.bbq.getState(state, true); + var last_pkey = window_hash_cache[state]; + if (pkey != last_pkey) + entity_setup(div); + } else if (facet == 'associate' || facet == 'enroll') { + state = obj_name + '-enroll'; + var enroll = $.bbq.getState(state, true); + var last_enroll = window_hash_cache[state]; + if (enroll != last_enroll) + entity_setup(div); + } + } + } + } + + window_hash_cache = $.bbq.getState(); +} + +/* builder function for unimplemented tab content */ +function unimplemented_tab(jobj) +{ + jobj.text('Not implemented yet!'); +} + |