summaryrefslogtreecommitdiffstats
path: root/install/ui
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2014-05-16 18:32:17 +0200
committerPetr Vobornik <pvoborni@redhat.com>2014-06-23 15:13:14 +0200
commit6e43d01266f105cdf3cf27a1dbb87ac80da4a06d (patch)
tree6cb7eb0bd90fbfd85a5423605ce5c80304f1d237 /install/ui
parent6f5e80b0cec57a89a68f2935b5fe01d919b11031 (diff)
downloadfreeipa-6e43d01266f105cdf3cf27a1dbb87ac80da4a06d.tar.gz
freeipa-6e43d01266f105cdf3cf27a1dbb87ac80da4a06d.tar.xz
freeipa-6e43d01266f105cdf3cf27a1dbb87ac80da4a06d.zip
webui: plugin API
new `extend` module should serve as a stable API for plugin authors. It should expose the most commonly used global calls. https://fedorahosted.org/freeipa/ticket/4345 Reviewed-By: Endi Sukma Dewata <edewata@redhat.com>
Diffstat (limited to 'install/ui')
-rw-r--r--install/ui/doc/categories.json3
-rw-r--r--install/ui/src/freeipa/extend.js60
-rw-r--r--install/ui/src/webui.profile.js2
3 files changed, 63 insertions, 2 deletions
diff --git a/install/ui/doc/categories.json b/install/ui/doc/categories.json
index 01778dae6..8bc0d8b1a 100644
--- a/install/ui/doc/categories.json
+++ b/install/ui/doc/categories.json
@@ -98,10 +98,11 @@
"IPA.serial_associator",
"IPA.bulk_associator",
"IPA.association_config",
- "spec_util",
"_base.debug",
"_base.Spec_mod",
"datetime",
+ "extend",
+ "spec_util",
"util"
]
}
diff --git a/install/ui/src/freeipa/extend.js b/install/ui/src/freeipa/extend.js
new file mode 100644
index 000000000..d96f1edf7
--- /dev/null
+++ b/install/ui/src/freeipa/extend.js
@@ -0,0 +1,60 @@
+/* Authors:
+ * Petr Vobornik <pvoborni@redhat.com>
+ *
+ * Copyright (C) 2014 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/>.
+*/
+
+define([
+ 'dojo/_base/lang',
+ './jquery',
+ './phases',
+ './app_container',
+ 'exports'
+],function(lang, $, phases, app, extend) {
+
+/**
+ * Extension interface
+ *
+ * This class provides interface for plugins and tries to hide underlying functionality
+ *
+ * @class extend
+ * @singleton
+ */
+lang.mixin(extend, {
+ /**
+ * Adds element to utility section
+ *
+ * This method doesn't do any correction. Expended root node type to add is
+ * by default `<li>`.
+ *
+ * Preferred phase: any after `init`
+ *
+ * @param {HTMLElement|jQuery} element Element to add to utility section
+ * @return {HTMLElement} Utility node
+ */
+ add_menu_utility: function(element) {
+
+ // Should we check if we are in good stage or atleast report that app doesn't exist yet?
+
+ var $utility = $(app.app.app_widget.nav_util_tool_node);
+ $utility.prepend(element);
+ return $utility.eq(0);
+ }
+});
+
+ return extend;
+}); \ No newline at end of file
diff --git a/install/ui/src/webui.profile.js b/install/ui/src/webui.profile.js
index 4176ed826..ad9b15b3a 100644
--- a/install/ui/src/webui.profile.js
+++ b/install/ui/src/webui.profile.js
@@ -115,7 +115,7 @@ var profile = (function(){
layers: {
"freeipa/app": {
- include: ["freeipa/app"]
+ include: ["freeipa/app", "freeipa/extend"]
}
}
};