From b9ad279ad2d8d93dd501115a028783cf8fe7fcbd Mon Sep 17 00:00:00 2001
From: Adam Young
Date: Wed, 19 Jan 2011 12:26:14 -0500
Subject: rename static to ui
Directory rename
---
install/ui/ipa.js | 490 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 490 insertions(+)
create mode 100644 install/ui/ipa.js
(limited to 'install/ui/ipa.js')
diff --git a/install/ui/ipa.js b/install/ui/ipa.js
new file mode 100644
index 00000000..48c116a8
--- /dev/null
+++ b/install/ui/ipa.js
@@ -0,0 +1,490 @@
+/* Authors:
+ * Pavel Zuna
+ * Adam Young
+ * Endi Dewata
+ *
+ * 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 .
+*/
+
+
+/*global $:true, location:true */
+
+var IPA = ( function () {
+
+ var that = {
+ jsonrpc_id: 0
+ };
+
+ that.use_static_files = false;
+ that.json_url = '/ipa/json';
+ if (that.use_static_files){
+ that.json_url = 'test/data';
+ }
+
+ that.ajax_options = {
+ type: 'POST',
+ contentType: 'application/json',
+ dataType: 'json',
+ async: true,
+ processData: false
+ };
+
+ that.messages = {};
+ that.metadata = {};
+ that.whoami = {};
+
+
+ that.entities = [];
+ that.entities_by_name = {};
+
+ that.error_dialog = $('', {
+ id: 'error_dialog'
+ });
+
+ that.layout = $.bbq.getState('layout');
+ that.layouts_dir = 'layouts';
+
+ that.get_template = function(path) {
+ var layout = that.layout || 'default';
+ return that.layouts_dir+'/'+layout+'/'+path;
+ };
+
+ /* initialize the IPA JSON-RPC helper
+ * arguments:
+ * url - JSON-RPC URL to use (optional) */
+ that.init = function (url, use_static_files, on_success, on_error) {
+ if (url) {
+ that.json_url = url;
+ }
+
+ if (use_static_files) {
+ that.use_static_files = use_static_files;
+ }
+
+ $.ajaxSetup(that.ajax_options);
+
+
+ var startup_batch =
+ [
+ {"method":"json_metadata","params":[[],{}]},
+ {"method":"i18n_messages","params":[[],{}]},
+ {"method":"user_find","params":[[],{
+ "whoami":"true","all":"true"}]},
+ {"method":"env","params":[[],{}]}
+ ];
+
+
+ IPA.cmd('batch', startup_batch, {},
+ function (data, text_status, xhr) {
+ that.metadata = data.result.results[0].metadata;
+ that.messages = data.result.results[1].messages;
+ that.whoami = data.result.results[2].result[0];
+ that.env = data.result.results[3].result;
+ if (on_success) {
+ on_success(data, text_status, xhr);
+ }
+ },
+ on_error,
+ null,
+ 'ipa_init');
+ };
+
+ that.get_entities = function () {
+ return that.entities;
+ };
+
+ that.get_entity = function (name) {
+ return that.entities_by_name[name];
+ };
+
+ that.add_entity = function (entity) {
+ that.entities.push(entity);
+ that.entities_by_name[entity.name] = entity;
+ };
+
+
+ that.show_page = function (entity_name, facet_name) {
+
+ var state = {};
+ state[entity_name + '-facet'] = facet_name;
+ $.bbq.pushState(state);
+ };
+
+ that.switch_and_show_page = function (this_entity, facet_name, pkey) {
+ if (!pkey){
+ that.show_page(this_entity, facet_name);
+ return;
+ }
+ var state = {};
+ state[this_entity+'-pkey'] = pkey;
+ state[this_entity + '-facet'] = facet_name;
+ $.bbq.pushState(state);
+ };
+
+ return that;
+}());
+
+IPA.command = function (spec) {
+
+ spec = spec || {};
+
+ var that = {};
+
+ that.name = spec.name;
+ that.method = spec.method;
+
+ that.args = $.merge([], spec.args || []);
+ that.options = $.extend({}, spec.options || {});
+
+ that.on_success = spec.on_success;
+ that.on_error = spec.on_error;
+
+ that.add_arg = function(arg) {
+ that.args.push(arg);
+ };
+
+ that.set_option = function(name, value) {
+ that.options[name] = value;
+ };
+
+ that.get_option = function(name) {
+ return that.options[name];
+ };
+
+ that.execute = function() {
+ IPA.cmd(
+ that.method,
+ that.args,
+ that.options,
+ that.on_success,
+ that.on_error,
+ null,
+ that.name);
+ };
+
+ that.to_json = function() {
+ var json = {};
+
+ json.method = that.method;
+
+ json.params = [];
+ json.params[0] = that.args || [];
+ json.params[1] = that.options || {};
+
+ return json;
+ };
+
+ that.to_string = function() {
+ var string = that.method.replace(/_/g, '-');
+
+ for (var i=0; i'+error_thrown.message+'
');
+
+ dialog_open.call(this, xhr, text_status, error_thrown);
+ }
+
+ function error_handler(xhr, text_status, error_thrown) {
+ hide_activity_icon();
+ if (!error_thrown) {
+ error_thrown = {
+ name: xhr.responseText || 'Unknown Error',
+ message: xhr.statusText || 'Unknown Error'
+ };
+ }
+
+ if (xhr.status === 401) {
+ error_thrown.name = 'Kerberos ticket no longer valid.';
+ if (IPA.messages && IPA.messages.ajax){
+ error_thrown.message = IPA.messages.ajax["401"];
+ } else {
+ error_thrown.message =
+ "Your kerberos ticket no longer valid. "+
+ "Please run kinit and then click 'retry'. "+
+ "If this is your first time running the IPA Web UI "+
+ ""+
+ "follow these directions to configure your browser.";
+ }
+ }
+
+ error_thrown.title = 'AJAX Error: '+error_thrown.name;
+ ajax_error_handler.call(this, xhr, text_status, error_thrown);
+ }
+
+
+ function http_error_handler(xhr, text_status, error_thrown) {
+ IPA.error_dialog.empty();
+ IPA.error_dialog.attr('title', error_thrown.title);
+
+ IPA.error_dialog.append('URL: '+this.url+'
');
+ IPA.error_dialog.append(''+error_thrown.message+'
');
+
+ dialog_open.call(this, xhr, text_status, error_thrown);
+ }
+
+ //Think this should be removed
+ function alt_error_handler(xhr, text_status, error_thrown) {
+ hide_activity_icon();
+ IPA.error_dialog.empty();
+ IPA.error_dialog.attr('title', error_thrown.title);
+
+ IPA.error_dialog.append(''+error_thrown.message+'
');
+
+ dialog_open.call(this, xhr, text_status, error_thrown);
+ }
+
+
+ function success_handler(data, text_status, xhr) {
+ hide_activity_icon();
+ if (!data) {
+ var error_thrown = {
+ title: 'HTTP Error '+xhr.status,
+ message: data ? xhr.statusText : "No response"
+ };
+ http_error_handler.call(this, xhr, text_status, error_thrown);
+
+ } else if (data.error) {
+ error_handler.call(this, xhr, text_status, /* error_thrown */ {
+ title: 'IPA Error '+data.error.code,
+ message: data.error.message
+ });
+
+ } else if (win_callback) {
+ win_callback.call(this, data, text_status, xhr);
+ }
+ }
+
+ IPA.jsonrpc_id += 1;
+ var id = IPA.jsonrpc_id;
+
+ var method_name = name;
+
+ if (objname){
+ method_name = objname + '_' + name;
+ }
+
+ var url = IPA.json_url;
+
+ if (IPA.use_static_files){
+ if (command_name) {
+ url += '/' + command_name + '.json';
+ } else {
+ url += '/' + method_name + '.json';
+ }
+ }
+ var data = {
+ method: method_name,
+ params: [args, options],
+ id: id
+ };
+
+ var request = {
+ url: url,
+ data: JSON.stringify(data),
+ success: success_handler,
+ error: error_handler
+ };
+ display_activity_icon();
+ $.ajax(request);
+
+ return (id);
+};
+
+
+/* helper function used to retrieve information about an attribute */
+IPA.get_param_info = function(obj_name, attr)
+{
+ var obj = IPA.metadata[obj_name];
+ if (!obj) {
+ return null;
+ }
+
+ var takes_params = obj.takes_params;
+ if (!takes_params) {
+ return (null);
+
+ }
+ for (var i = 0; i < takes_params.length; i += 1) {
+ if (takes_params[i].name === attr){
+ return (takes_params[i]);
+ }
+ }
+
+ return (null);
+};
+
+/* helper function used to retrieve attr name with members of type `member` */
+IPA.get_member_attribute = function (obj_name, member)
+{
+ var obj = IPA.metadata[obj_name];
+ if (!obj) {
+ return null;
+ }
+ var attribute_members = obj.attribute_members;
+ for (var a in attribute_members) {
+ var objs = attribute_members[a];
+ for (var i = 0; i < objs.length; i += 1) {
+ if (objs[i] === member){
+ return a;
+ }
+ }
+ }
+ return null;
+
+};
+
+
+IPA.create_network_spinner = function(){
+ return $('',{
+ 'class':'network-activity-indicator',
+ html: '
'});
+};
--
cgit