Skip to content

Commit 347ac31

Browse files
committed
UI Plugin: Use new format
Define plugins as namespaced objects instead of as function calls. This is easier to implement and manage by the framework. New format changes for defining plugins: Now create 2 JS files in plugin folder: -config.js -[pluginName].js plugins.js (listing) format: cloudStack.plugins = [ 'testPlugin' ]; config.js format: cloudStack.plugins.testPlugin.config = { title: 'Test Plugin', desc: 'Sample plugin' }; [pluginName].js format: cloudStack.plugins.testPlugin = function(plugin) { // // Plugin code goes here // };
1 parent 59c77b4 commit 347ac31

8 files changed

Lines changed: 44 additions & 64 deletions

File tree

ui/index.jsp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1674,11 +1674,12 @@ under the License.
16741674
<script type="text/javascript" src="scripts/system.js?t=<%=now%>"></script>
16751675
<script type="text/javascript" src="scripts/domains.js?t=<%=now%>"></script>
16761676
<script type="text/javascript" src="scripts/docs.js?t=<%=now%>"></script>
1677-
<script type="text/javascript" src="scripts/ui-custom/plugins.js?t=<%=now%>"></script>
1678-
<script type="text/javascript" src="scripts/plugins.js?t=<%=now%>"></script>
16791677

1680-
<!-- Plugin listing -->
1678+
<script type="text/javascript" src="scripts/ui-custom/plugins.js?t=<%=now%>"></script>
1679+
1680+
<!-- Plugins -->
16811681
<script type="text/javascript" src="plugins/plugins.js?t=<%=now%>"></script>
1682+
<script type="text/javascript" src="scripts/plugins.js?t=<%=now%>"></script>
16821683
</body>
16831684
</html>
16841685
<jsp:include page="dictionary.jsp" />

ui/plugins/plugins.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
(function($, cloudStack) {
2-
cloudStack.plugins.load([
3-
'testPlugin1',
4-
'testPlugin2'
5-
]);
2+
cloudStack.plugins = [
3+
'testPlugin'
4+
];
65
}(jQuery, cloudStack));

ui/plugins/testPlugin/config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
(function (cloudStack) {
2+
cloudStack.plugins.testPlugin.config = {
3+
title: 'Test Plugin',
4+
desc: 'Sample plugin'
5+
};
6+
}(cloudStack));
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(function (cloudStack) {
2+
cloudStack.plugins.testPlugin = function(plugin) {
3+
//
4+
// Plugin code goes here
5+
//
6+
};
7+
}(cloudStack));

ui/plugins/testPlugin1/testPlugin1.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

ui/plugins/testPlugin2/testPlugin2.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

ui/scripts/plugins.js

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,26 @@
1-
(function($, cloudStack) {
2-
cloudStack.plugin = function(args) {
3-
var id = args.id;
4-
var title = args.title;
5-
var desc = args.desc;
6-
7-
cloudStack.plugins.registry[id] = {
8-
title: title,
9-
desc: desc
10-
};
1+
(function($, cloudStack, require) {
2+
cloudStack.sections.plugins = {
3+
title: 'Plugins',
4+
show: cloudStack.uiCustom.plugins
115
};
126

13-
cloudStack.plugins = {
14-
loaded: [], // Lists loaded plugins by ID
15-
registry: {}, // Stores metadata for plugins
16-
17-
// Loads/executes script
18-
load: function(plugins) {
19-
$(plugins).map(function(index, pluginID) {
20-
var path = '/client/plugins/' + pluginID + '/' + pluginID + '.js';
7+
// Load plugins
8+
$(cloudStack.plugins).map(function(index, pluginID) {
9+
var basePath = 'plugins/' + pluginID + '/';
10+
var pluginJS = basePath + pluginID + '.js';
11+
var configJS = basePath + 'config.js';
2112

22-
require([path], function() {
23-
cloudStack.plugins.loaded.push(pluginID);
24-
});
13+
require([pluginJS], function() {
14+
require([configJS]);
2515

26-
return path;
16+
// Execute plugin
17+
cloudStack.plugins[pluginID]({
18+
ui: {
19+
extend: function(obj) {
20+
$.extend(true, cloudStack, obj);
21+
}
22+
}
2723
});
28-
}
29-
};
30-
31-
cloudStack.sections.plugins = {
32-
title: 'Plugins',
33-
show: cloudStack.uiCustom.plugins
34-
}
35-
}(jQuery, cloudStack));
24+
});
25+
});
26+
}(jQuery, cloudStack, require));

ui/scripts/ui-custom/plugins.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@
3737
};
3838

3939
cloudStack.uiCustom.plugins = function() {
40-
var plugins = cloudStack.plugins.loaded;
40+
var plugins = cloudStack.plugins;
4141

4242
return elems.pluginListing({
4343
plugins: $(plugins).map(function(index, pluginID) {
44-
var plugin = cloudStack.plugins.registry[pluginID];
44+
var plugin = cloudStack.plugins[pluginID].config;
4545

4646
return {
47-
id: plugin.id,
47+
id: pluginID,
4848
title: plugin.title,
4949
desc: plugin.desc
5050
};

0 commit comments

Comments
 (0)