diff --git a/src/sunstone/etc/sunstone-views.yaml b/src/sunstone/etc/sunstone-views.yaml index 58dba4157c..07ff8fc89b 100644 --- a/src/sunstone/etc/sunstone-views.yaml +++ b/src/sunstone/etc/sunstone-views.yaml @@ -1,30 +1,5 @@ --- logo: images/opennebula-sunstone-v4.0.png -available_tabs: - - dashboard-tab - - system-tab - - users-tab - - groups-tab - - vdcs-tab - - acls-tab - - vresources-tab - - vms-tab - - templates-tab - - images-tab - - files-tab - - infra-tab - - clusters-tab - - hosts-tab - - datastores-tab - - vnets-tab - - secgroups-tab - - zones-tab - - marketplace-tab - - oneflow-dashboard - - oneflow-services - - oneflow-templates - - provision-tab - - support-tab groups: oneadmin: - admin diff --git a/src/sunstone/etc/sunstone-views/admin.yaml b/src/sunstone/etc/sunstone-views/admin.yaml index a6e5aae4e9..8144502542 100644 --- a/src/sunstone/etc/sunstone-views/admin.yaml +++ b/src/sunstone/etc/sunstone-views/admin.yaml @@ -18,16 +18,13 @@ enabled_tabs: datastores-tab: true vnets-tab: true secgroups-tab: true + zones-tab: true marketplace-tab: true oneflow-dashboard: true - oneflow-services: true - oneflow-templates: true - support-tab: true - doc-tab: true - community-tab: true - enterprise-tab: true - zones-tab: true + oneflow-services-tab: true + oneflow-templates-tab: true settings-tab: true + support-tab: true autorefresh: true features: showback: true diff --git a/src/sunstone/etc/sunstone-views/admin_vcenter.yaml b/src/sunstone/etc/sunstone-views/admin_vcenter.yaml index eaa81d8979..b4f9876072 100644 --- a/src/sunstone/etc/sunstone-views/admin_vcenter.yaml +++ b/src/sunstone/etc/sunstone-views/admin_vcenter.yaml @@ -18,16 +18,13 @@ enabled_tabs: datastores-tab: false vnets-tab: true secgroups-tab: false + zones-tab: true marketplace-tab: false oneflow-dashboard: true - oneflow-services: true - oneflow-templates: true - support-tab: true - doc-tab: true - community-tab: true - enterprise-tab: true - zones-tab: true + oneflow-services-tab: true + oneflow-templates-tab: true settings-tab: true + support-tab: true autorefresh: true features: showback: true diff --git a/src/sunstone/etc/sunstone-views/user.yaml b/src/sunstone/etc/sunstone-views/user.yaml index 6aa5a7cc6c..bdef26b368 100644 --- a/src/sunstone/etc/sunstone-views/user.yaml +++ b/src/sunstone/etc/sunstone-views/user.yaml @@ -18,16 +18,13 @@ enabled_tabs: datastores-tab: true vnets-tab: true secgroups-tab: true + zones-tab: false marketplace-tab: true oneflow-dashboard: true - oneflow-services: true - oneflow-templates: true - support-tab: false - doc-tab: false - community-tab: false - enterprise-tab: false - zones-tab: false + oneflow-services-tab: true + oneflow-templates-tab: true settings-tab: true + support-tab: false autorefresh: true features: showback: true diff --git a/src/sunstone/models/SunstoneViews.rb b/src/sunstone/models/SunstoneViews.rb index 0c061569df..cba033b01c 100644 --- a/src/sunstone/models/SunstoneViews.rb +++ b/src/sunstone/models/SunstoneViews.rb @@ -121,10 +121,6 @@ class SunstoneViews @views.keys end - def available_tabs - @views_config['available_tabs'] - end - def logo @views_config['logo'] end diff --git a/src/sunstone/public/app/app.js b/src/sunstone/public/app/app.js index e218ebf87f..2c5da866d0 100644 --- a/src/sunstone/public/app/app.js +++ b/src/sunstone/public/app/app.js @@ -27,42 +27,6 @@ define(function(require) { var Notifier = require('utils/notifier'); var Menu = require('utils/menu'); - var _tabs; - if (Config.isTabEnabled(PROVISION_TAB_ID)) { - _tabs = [ - require('tabs/provision-tab'), - require('tabs/users-tab'), - require('tabs/settings-tab') - ]; - } else { - _tabs = [ - require('tabs/dashboard-tab'), - require('tabs/system-tab'), - require('tabs/users-tab'), - require('tabs/groups-tab'), - require('tabs/vdcs-tab'), - require('tabs/acls-tab'), - require('tabs/vresources-tab'), - require('tabs/vms-tab'), - require('tabs/templates-tab'), - require('tabs/images-tab'), - require('tabs/files-tab'), - require('tabs/infra-tab'), - require('tabs/clusters-tab'), - require('tabs/hosts-tab'), - require('tabs/datastores-tab'), - require('tabs/vnets-tab'), - require('tabs/secgroups-tab'), - require('tabs/zones-tab'), - require('tabs/marketplace-tab'), - require('tabs/oneflow-dashboard'), - require('tabs/oneflow-services-tab'), - require('tabs/oneflow-templates-tab'), - require('tabs/settings-tab'), - require('tabs/support-tab') - ]; - } - var _commonDialogs = [ require('utils/dialogs/confirm'), require('utils/dialogs/confirm-with-select'), @@ -70,10 +34,7 @@ define(function(require) { ] Sunstone.addDialogs(_commonDialogs); - - $.each(_tabs, function(index, tab) { - Sunstone.addMainTab(tab); - }); + Sunstone.addMainTabs(); //$(window).load(function() { // $('#loading').hide(); diff --git a/src/sunstone/public/app/main.js b/src/sunstone/public/app/main.js index ea22b70d3a..5126ed0099 100644 --- a/src/sunstone/public/app/main.js +++ b/src/sunstone/public/app/main.js @@ -112,6 +112,37 @@ require.config({ 'spice-filexfer': '../bower_components/spice-html5/filexfer' }, shim: { + /* Tabs */ + 'app': { + deps: [ + 'tabs/provision-tab', + 'tabs/dashboard-tab', + 'tabs/system-tab', + 'tabs/users-tab', + 'tabs/groups-tab', + 'tabs/vdcs-tab', + 'tabs/acls-tab', + 'tabs/vresources-tab', + 'tabs/vms-tab', + 'tabs/templates-tab', + 'tabs/images-tab', + 'tabs/files-tab', + 'tabs/infra-tab', + 'tabs/clusters-tab', + 'tabs/hosts-tab', + 'tabs/datastores-tab', + 'tabs/vnets-tab', + 'tabs/secgroups-tab', + 'tabs/zones-tab', + 'tabs/marketplace-tab', + 'tabs/oneflow-dashboard', + 'tabs/oneflow-services-tab', + 'tabs/oneflow-templates-tab', + 'tabs/settings-tab', + 'tabs/support-tab' + ] + }, + /* jQuery */ 'jquery': { exports: '$' diff --git a/src/sunstone/public/app/sunstone-config.js b/src/sunstone/public/app/sunstone-config.js index 32baec5510..5ec2d5c7b9 100644 --- a/src/sunstone/public/app/sunstone-config.js +++ b/src/sunstone/public/app/sunstone-config.js @@ -135,7 +135,8 @@ define(function(require) { 'tableOrder': _config['user_config']['table_order'], 'vncProxyPort': _config['system_config']['vnc_proxy_port'], 'vncWSS': _config['user_config']['vnc_wss'], - 'logo': (_config['view']["small_logo"] || "images/one_small_logo.png") + 'logo': (_config['view']["small_logo"] || "images/one_small_logo.png"), + 'enabledTabs': _config['view']['enabled_tabs'] } return Config; diff --git a/src/sunstone/public/app/sunstone.js b/src/sunstone/public/app/sunstone.js index b5d741e2ba..1264caa7ab 100644 --- a/src/sunstone/public/app/sunstone.js +++ b/src/sunstone/public/app/sunstone.js @@ -36,36 +36,40 @@ define(function(require) { "tabs" : {} }; - var _addMainTab = function(tabObj) { - var _tabId = tabObj.tabId; - if (Config.isTabEnabled(_tabId)) { - SunstoneCfg["tabs"][_tabId] = tabObj; + var _addMainTabs = function() { + $.each(Config.enabledTabs, function(tabName, enabled){ + if (enabled) { + var name = './tabs/' + tabName; + var tabObj = require(name); + var _tabId = tabObj.tabId; + SunstoneCfg["tabs"][_tabId] = tabObj; - var actions = tabObj.actions; - if (actions) { - _addActions(actions) - } + var actions = tabObj.actions; + if (actions) { + _addActions(actions) + } - var panels = tabObj.panels; - if (panels) { - _addPanels(_tabId, panels) - } + var panels = tabObj.panels; + if (panels) { + _addPanels(_tabId, panels) + } - var panelsHooks = tabObj.panelsHooks; - if (panelsHooks) { - _addPanelsHooks(_tabId, panelsHooks); - } + var panelsHooks = tabObj.panelsHooks; + if (panelsHooks) { + _addPanelsHooks(_tabId, panelsHooks); + } - var dialogs = tabObj.dialogs; - if (dialogs) { - _addDialogs(dialogs) - } + var dialogs = tabObj.dialogs; + if (dialogs) { + _addDialogs(dialogs) + } - var formPanels = tabObj.formPanels; - if (formPanels) { - _addFormPanels(_tabId, formPanels) + var formPanels = tabObj.formPanels; + if (formPanels) { + _addFormPanels(_tabId, formPanels) + } } - } + }); } var _addActions = function(actions) { @@ -982,7 +986,7 @@ define(function(require) { } var Sunstone = { - "addMainTab": _addMainTab, + "addMainTabs": _addMainTabs, "addDialogs": _addDialogs, "insertTabs": _insertTabs, diff --git a/src/sunstone/public/app/tabs/marketplace-tab/dialogs/import.js b/src/sunstone/public/app/tabs/marketplace-tab/dialogs/import.js index f2d54d3d04..0e70a429f2 100644 --- a/src/sunstone/public/app/tabs/marketplace-tab/dialogs/import.js +++ b/src/sunstone/public/app/tabs/marketplace-tab/dialogs/import.js @@ -108,7 +108,7 @@ define(function(require) { var template_context = $("#market_import_file_template", context); $.each(that.element['files'], function(index, value){ - var local_context = $("#market_import_file_"+index, local_context); + var local_context = $("#market_import_file_"+index, context); if ($(".market_image_result:not(.success)", local_context).length > 0) { img_obj = { diff --git a/src/sunstone/public/app/utils/common-actions.js b/src/sunstone/public/app/utils/common-actions.js index f3d66b4de9..31d04b1cf1 100644 --- a/src/sunstone/public/app/utils/common-actions.js +++ b/src/sunstone/public/app/utils/common-actions.js @@ -173,7 +173,11 @@ define(function(require) { callback: function(request, response) { Sunstone.showFormPanel(that.tabId, formPanelId, "update", function(formPanelInstance, context) { - formPanelInstance.fill(context, response[that.xmlRoot]); + if (that.xmlRoot) { + formPanelInstance.fill(context, response[that.xmlRoot]); + } else { + formPanelInstance.fill(context, response); + } }); }, error: Notifier.onError