src/pyams_skin/resources/js/myams.js
changeset 53 2ec1c452511a
parent 51 b06eea7cafc2
child 54 926598412c85
--- a/src/pyams_skin/resources/js/myams.js	Fri Apr 17 11:51:18 2015 +0200
+++ b/src/pyams_skin/resources/js/myams.js	Fri Apr 17 11:52:11 2015 +0200
@@ -1968,6 +1968,55 @@
 		},
 
 		/**
+		 * Register a new plug-in through Javascript instead of HTML data attributes
+		 *
+		 * @plugin: plugin function caller or object containing plug-in properties
+		 * @name: if @plugin is a function, defines plug-in name
+		 * @callback: a callback function which can be called after plug-in registry
+		 */
+		register: function(plugin, name, callback) {
+			if (typeof(name) == 'function') {
+				callback = name;
+				name = null;
+			}
+			name = name || plugin.name;
+			if (ams.plugins.enabled.indexOf(name) >= 0) {
+				if (window.console)
+					console.warn("Plugin "+name+" is already registered!");
+				return;
+			}
+			if (typeof(plugin) == 'object') {
+				var src = plugin.src;
+				if (src) {
+					ams.ajax.check(plugin.callback, src, function(first_load) {
+						if (first_load) {
+							ams.plugins.enabled[name] = ams.getFunctionByName(plugin.callback);
+							if (plugin.css) {
+								ams.getCSS(plugin.css, name + '_css');
+							}
+							if (callback) {
+								ams.executeFunctionByName(callback);
+							}
+						}
+					})
+				} else {
+					ams.plugins.enabled[name] = ams.getFunctionByName(plugin.callback);
+					if (plugin.css) {
+						ams.getCSS(plugin.css, name + '_css');
+					}
+					if (callback) {
+						ams.executeFunctionByName(callback);
+					}
+				}
+			} else if (typeof(plugin) == 'function') {
+				ams.plugins.enabled[name] = plugin;
+				if (callback) {
+					ams.executeFunctionByName(callback);
+				}
+			}
+		},
+
+		/**
 		 * Map of enabled plug-ins
 		 * This map can be extended by external plug-ins.
 		 *