diff --git a/src/sunstone/public/app/app.js b/src/sunstone/public/app/app.js
index 7502a1c8c3..611194738e 100644
--- a/src/sunstone/public/app/app.js
+++ b/src/sunstone/public/app/app.js
@@ -51,7 +51,7 @@ define(function(require) {
//$(window).load(function() {
// $('#loading').hide();
//});
-
+
$(document).ready(function() {
Sunstone.addDialogs(_commonDialogs);
Sunstone.addMainTabs();
@@ -152,7 +152,6 @@ define(function(require) {
groups = groups.toString();
groups = [groups];
}
-
that = this;
OpenNebula.Group.list({
timeout: true,
diff --git a/src/sunstone/public/app/opennebula.js b/src/sunstone/public/app/opennebula.js
index 5bd2a55695..640e3795a5 100644
--- a/src/sunstone/public/app/opennebula.js
+++ b/src/sunstone/public/app/opennebula.js
@@ -15,41 +15,41 @@
/* -------------------------------------------------------------------------- */
define(function(require) {
- require('jquery');
+ require("jquery");
- var Helper = require('./opennebula/helper'),
- Action = require('./opennebula/action'),
- Auth = require('./opennebula/auth'),
- Error = require('./opennebula/error'),
+ var Helper = require("./opennebula/helper"),
+ Action = require("./opennebula/action"),
+ Auth = require("./opennebula/auth"),
+ Error = require("./opennebula/error"),
- Acl = require('./opennebula/acl'),
- Cluster = require('./opennebula/cluster'),
- Datastore = require('./opennebula/datastore'),
- Group = require('./opennebula/group'),
- Host = require('./opennebula/host'),
- Image = require('./opennebula/image'),
- Network = require('./opennebula/network'),
- VNTemplate = require('./opennebula/vntemplate'),
- Role = require('./opennebula/role'),
- securitygroup = require('./opennebula/securitygroup'),
- Service = require('./opennebula/service'),
- ServiceTemplate = require('./opennebula/servicetemplate'),
- Support = require('./opennebula/support'),
- Template = require('./opennebula/template'),
- User = require('./opennebula/user'),
- Vdc = require('./opennebula/vdc'),
- Vm = require('./opennebula/vm'),
- VMGroup = require('./opennebula/vmgroup'),
- Zone = require('./opennebula/zone'),
- VirtualRouter = require('./opennebula/virtualrouter');
- MarketPlace = require('./opennebula/marketplace');
- MarketPlaceApp = require('./opennebula/marketplaceapp');
+ Acl = require("./opennebula/acl"),
+ Cluster = require("./opennebula/cluster"),
+ Datastore = require("./opennebula/datastore"),
+ Group = require("./opennebula/group"),
+ Host = require("./opennebula/host"),
+ Image = require("./opennebula/image"),
+ Network = require("./opennebula/network"),
+ VNTemplate = require("./opennebula/vntemplate"),
+ Role = require("./opennebula/role"),
+ securitygroup = require("./opennebula/securitygroup"),
+ Service = require("./opennebula/service"),
+ ServiceTemplate = require("./opennebula/servicetemplate"),
+ Support = require("./opennebula/support"),
+ Template = require("./opennebula/template"),
+ User = require("./opennebula/user"),
+ Vdc = require("./opennebula/vdc"),
+ Vm = require("./opennebula/vm"),
+ VMGroup = require("./opennebula/vmgroup"),
+ Zone = require("./opennebula/zone"),
+ VirtualRouter = require("./opennebula/virtualrouter");
+ MarketPlace = require("./opennebula/marketplace");
+ MarketPlaceApp = require("./opennebula/marketplaceapp");
- if (typeof(csrftoken) != "undefined") {
+ if (typeof(csrftoken) !== "undefined") {
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
var params = originalOptions.data;
- if (typeof(params) == "string") {
+ if (typeof(params) === "string") {
params = JSON.parse(params);
params["csrftoken"] = csrftoken;
options.data = JSON.stringify(params);
@@ -62,34 +62,34 @@ define(function(require) {
}
var OpenNebula = {
- 'Helper': Helper,
- 'Action': Action,
- 'Auth': Auth,
- 'Error': Error,
- 'Acl': Acl,
- 'Cluster': Cluster,
- 'Datastore': Datastore,
- 'Group': Group,
- 'Host': Host,
- 'Image': Image,
- 'File': Image,
- 'Network': Network,
- 'VNTemplate': VNTemplate,
- 'Role': Role,
- 'SecurityGroup': securitygroup,
- 'Service': Service,
- 'ServiceTemplate': ServiceTemplate,
- 'Support': Support,
- 'Template': Template,
- 'VirtualRouterTemplate': Template,
- 'User': User,
- 'Vdc': Vdc,
- 'VM': Vm,
- 'VMGroup': VMGroup,
- 'Zone': Zone,
- 'VirtualRouter': VirtualRouter,
- 'MarketPlace': MarketPlace,
- 'MarketPlaceApp': MarketPlaceApp
+ "Helper": Helper,
+ "Action": Action,
+ "Auth": Auth,
+ "Error": Error,
+ "Acl": Acl,
+ "Cluster": Cluster,
+ "Datastore": Datastore,
+ "Group": Group,
+ "Host": Host,
+ "Image": Image,
+ "File": Image,
+ "Network": Network,
+ "VNTemplate": VNTemplate,
+ "Role": Role,
+ "SecurityGroup": securitygroup,
+ "Service": Service,
+ "ServiceTemplate": ServiceTemplate,
+ "Support": Support,
+ "Template": Template,
+ "VirtualRouterTemplate": Template,
+ "User": User,
+ "Vdc": Vdc,
+ "VM": Vm,
+ "VMGroup": VMGroup,
+ "Zone": Zone,
+ "VirtualRouter": VirtualRouter,
+ "MarketPlace": MarketPlace,
+ "MarketPlaceApp": MarketPlaceApp
};
return OpenNebula;
diff --git a/src/sunstone/public/app/opennebula/action.js b/src/sunstone/public/app/opennebula/action.js
index 25c212ca7d..3e96720369 100644
--- a/src/sunstone/public/app/opennebula/action.js
+++ b/src/sunstone/public/app/opennebula/action.js
@@ -15,9 +15,9 @@
/* -------------------------------------------------------------------------- */
define(function(require) {
- var OpenNebulaHelper = require('./helper');
- var OpenNebulaError = require('./error');
- var Config = require('sunstone-config');
+ var OpenNebulaHelper = require("./helper");
+ var OpenNebulaError = require("./error");
+ var Config = require("sunstone-config");
var listCache = {};
var listWaiting = {};
@@ -30,7 +30,7 @@ define(function(require) {
var _clearCache = function(cache_name) {
listCache[cache_name] = null;
//console.log(cache_name+" cache cleaned");
- }
+ };
//Example: Simple action: publish. Simple action with action obj: deploy
var _simple_action = function(params, resource, method, action_obj, path) {
@@ -48,7 +48,6 @@ define(function(require) {
var reqPath = path ? path : resource.toLowerCase();
var cache_name = params.cache_name ? params.cache_name : resource;
-
$.ajax({
url: reqPath + "/" + id + "/action",
type: "POST",
@@ -64,7 +63,7 @@ define(function(require) {
callbackError(request, OpenNebulaError(response)) : null;
}
});
- }
+ };
var Action = {
"create": function(params, resource, path) {
@@ -120,6 +119,29 @@ define(function(require) {
return listCache[resource];
},
+ "check": function(params, path){
+ if(params &&
+ params.success &&
+ typeof params.success === "function" &&
+ params &&
+ params.error &&
+ typeof params.error === "function"){
+ var reqPath = path.toLowerCase();
+ $.ajax({
+ url: reqPath,
+ type: "GET",
+ success: function(response) {
+ params.success(response);
+ return false;
+ },
+ error: function(response) {
+ params.error(response);
+ return false;
+ }
+ });
+ }
+ },
+
"list": function(params, resource, path, process) {
var callback = params.success;
var callbackError = params.error;
@@ -169,7 +191,6 @@ define(function(require) {
listWaiting[cache_name] = true;
var pool_filter = Config.isChangedFilter()?-4:-2;
//console.log(cache_name+" list. NO cache, calling ajax");
-
$.ajax({
url: reqPath,
type: "GET",
@@ -198,7 +219,6 @@ define(function(require) {
var callback = listCallbacks[cache_name][i].success;
if (callback) {
- //console.log(cache_name+" list. Callback called");
try{
callback(request, list, response);
}catch(err){
@@ -236,14 +256,13 @@ define(function(require) {
var timeout = params.timeout || false;
var request = OpenNebulaHelper.request(resource, "list");
var reqPath = path ? path : resource.toLowerCase();
-
$.ajax({
url: reqPath,
type: "GET",
data: {timeout: timeout, zone_id: params.data.zone_id, pool_filter: params.data.pool_filter},
dataType: "json",
success: function(response) {
- var list = OpenNebulaHelper.pool(resource, response)
+ var list = OpenNebulaHelper.pool(resource, response);
return callback ?
callback(request, list) : null;
},
@@ -267,7 +286,6 @@ define(function(require) {
var reqPath = path ? path : resource.toLowerCase();
var url = reqPath + "/" + id;
url = subresource ? url + "/" + subresource : url;
-
$.ajax({
url: url,
type: "GET",
@@ -318,11 +336,10 @@ define(function(require) {
var url = path ? path : resource.toLowerCase();
url = all ? url + "/monitor" : url + "/" + params.data.id + "/monitor";
-
$.ajax({
url: url,
type: "GET",
- data: data['monitor'],
+ data: data["monitor"],
dataType: "json",
success: function(response) {
return callback ? callback(request, response) : null;
@@ -343,7 +360,6 @@ define(function(require) {
var request = OpenNebulaHelper.request(resource, method, data);
var url = path ? path : resource.toLowerCase() + "/accounting";
-
$.ajax({
url: url,
type: "GET",
@@ -368,7 +384,6 @@ define(function(require) {
var request = OpenNebulaHelper.request(resource, method, data);
var url = path ? path : resource.toLowerCase() + "/showback";
-
$.ajax({
url: url,
type: "GET",
diff --git a/src/sunstone/public/app/opennebula/support.js b/src/sunstone/public/app/opennebula/support.js
index fab6073ef4..cad1052baf 100644
--- a/src/sunstone/public/app/opennebula/support.js
+++ b/src/sunstone/public/app/opennebula/support.js
@@ -15,10 +15,11 @@
/* -------------------------------------------------------------------------- */
define(function(require) {
- var OpenNebulaAction = require('./action');
+ var OpenNebulaAction = require("./action");
var RESOURCE = "REQUEST";
- var PATH = 'support/request';
+ var PATH = "support/request";
+ var PATH_CHECK_SUPPORT = "support/check";
var CACHE_NAME = "REQUEST";
var Support = {
@@ -29,15 +30,18 @@ define(function(require) {
"update": function(params) {
OpenNebulaAction.simple_action(params, RESOURCE, "update", params.data.extra_param, PATH);
},
+ "check": function(params){
+ OpenNebulaAction.check(params, PATH_CHECK_SUPPORT);
+ },
"list" : function(params) {
params.cache_name = CACHE_NAME;
OpenNebulaAction.clear_cache(params.cache_name);
- OpenNebulaAction.list(params, RESOURCE, PATH)
+ OpenNebulaAction.list(params, RESOURCE, PATH);
},
"show" : function(params) {
- OpenNebulaAction.show(params, RESOURCE, false, PATH)
+ OpenNebulaAction.show(params, RESOURCE, false, PATH);
}
- }
+ };
return Support;
-})
+});
diff --git a/src/sunstone/public/app/sunstone-config.js b/src/sunstone/public/app/sunstone-config.js
index 7576e209b9..05c595b9ad 100644
--- a/src/sunstone/public/app/sunstone-config.js
+++ b/src/sunstone/public/app/sunstone-config.js
@@ -15,34 +15,32 @@
/* -------------------------------------------------------------------------- */
define(function(require) {
- require('jquery');
-
+ require("jquery");
// Clone the local config object in a private var
var _config = $.extend(true, {}, config);
-
var Config = {
- 'isTabEnabled': function(tabName) {
- var enabled = _config['view']['enabled_tabs'].indexOf(tabName) != -1;
+ "isTabEnabled": function(tabName) {
+ var enabled = _config["view"]["enabled_tabs"].indexOf(tabName) != -1;
return enabled;
},
"changeFilter": function(bool) {
- _config['pool_filter'] = bool;
+ _config["pool_filter"] = bool;
},
"isChangedFilter": function(){
- return _config['pool_filter'];
+ return _config["pool_filter"];
},
"isTabActionEnabled": function(tabName, actionName, panelName) {
var enabled = false;
- var configTab = _config['view']['tabs'][tabName];
+ var configTab = _config["view"]["tabs"][tabName];
if (configTab != undefined) {
if (panelName) {
- enabled = configTab['panel_tabs_actions'][panelName][actionName];
+ enabled = configTab["panel_tabs_actions"][panelName][actionName];
} else {
- enabled = configTab['actions'][actionName];
+ enabled = configTab["actions"][actionName];
}
}
@@ -50,8 +48,8 @@ define(function(require) {
},
"isTabPanelEnabled": function(tabName, panelTabName) {
- if (_config['view']['tabs'][tabName]) {
- var enabled = _config['view']['tabs'][tabName]['panel_tabs'][panelTabName];
+ if (_config["view"]["tabs"][tabName]) {
+ var enabled = _config["view"]["tabs"][tabName]["panel_tabs"][panelTabName];
return enabled;
} else {
return false;
@@ -59,13 +57,13 @@ define(function(require) {
},
"isProvisionTabEnabled": function(tabName, panelTabName) {
- if (_config['view']['tabs'][tabName]) {
- if (_config['view']['tabs'][tabName]['provision_tabs']) {
- return _config['view']['tabs'][tabName]['provision_tabs'][panelTabName];
+ if (_config["view"]["tabs"][tabName]) {
+ if (_config["view"]["tabs"][tabName]["provision_tabs"]) {
+ return _config["view"]["tabs"][tabName]["provision_tabs"][panelTabName];
} else {
// if provision_tabs is not defined use panel_tabs.
// This attribute was used in before 4.14, provision_tabs was include in 4.14.2
- return _config['view']['tabs'][tabName]['panel_tabs'][panelTabName];
+ return _config["view"]["tabs"][tabName]["panel_tabs"][panelTabName];
}
} else {
return false;
@@ -73,7 +71,7 @@ define(function(require) {
},
"isFeatureEnabled": function(featureName) {
- if (_config['view']['features'] && _config['view']['features'][featureName]) {
+ if (_config["view"]["features"] && _config["view"]["features"][featureName]) {
return true;
} else {
return false;
@@ -81,19 +79,19 @@ define(function(require) {
},
"isAdvancedEnabled": function(featureName) {
- if (_config['view']['features'] && featureName in _config['view']['features']) {
- return _config['view']['features'][featureName];
+ if (_config["view"]["features"] && featureName in _config["view"]["features"]) {
+ return _config["view"]["features"][featureName];
} else {
return true;
}
},
"tabTableColumns": function(tabName) {
- if (!_config['view']['tabs'][tabName]) {
+ if (!_config["view"]["tabs"][tabName]) {
return [];
}
- var columns = _config['view']['tabs'][tabName]['table_columns'];
+ var columns = _config["view"]["tabs"][tabName]["table_columns"];
if (columns) {
return columns;
@@ -105,19 +103,19 @@ define(function(require) {
"isTemplateCreationTabEnabled": function(tabName, wizardTabName) {
var enabled = false;
- if (_config['view']['tabs'][tabName] && _config['view']['tabs'][tabName]['template_creation_tabs']) {
- enabled = _config['view']['tabs'][tabName]['template_creation_tabs'][wizardTabName];
+ if (_config["view"]["tabs"][tabName] && _config["view"]["tabs"][tabName]["template_creation_tabs"]) {
+ enabled = _config["view"]["tabs"][tabName]["template_creation_tabs"][wizardTabName];
}
return (enabled == true);
},
"dashboardWidgets": function(perRow) {
- if (!_config['view']['tabs']['dashboard-tab']) {
- return []
+ if (!_config["view"]["tabs"]["dashboard-tab"]) {
+ return [];
}
- var widgets = _config['view']['tabs']['dashboard-tab'][perRow];
+ var widgets = _config["view"]["tabs"]["dashboard-tab"][perRow];
if (widgets) {
return widgets;
@@ -127,14 +125,14 @@ define(function(require) {
},
"tableOrder": function() {
- return _config['user_config']["table_order"];
+ return _config["user_config"]["table_order"];
},
"provision": {
"dashboard": {
"isEnabled": function(widget) {
- if (_config['view']['tabs']['provision-tab']) {
- var enabled = _config['view']['tabs']['provision-tab']['dashboard'][widget];
+ if (_config["view"]["tabs"]["provision-tab"]) {
+ var enabled = _config["view"]["tabs"]["provision-tab"]["dashboard"][widget];
return enabled;
} else {
return false;
@@ -143,35 +141,35 @@ define(function(require) {
},
"create_vm": {
"isEnabled": function(widget) {
- if (_config['view']['tabs']['provision-tab'] && _config['view']['tabs']['provision-tab']["create_vm"]) {
- return _config['view']['tabs']['provision-tab']['create_vm'][widget];
+ if (_config["view"]["tabs"]["provision-tab"] && _config["view"]["tabs"]["provision-tab"]["create_vm"]) {
+ return _config["view"]["tabs"]["provision-tab"]["create_vm"][widget];
} else {
return false;
}
}
},
- "logo": (_config['view']["provision_logo"] || "images/one_small_logo.png"),
+ "logo": (_config["view"]["provision_logo"] || "images/one_small_logo.png"),
},
- 'tableOrder': _config['user_config']['table_order'],
- 'vncProxyPort': _config['system_config']['vnc_client_port'] || _config['system_config']['vnc_proxy_port'].split(':')[1] || _config['system_config']['vnc_proxy_port'],
- 'vncWSS': _config['user_config']['vnc_wss'],
- 'requestVNCPassword': _config['system_config']['vnc_request_password'],
- 'logo': (_config['view']["small_logo"] || "images/one_small_logo.png"),
- "link_logo": (_config['view']["link_logo"] || false),
- "text_link_logo": (_config['view']["text_link_logo"] || false),
- 'vmLogos': (_config['vm_logos']),
- 'enabledTabs': _config['view']['enabled_tabs'],
- 'onedConf': _config['oned_conf'],
- 'confirmVMActions': _config['view']['confirm_vms'],
- 'scaleFactor': _config['view']['features']['instantiate_cpu_factor'],
- 'filterView': _config['view']['filter-view'],
- 'doCountAnimation': _config['view']['do_count_animation'],
+ "tableOrder": _config["user_config"]["table_order"],
+ "vncProxyPort": _config["system_config"]["vnc_client_port"] || _config["system_config"]["vnc_proxy_port"].split(":")[1] || _config["system_config"]["vnc_proxy_port"],
+ "vncWSS": _config["user_config"]["vnc_wss"],
+ "requestVNCPassword": _config["system_config"]["vnc_request_password"],
+ "logo": (_config["view"]["small_logo"] || "images/one_small_logo.png"),
+ "link_logo": (_config["view"]["link_logo"] || false),
+ "text_link_logo": (_config["view"]["text_link_logo"] || false),
+ "vmLogos": (_config["vm_logos"]),
+ "enabledTabs": _config["view"]["enabled_tabs"],
+ "onedConf": _config["oned_conf"],
+ "confirmVMActions": _config["view"]["confirm_vms"],
+ "scaleFactor": _config["view"]["features"]["instantiate_cpu_factor"],
+ "filterView": _config["view"]["filter-view"],
+ "doCountAnimation": _config["view"]["do_count_animation"],
"allTabs": function() {
- return Object.keys(_config['view']['tabs']);
+ return Object.keys(_config["view"]["tabs"]);
}
- }
+ };
return Config;
});
diff --git a/src/sunstone/public/app/sunstone.js b/src/sunstone/public/app/sunstone.js
index 64061b2c67..36274df4bb 100644
--- a/src/sunstone/public/app/sunstone.js
+++ b/src/sunstone/public/app/sunstone.js
@@ -79,42 +79,40 @@ define(function(require) {
"tabs" : {}
};
+ var _addMainTab = function(tabName){
+ var name = "./tabs/" + tabName;
+ if (DefaultTabsArr.indexOf(tabName) == -1){
+ name = "./addons/tabs/" + tabName;
+ }
+ var tabObj = require(name);
+ var _tabId = tabObj.tabId;
+ SunstoneCfg["tabs"][_tabId] = tabObj;
+ var panels = tabObj.panels;
+ if (panels) {
+ _addPanels(_tabId, panels);
+ }
+ var panelsHooks = tabObj.panelsHooks;
+ if (panelsHooks) {
+ _addPanelsHooks(_tabId, panelsHooks);
+ }
+ var initHooks = tabObj.initHooks;
+ if (initHooks) {
+ _addInitHooks(_tabId, initHooks);
+ }
+ var dialogs = tabObj.dialogs;
+ if (dialogs) {
+ _addDialogs(dialogs);
+ }
+ var formPanels = tabObj.formPanels;
+ if (formPanels) {
+ _addFormPanels(_tabId, formPanels);
+ }
+ };
+
var _addMainTabs = function() {
_addActions();
-
$.each(Config.enabledTabs, function(i, tabName){
- var name = "./tabs/" + tabName;
- if (DefaultTabsArr.indexOf(tabName) == -1){
- name = "./addons/tabs/" + tabName;
- }
- var tabObj = require(name);
- var _tabId = tabObj.tabId;
- SunstoneCfg["tabs"][_tabId] = tabObj;
-
- var panels = tabObj.panels;
- if (panels) {
- _addPanels(_tabId, panels);
- }
-
- var panelsHooks = tabObj.panelsHooks;
- if (panelsHooks) {
- _addPanelsHooks(_tabId, panelsHooks);
- }
-
- var initHooks = tabObj.initHooks;
- if (initHooks) {
- _addInitHooks(_tabId, initHooks);
- }
-
- var dialogs = tabObj.dialogs;
- if (dialogs) {
- _addDialogs(dialogs);
- }
-
- var formPanels = tabObj.formPanels;
- if (formPanels) {
- _addFormPanels(_tabId, formPanels);
- }
+ _addMainTab(tabName);
});
};
@@ -185,20 +183,35 @@ define(function(require) {
hook.init();
});
}
-
- // TODO Add openenbula actions
- /*if (config['view']['autorefresh']) {
- var tabContext = $("#" + tabName);
- var refreshButton = $(".fa-sync-alt", $(".action_blocks", tabContext).first());
- setInterval(function() {
- if (Sunstone.rightListVisible(tabContext)) {
- refreshButton.click();
- }
- }, TOP_INTERVAL);
- }*/
}
-
+ if(SunstoneCfg &&
+ SunstoneCfg.tabs &&
+ config &&
+ config.user_config &&
+ config.user_config.default_view &&
+ config.user_config.default_view === "admin"
+ ){
+ var support_tab = "support-tab";
+ if(!SunstoneCfg.tabs[support_tab]){
+ SunstoneCfg.tabs[support_tab] = {
+ actions: {
+ "Support.create_dialog": true,
+ "Support.refresh": true
+ },
+ panels_tabs:{
+ "support_info_tab": true
+ },
+ table_columns: [1,2,3,4]
+ };
+ _addMainTab(support_tab);
+ _insertTab(support_tab);
+ _setupDataTable(support_tab);
+ }
+ }
_setupTabs();
+ $().on("click",function(){
+
+ })
};
var _setupDataTable = function(tabName) {
@@ -236,23 +249,14 @@ define(function(require) {
title += tabInfo.title;
if (parent !== "") {
- liItem = "
" +
- "" + title + "" +
- "";
-
+ liItem = "" + "" + title + "" + "";
if ($("#menu ul#navigation #li_" + parent + " .menu").length > 0) {
$("#menu ul#navigation #li_" + parent + " .menu").append(liItem);
} else {
- $("#menu ul#navigation #li_" + parent).append(
- "");
+ $("#menu ul#navigation #li_" + parent).append("");
}
} else {
- liItem = "" +
- "" + title + "" +
- "";
-
+ liItem = "" + "" + title + "" + "";
$("div#menu ul#navigation").append(liItem);
}
@@ -1281,6 +1285,7 @@ define(function(require) {
var Sunstone = {
"addMainTabs": _addMainTabs,
+ "addMainTab": _addMainTab,
"addDialogs": _addDialogs,
"insertTabs": _insertTabs,
diff --git a/src/sunstone/public/app/tabs/groups-tab/panels/info.js b/src/sunstone/public/app/tabs/groups-tab/panels/info.js
index d9dc13c9ef..44e8cb7298 100644
--- a/src/sunstone/public/app/tabs/groups-tab/panels/info.js
+++ b/src/sunstone/public/app/tabs/groups-tab/panels/info.js
@@ -19,23 +19,23 @@ define(function(require) {
DEPENDENCIES
*/
- var TemplateInfo = require('hbs!./info/html');
- var Locale = require('utils/locale');
- var Views = require('../utils/views');
- var Tips = require('utils/tips');
+ var TemplateInfo = require("hbs!./info/html");
+ var Locale = require("utils/locale");
+ var Views = require("../utils/views");
+ var Tips = require("utils/tips");
/*
TEMPLATES
*/
- var TemplateTable = require('utils/panel/template-table');
+ var TemplateTable = require("utils/panel/template-table");
/*
CONSTANTS
*/
- var TAB_ID = require('../tabId');
- var PANEL_ID = require('./info/panelId');
+ var TAB_ID = require("../tabId");
+ var PANEL_ID = require("./info/panelId");
var RESOURCE = "Group";
var XML_ROOT = "GROUP";
@@ -65,7 +65,6 @@ define(function(require) {
function _html() {
var adminViews = [];
var userViews = [];
-
var sunstone_template = this.element.TEMPLATE.SUNSTONE;
if (sunstone_template) {
adminViews = _processViews(
@@ -87,10 +86,10 @@ define(function(require) {
//====
return TemplateInfo({
- 'element': this.element,
- 'adminViews': adminViews,
- 'userViews': userViews,
- 'templateTableHTML': templateTableHTML
+ "element": this.element,
+ "adminViews": adminViews,
+ "userViews": userViews,
+ "templateTableHTML": templateTableHTML
});
}
@@ -130,24 +129,24 @@ define(function(require) {
var viewsArray = [];
if (viewsStr){
- $.each(viewsStr.split(','), function(index, view){
+ $.each(viewsStr.split(","), function(index, view){
var viewElem;
var knownView = Views.info[view];
if (knownView){
viewElem = {
- 'name': knownView.name,
- 'description': knownView.description
+ "name": knownView.name,
+ "description": knownView.description
};
} else {
viewElem = {
- 'name': view,
- 'description': ''
+ "name": view,
+ "description": ""
};
}
if (view == defaultView){
- viewElem.name += ' (' + Locale.tr("default") + ')';
+ viewElem.name += " (" + Locale.tr("default") + ")";
}
viewsArray.push(viewElem);
diff --git a/src/sunstone/public/app/tabs/settings-tab.js b/src/sunstone/public/app/tabs/settings-tab.js
index 989e089052..f82af23aae 100644
--- a/src/sunstone/public/app/tabs/settings-tab.js
+++ b/src/sunstone/public/app/tabs/settings-tab.js
@@ -15,12 +15,12 @@
/* -------------------------------------------------------------------------- */
define(function(require) {
- var Locale = require('utils/locale');
- var OpenNebulaUser = require('opennebula/user');
- var Sunstone = require('sunstone');
- var _actions = require('./users-tab/actions');
+ var Locale = require("utils/locale");
+ var OpenNebulaUser = require("opennebula/user");
+ var Sunstone = require("sunstone");
+ var _actions = require("./users-tab/actions");
- var TAB_ID = require('./settings-tab/tabId');
+ var TAB_ID = require("./settings-tab/tabId");
_actions["Settings.refresh"] = {
type: "custom",
@@ -28,34 +28,34 @@ define(function(require) {
};
var _dialogs = [
- require('tabs/users-tab/dialogs/password'),
- require('./users-tab/dialogs/login-token')
+ require("tabs/users-tab/dialogs/password"),
+ require("./users-tab/dialogs/login-token")
];
var _panels = [
- require('tabs/settings-tab/panels/info'),
- require('tabs/settings-tab/panels/user-config'),
- require('tabs/settings-tab/panels/quotas'),
- require('tabs/settings-tab/panels/group-quotas'),
- require('tabs/settings-tab/panels/accounting'),
- require('tabs/settings-tab/panels/showback'),
- require('tabs/settings-tab/panels/auth')
+ require("tabs/settings-tab/panels/info"),
+ require("tabs/settings-tab/panels/user-config"),
+ require("tabs/settings-tab/panels/quotas"),
+ require("tabs/settings-tab/panels/group-quotas"),
+ require("tabs/settings-tab/panels/accounting"),
+ require("tabs/settings-tab/panels/showback"),
+ require("tabs/settings-tab/panels/auth")
];
var _formPanels = [
- require('./acls-tab/form-panels/create')
+ require("./acls-tab/form-panels/create")
];
var Tab = {
tabId: TAB_ID,
title: Locale.tr("Settings"),
listHeader: Locale.tr("Settings"),
- resource: 'Settings',
+ resource: "Settings",
actions: _actions,
- content: '' +
- '' +
- '' +
- '',
+ content: "" +
+ "" +
+ "" +
+ "",
dialogs: _dialogs,
panels: _panels,
};
@@ -68,7 +68,7 @@ define(function(require) {
id: -1
},
success: function(request, user_json) {
- Sunstone.insertPanels(TAB_ID, user_json, TAB_ID, $(".sunstone-list", $("#" + TAB_ID)))
+ Sunstone.insertPanels(TAB_ID, user_json, TAB_ID, $(".sunstone-list", $("#" + TAB_ID)));
}
});
}
diff --git a/src/sunstone/public/app/tabs/settings-tab/panels/user-config.js b/src/sunstone/public/app/tabs/settings-tab/panels/user-config.js
index 3da34647b9..d3a7f3ad46 100644
--- a/src/sunstone/public/app/tabs/settings-tab/panels/user-config.js
+++ b/src/sunstone/public/app/tabs/settings-tab/panels/user-config.js
@@ -20,29 +20,29 @@ define(function(require) {
*/
// require('foundation.accordion');
- var Locale = require('utils/locale');
- var Config = require('sunstone-config');
- var OpenNebula = require('opennebula');
- var TemplateUtils = require('utils/template-utils');
- var Sunstone = require('sunstone');
- var Notifier = require('utils/notifier');
- var Humanize = require('utils/humanize');
+ var Locale = require("utils/locale");
+ var Config = require("sunstone-config");
+ var OpenNebula = require("opennebula");
+ var TemplateUtils = require("utils/template-utils");
+ var Sunstone = require("sunstone");
+ var Notifier = require("utils/notifier");
+ var Humanize = require("utils/humanize");
/*
TEMPLATES
*/
- var TemplateEasyInfo = require('hbs!./user-config/html');
+ var TemplateEasyInfo = require("hbs!./user-config/html");
/*
CONSTANTS
*/
- var TAB_ID = require('../tabId');
- var PANEL_ID = require('./user-config/panelId');
+ var TAB_ID = require("../tabId");
+ var PANEL_ID = require("./user-config/panelId");
var RESOURCE = "User";
var XML_ROOT = "USER";
- var LOGIN_TOKEN_DIALOG_ID = require('tabs/users-tab/dialogs/login-token/dialogId');
+ var LOGIN_TOKEN_DIALOG_ID = require("tabs/users-tab/dialogs/login-token/dialogId");
/*
CONSTRUCTOR
@@ -69,12 +69,12 @@ define(function(require) {
*/
function _html() {
- return TemplateEasyInfo({'languageOptions': Locale.language_options});
+ return TemplateEasyInfo({"languageOptions": Locale.language_options});
}
function _setup(context) {
var that = this;
- Foundation.reflow(context, 'accordion');
+ Foundation.reflow(context, "accordion");
var ssh_key = this.element.TEMPLATE.SSH_PUBLIC_KEY;
if (ssh_key && ssh_key.length) {
$("#provision_ssh_key", context).val(ssh_key);
@@ -85,13 +85,13 @@ define(function(require) {
$(".provision_update_ssh_key_button", context).hide();
}
- $('#provision_new_language option[value="' + config['user_config']["lang"] + '"]', context).attr('selected', 'selected');
+ $("#provision_new_language option[value=\"" + config["user_config"]["lang"] + "\"]", context).attr("selected", "selected");
- $.each(config['available_views'], function(id, view) {
- $('select#provision_user_views_select', context).append('')
+ $.each(config["available_views"], function(id, view) {
+ $("select#provision_user_views_select", context).append("");
});
- $('#provision_user_views_select option[value="' + config['user_config']["default_view"] + '"]', context).attr('selected', 'selected');
+ $("#provision_user_views_select option[value=\"" + config["user_config"]["default_view"] + "\"]", context).attr("selected", "selected");
// Login token button
context.off("click", ".provision_login_token_button");
@@ -102,8 +102,8 @@ define(function(require) {
});
$("#provision_change_password_form").submit(function() {
- var pw = $('#provision_new_password', this).val();
- var confirm_password = $('#provision_new_confirm_password', this).val();
+ var pw = $("#provision_new_password", this).val();
+ var confirm_password = $("#provision_new_confirm_password", this).val();
if (!pw.length) {
Notifier.notifyError(Locale.tr("Fill in a new password"));
@@ -117,19 +117,19 @@ define(function(require) {
Sunstone.runAction("User.passwd", ["-1"], pw);
- Sunstone.runAction('Settings.refresh');
+ Sunstone.runAction("Settings.refresh");
return false;
});
$("#provision_add_ssh_key_form").submit(function() {
- var keypair = $('#provision_ssh_key', this).val();
+ var keypair = $("#provision_ssh_key", this).val();
if (!keypair.length) {
Notifier.notifyError(Locale.tr("You have to provide an SSH key"));
return false;
}
- var template_str = 'SSH_PUBLIC_KEY = "'+TemplateUtils.escapeDoubleQuotes(keypair)+'"';
+ var template_str = "SSH_PUBLIC_KEY = \""+TemplateUtils.escapeDoubleQuotes(keypair)+"\"";
Sunstone.runAction("User.append_template", "-1", template_str);
@@ -137,14 +137,14 @@ define(function(require) {
});
$("#provision_change_view_form").submit(function() {
- var sunstone_setting = {DEFAULT_VIEW : $('#provision_user_views_select', this).val()};
+ var sunstone_setting = {DEFAULT_VIEW : $("#provision_user_views_select", this).val()};
Sunstone.runAction("User.append_sunstone_setting_refresh", that.element.ID, sunstone_setting);
return false;
});
$("#provision_change_language_form").submit(function() {
- var sunstone_setting = {LANG : $('#provision_new_language', this).val()};
+ var sunstone_setting = {LANG : $("#provision_new_language", this).val()};
Sunstone.runAction("User.append_sunstone_setting_refresh", that.element.ID, sunstone_setting);
return false;
diff --git a/src/sunstone/public/app/tabs/support-tab.js b/src/sunstone/public/app/tabs/support-tab.js
index 25d9e5ec68..d14d061c28 100644
--- a/src/sunstone/public/app/tabs/support-tab.js
+++ b/src/sunstone/public/app/tabs/support-tab.js
@@ -15,42 +15,42 @@
/* -------------------------------------------------------------------------- */
define(function(require) {
- var Buttons = require('./support-tab/buttons');
- var Actions = require('./support-tab/actions');
- var Table = require('./support-tab/datatable');
- var Notifier = require('utils/notifier');
- var SupportUtils = require('./support-tab/utils/common');
- var Sunstone = require('sunstone');
+ var Buttons = require("./support-tab/buttons");
+ var Actions = require("./support-tab/actions");
+ var Table = require("./support-tab/datatable");
+ var Notifier = require("utils/notifier");
+ var SupportUtils = require("./support-tab/utils/common");
+ var Sunstone = require("sunstone");
+ var Locale = require("utils/locale");
+ var TemplateTitle = require("hbs!./support-tab/title");
+ var TemplateSubheader = require("hbs!./support-tab/subheader");
- var TemplateTitle = require('hbs!./support-tab/title');
- var TemplateSubheader = require('hbs!./support-tab/subheader');
-
- var TAB_ID = require('./support-tab/tabId');
+ var TAB_ID = require("./support-tab/tabId");
var DATATABLE_ID = "dataTableSupport";
var _dialogs = [
- require('./support-tab/dialogs/upload')
+ require("./support-tab/dialogs/upload")
];
var _panels = [
- require('./support-tab/panels/info')
+ require("./support-tab/panels/info")
];
var _formPanels = [
- require('./support-tab/form-panels/create')
+ require("./support-tab/form-panels/create")
];
var Tab = {
tabId: TAB_ID,
- resource: 'Support',
+ resource: "Support",
title: TemplateTitle(),
- listHeader: 'Commercial Support Requests',
- infoHeader: 'Commercial Support Request',
+ listHeader: "Commercial Support Requests",
+ infoHeader: "Commercial Support Request",
subheader: TemplateSubheader({
- 'support_subscription': config['support']['support_subscription'],
- 'account': config['support']['account'],
- 'docs': config['support']['docs'],
- 'community': config['support']['community']
+ "support_subscription": config["support"]["support_subscription"],
+ "account": config["support"]["account"],
+ "docs": config["support"]["docs"],
+ "community": config["support"]["community"]
}),
buttons: Buttons,
actions: Actions,
@@ -64,52 +64,63 @@ define(function(require) {
return Tab;
function _setup(context) {
-
- SupportUtils.showSupportConnect();
- SupportUtils.startIntervalRefresh();
-
- $(".support_button").on("click", function(){
- $("#li_support-tab > a").trigger("click");
- $(".create_dialog_button", "#support-tab").trigger("click");
- return false;
+ //SupportUtils.startIntervalRefresh(); //esto de debe de borrar porque me esta listando el login de un usuario
+ SupportUtils.checkValidateOfficialSupport();
+ $("#li_support-tab > a").on("click", function(e){
+ e.preventDefault();
});
+ $(".support_not_connected > button").on("click", function(e){
+ e.stopPropagation();
+ window.open("http://opennebula.systems/opennebula-support/", "_blank");
+ });
+ if(config && config.user_config && config.user_config.default_view === "admin"){
+ $("#support_credentials_form", context).on("submit", function(){
+ $(".support_button").on("click", function(e){
+ e.stopPropagation();
+ $(".create_dialog_button", "#support-tab").trigger("click");
+ return false;
+ });
- $("#support_credentials_form", context).on("submit", function(){
- $(".submit_support_credentials_button", context).attr("disabled", "disabled");
- $(".submit_support_credentials_button", context).html('');
+ $(".support_connect_button").on("click", function(e){
+ window.location.assign("#support-tab");
+ });
- var data = {
- email : $("#support_email", this).val(),
- password : $("#support_password", this).val()
- };
-
- $.ajax({
- url: 'support/credentials',
- type: "POST",
- data: JSON.stringify(data),
- success: function(){
- $(".submit_support_credentials_button", context).removeAttr("disabled");
- $(".submit_support_credentials_button", context).html('Sign in');
-
- Sunstone.runAction("Support.refresh");
-
- SupportUtils.showSupportList();
- SupportUtils.startIntervalRefresh();
- },
- error: function(response){
- if (response.status=="401") {
- Notifier.notifyError("Support credentials are incorrect");
- } else {
- Notifier.notifyError(response.responseText);
+ $(".submit_support_credentials_button", context).attr("disabled", "disabled");
+ $(".submit_support_credentials_button", context).html("");
+ var data = {
+ email : $("#support_email", this).val(),
+ password : $("#support_password", this).val()
+ };
+ $.ajax({
+ url: "support/credentials",
+ type: "POST",
+ data: JSON.stringify(data),
+ success: function(){
+ $(".submit_support_credentials_button", context).removeAttr("disabled");
+ $(".submit_support_credentials_button", context).html(Locale.tr("Sign in"));
+ Sunstone.runAction("Support.refresh");
+ SupportUtils.showSupportList();
+ SupportUtils.startIntervalRefresh();
+ },
+ error: function(response){
+ if (response && response.status && response.status == "401") {
+ Notifier.notifyError("Support credentials are incorrect");
+ } else {
+ Notifier.notifyError(response.responseText);
+ }
+ $(".submit_support_credentials_button", context).removeAttr("disabled");
+ $(".submit_support_credentials_button", context).html(Locale.tr("Sign in"));
}
-
- $(".submit_support_credentials_button", context).removeAttr("disabled");
- $(".submit_support_credentials_button", context).html('Sign in');
- }
+ });
+ return false;
});
-
- return false;
- });
+ }else{
+ $(".only_admin_view").remove();
+ $("#li_support-tab > a").on("click", function(e){
+ e.preventDefault();
+ e.stopPropagation();
+ });
+ }
}
});
diff --git a/src/sunstone/public/app/tabs/support-tab/actions.js b/src/sunstone/public/app/tabs/support-tab/actions.js
index 58a24e8903..668f37c21e 100644
--- a/src/sunstone/public/app/tabs/support-tab/actions.js
+++ b/src/sunstone/public/app/tabs/support-tab/actions.js
@@ -15,17 +15,30 @@
/* -------------------------------------------------------------------------- */
define(function(require) {
- var Sunstone = require('sunstone');
- var Notifier = require('utils/notifier');
- var OpenNebulaSupport = require('opennebula/support');
- var SupportUtils = require('./utils/common');
+ var Sunstone = require("sunstone");
+ var Notifier = require("utils/notifier");
+ var OpenNebulaSupport = require("opennebula/support");
+ var SupportUtils = require("./utils/common");
var RESOURCE = "Support";
- var TAB_ID = require('./tabId');
- var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
- var UPLOAD_DIALOG_ID = require('./dialogs/upload/dialogId');
+ var TAB_ID = require("./tabId");
+ var CREATE_DIALOG_ID = require("./form-panels/create/formPanelId");
+ var UPLOAD_DIALOG_ID = require("./dialogs/upload/dialogId");
var _actions = {
+ "Support.check":{
+ type: "list",
+ call: OpenNebulaSupport.check,
+ callback: function(req, lst, res){
+ SupportUtils.showSupportConnect();
+ },
+ error: function(request){
+ if (request && request.status && request.status >= 400) {
+ SupportUtils.stopIntervalRefresh();
+ }
+ SupportUtils.hideSupportConnect();
+ }
+ },
"Support.list" : {
type: "list",
call: OpenNebulaSupport.list,
@@ -33,26 +46,23 @@ define(function(require) {
SupportUtils.showSupportList();
$(".support_open_value").text(res.open_requests);
$(".support_pending_value").text(res.pending_requests);
-
var elements = [];
if(res.REQUEST_POOL.REQUEST){
elements = res.REQUEST_POOL.REQUEST;
}
-
Sunstone.getDataTable(TAB_ID).updateView(req, elements);
},
error: function(request, error_json) {
if (error_json.error.http_status=="401") {
SupportUtils.stopIntervalRefresh();
}
-
SupportUtils.showSupportConnect();
}
},
"Support.refresh" : {
type: "custom",
call: function() {
- var tab = $('#' + TAB_ID);
+ var tab = $("#" + TAB_ID);
if (Sunstone.rightInfoVisible(tab)) {
Sunstone.runAction(RESOURCE+".show", Sunstone.rightInfoResourceId(tab));
} else {
@@ -69,7 +79,7 @@ define(function(require) {
call: OpenNebulaSupport.show,
callback: function(request, response) {
//Sunstone.getDataTable(TAB_ID).updateElement(request, response);
- if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {
+ if (Sunstone.rightInfoVisible($("#"+TAB_ID))) {
Sunstone.insertPanels(TAB_ID, response);
}
},
@@ -118,7 +128,7 @@ define(function(require) {
type: "single",
call: function() {
$.ajax({
- url: 'support/credentials',
+ url: "support/credentials",
type: "DELETE",
dataType: "text",
success: function(){
diff --git a/src/sunstone/public/app/tabs/support-tab/title.hbs b/src/sunstone/public/app/tabs/support-tab/title.hbs
index e11c980042..f7e85bcdc5 100644
--- a/src/sunstone/public/app/tabs/support-tab/title.hbs
+++ b/src/sunstone/public/app/tabs/support-tab/title.hbs
@@ -14,17 +14,45 @@
{{! limitations under the License. }}
{{! -------------------------------------------------------------------------- }}
-Support
-
-
Open-
-
-
Pending-
-
-
+
+ {{tr "Officially supported"}}
+
+
+
+ {{tr "Open"}}
+
+
+ -
+
+
+
+
+ {{tr "Pending"}}
+
+
+ -
+
+
+
+
+
+
+
+
- Not connected
-
-
+
+ {{tr "Officially supported"}}
+
+
+ {{tr "Not connected"}}
+
+
diff --git a/src/sunstone/public/app/tabs/support-tab/utils/common.js b/src/sunstone/public/app/tabs/support-tab/utils/common.js
index 17144e35b5..4a810f0975 100644
--- a/src/sunstone/public/app/tabs/support-tab/utils/common.js
+++ b/src/sunstone/public/app/tabs/support-tab/utils/common.js
@@ -19,31 +19,44 @@ define(function(require) {
Common functions for the support tab
*/
- var Sunstone = require('sunstone');
+ var Sunstone = require("sunstone");
- var TAB_ID = require('../tabId');
+ var TAB_ID = require("../tabId");
var support_interval_function;
function _show_support_connect() {
$(".support_info").hide();
$("#"+Sunstone.getDataTable(TAB_ID).dataTableId+"Container", "#"+TAB_ID).hide();
- $(".support_connect").show();
$(".actions_row", "#"+TAB_ID).hide();
+ $(".support_not_connected").hide();
+ $(".support_connect").show();
+ }
+
+ function _hide_support_connect() {
+ $(".support_info").hide();
+ $("#"+Sunstone.getDataTable(TAB_ID).dataTableId+"Container", "#"+TAB_ID).hide();
+ $(".support_connect").hide();
+ $(".actions_row", "#"+TAB_ID).hide();
+ $(".support_not_connected").show();
+ }
+
+ function _check_validate_official_support(){
+ Sunstone.runAction("Support.check");
}
function _show_support_list() {
$(".support_info").show();
$(".support_connect").hide();
+ $(".support_not_connected").hide();
$(".actions_row", "#"+TAB_ID).show();
$("#"+Sunstone.getDataTable(TAB_ID).dataTableId+"Container", "#"+TAB_ID).show();
}
function _startIntervalRefresh() {
- Sunstone.runAction('Support.list');
-
+ //Sunstone.runAction("Support.list"); //esto no se que pinta!!!
support_interval_function = setInterval(function(){
- Sunstone.runAction('Support.list');
+ Sunstone.runAction("Support.list");
}, Sunstone.TOP_INTERVAL);
}
@@ -52,9 +65,11 @@ define(function(require) {
}
return {
- 'showSupportConnect': _show_support_connect,
- 'showSupportList': _show_support_list,
- 'startIntervalRefresh': _startIntervalRefresh,
- 'stopIntervalRefresh': _stopIntervalRefresh,
+ "showSupportConnect": _show_support_connect,
+ "showSupportList": _show_support_list,
+ "hideSupportConnect": _hide_support_connect,
+ "startIntervalRefresh": _startIntervalRefresh,
+ "stopIntervalRefresh": _stopIntervalRefresh,
+ "checkValidateOfficialSupport": _check_validate_official_support
};
});
diff --git a/src/sunstone/public/app/tabs/users-tab/actions.js b/src/sunstone/public/app/tabs/users-tab/actions.js
index fbfeff869f..9ca8664bf4 100644
--- a/src/sunstone/public/app/tabs/users-tab/actions.js
+++ b/src/sunstone/public/app/tabs/users-tab/actions.js
@@ -15,20 +15,20 @@
/* -------------------------------------------------------------------------- */
define(function(require) {
- var Sunstone = require('sunstone');
- var Notifier = require('utils/notifier');
- var Locale = require('utils/locale');
- var DataTable = require('./datatable');
- var OpenNebulaResource = require('opennebula/user');
- var CommonActions = require('utils/common-actions');
- var TemplateUtils = require('utils/template-utils');
+ var Sunstone = require("sunstone");
+ var Notifier = require("utils/notifier");
+ var Locale = require("utils/locale");
+ var DataTable = require("./datatable");
+ var OpenNebulaResource = require("opennebula/user");
+ var CommonActions = require("utils/common-actions");
+ var TemplateUtils = require("utils/template-utils");
- var TAB_ID = require('./tabId');
- var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
- var PASSWORD_DIALOG_ID = require('./dialogs/password/dialogId');
- var AUTH_DRIVER_DIALOG_ID = require('./dialogs/auth-driver/dialogId');
- var QUOTAS_DIALOG_ID = require('./dialogs/quotas/dialogId');
- var GROUPS_DIALOG_ID = require('./dialogs/groups/dialogId');
+ var TAB_ID = require("./tabId");
+ var CREATE_DIALOG_ID = require("./form-panels/create/formPanelId");
+ var PASSWORD_DIALOG_ID = require("./dialogs/password/dialogId");
+ var AUTH_DRIVER_DIALOG_ID = require("./dialogs/auth-driver/dialogId");
+ var QUOTAS_DIALOG_ID = require("./dialogs/quotas/dialogId");
+ var GROUPS_DIALOG_ID = require("./dialogs/groups/dialogId");
var RESOURCE = "User";
var XML_ROOT = "USER";
@@ -43,9 +43,9 @@ define(function(require) {
"User.show" : _commonActions.show(),
"User.refresh" : _commonActions.refresh(),
"User.delete" : _commonActions.del(),
- "User.chgrp": _commonActions.multipleAction('chgrp'),
- "User.addgroup": _commonActions.multipleAction('addgroup'),
- "User.delgroup": _commonActions.multipleAction('delgroup'),
+ "User.chgrp": _commonActions.multipleAction("chgrp"),
+ "User.addgroup": _commonActions.multipleAction("addgroup"),
+ "User.delgroup": _commonActions.multipleAction("delgroup"),
"User.groups_dialog" : _commonActions.checkAndShow("groups"),
"User.groups" : {
@@ -95,13 +95,13 @@ define(function(require) {
callback: function(request) {
var reqId = request.request.data[0];
- Sunstone.runAction(RESOURCE+'.show',reqId);
+ Sunstone.runAction(RESOURCE+".show",reqId);
- if (reqId == config['user_id'] || reqId == "-1") {
- Sunstone.runAction('Settings.refresh');
+ if (reqId == config["user_id"] || reqId == "-1") {
+ Sunstone.runAction("Settings.refresh");
$.ajax({
- url: 'config',
+ url: "config",
type: "POST",
dataType: "json",
success: function() {
@@ -121,13 +121,13 @@ define(function(require) {
callback: function(request) {
var reqId = request.request.data[0];
- Sunstone.runAction(RESOURCE+'.show',reqId);
+ Sunstone.runAction(RESOURCE+".show",reqId);
- if (reqId == config['user_id'] || reqId == "-1") {
- Sunstone.runAction('Settings.refresh');
+ if (reqId == config["user_id"] || reqId == "-1") {
+ Sunstone.runAction("Settings.refresh");
$.ajax({
- url: 'config',
+ url: "config",
type: "POST",
dataType: "json",
success: function() {
@@ -147,9 +147,10 @@ define(function(require) {
callback: function(request) {
var reqId = request.request.data[0];
- if (reqId == config['user_id'] || reqId == "-1") {
+ if (reqId == config["user_id"] || reqId == "-1") {
+
$.ajax({
- url: 'config',
+ url: "config",
type: "POST",
dataType: "json",
success: function() {
@@ -159,7 +160,7 @@ define(function(require) {
}
});
} else {
- Sunstone.runAction(RESOURCE+'.show',reqId);
+ Sunstone.runAction(RESOURCE+".show",reqId);
}
},
error: Notifier.onError
@@ -178,8 +179,8 @@ define(function(require) {
$.extend(sunstone_template, response[XML_ROOT].TEMPLATE.SUNSTONE);
}
- $.extend(sunstone_template, params.data.extra_param)
- var template_str = TemplateUtils.templateToString({'SUNSTONE': sunstone_template});
+ $.extend(sunstone_template, params.data.extra_param);
+ var template_str = TemplateUtils.templateToString({"SUNSTONE": sunstone_template});
Sunstone.runAction("User.append_template_refresh", params.data.id, template_str);
},
error: Notifier.onError
@@ -200,8 +201,8 @@ define(function(require) {
$.extend(sunstone_template, response[XML_ROOT].TEMPLATE.SUNSTONE);
}
- $.extend(sunstone_template, params.data.extra_param)
- var template_str = TemplateUtils.templateToString({'SUNSTONE': sunstone_template});
+ $.extend(sunstone_template, params.data.extra_param);
+ var template_str = TemplateUtils.templateToString({"SUNSTONE": sunstone_template});
Sunstone.runAction("User.append_template", params.data.id, template_str);
},
error: Notifier.onError
@@ -223,15 +224,15 @@ define(function(require) {
"User.quotas_dialog" : {
type: "custom",
call: function() {
- var tab = $('#' + TAB_ID);
+ var tab = $("#" + TAB_ID);
if (Sunstone.rightInfoVisible(tab)) {
- $('a[href="#user_quotas_tab"]', tab).click();
- $('#edit_quotas_button', tab).click();
+ $("a[href=\"#user_quotas_tab\"]", tab).click();
+ $("#edit_quotas_button", tab).click();
} else {
var sel_elems = Sunstone.getDataTable(TAB_ID).elements();
//If only one user is selected we fecth the user's quotas
if (sel_elems.length == 1){
- Sunstone.runAction(RESOURCE+'.fetch_quotas',sel_elems[0]);
+ Sunstone.runAction(RESOURCE+".fetch_quotas",sel_elems[0]);
} else {
// More than one, shows '0' usage
Sunstone.getDialog(QUOTAS_DIALOG_ID).setParams({element: {}});
@@ -251,7 +252,7 @@ define(function(require) {
callback: function(request) {
Sunstone.getDialog(QUOTAS_DIALOG_ID).hide();
- Sunstone.runAction(RESOURCE+'.show',request.request.data[0]);
+ Sunstone.runAction(RESOURCE+".show",request.request.data[0]);
},
error: Notifier.onError
}
diff --git a/src/sunstone/public/app/tabs/users-tab/dialogs/login-token.js b/src/sunstone/public/app/tabs/users-tab/dialogs/login-token.js
index f73eaf042a..76a16d3254 100644
--- a/src/sunstone/public/app/tabs/users-tab/dialogs/login-token.js
+++ b/src/sunstone/public/app/tabs/users-tab/dialogs/login-token.js
@@ -19,20 +19,20 @@ define(function(require) {
DEPENDENCIES
*/
- var BaseDialog = require('utils/dialogs/dialog');
- var TemplateHTML = require('hbs!./login-token/html');
- var Sunstone = require('sunstone');
- var Notifier = require('utils/notifier');
- var Locale = require('utils/locale');
- var OpenNebula = require('opennebula');
- var ResourceSelect = require('utils/resource-select');
+ var BaseDialog = require("utils/dialogs/dialog");
+ var TemplateHTML = require("hbs!./login-token/html");
+ var Sunstone = require("sunstone");
+ var Notifier = require("utils/notifier");
+ var Locale = require("utils/locale");
+ var OpenNebula = require("opennebula");
+ var ResourceSelect = require("utils/resource-select");
/*
CONSTANTS
*/
- var DIALOG_ID = require('./login-token/dialogId');
- var USERS_TAB_ID = require('../tabId');
+ var DIALOG_ID = require("./login-token/dialogId");
+ var USERS_TAB_ID = require("../tabId");
/*
CONSTRUCTOR
@@ -87,8 +87,8 @@ define(function(require) {
});
return TemplateHTML({
- 'dialogId': this.dialogId,
- 'tokens': tokens
+ "dialogId": this.dialogId,
+ "tokens": tokens
});
}
@@ -96,25 +96,25 @@ define(function(require) {
var that = this;
ResourceSelect.insert({
- context: $('.token-group-selector', context),
- resourceName: 'Group',
- initValue: '-1',
- extraOptions: ''
+ context: $(".token-group-selector", context),
+ resourceName: "Group",
+ initValue: "-1",
+ extraOptions: ""
});
context.on("click", "i.remove-tab", function(){
- var tr = $(this).closest('tr');
+ var tr = $(this).closest("tr");
- $(this).closest('td').html('')
+ $(this).closest("td").html("");
var token = $(".token-text", tr).text();
OpenNebula.User.login({
data : {
id: "-1",
- 'username': that.element.NAME,
- 'token': token,
- 'expire': 0
+ "username": that.element.NAME,
+ "token": token,
+ "expire": 0
},
success: function(req, response){
OpenNebula.User.show({
@@ -136,7 +136,7 @@ define(function(require) {
});
$("#token_btn", context).click(function(){
- $("#token_btn", context).html('')
+ $("#token_btn", context).html("");
var expire = $(".token-expiration", context).val();
var egid = $(".token-group-selector .resource_list_select").val();
@@ -144,9 +144,9 @@ define(function(require) {
OpenNebula.User.login({
data : {
id: "-1",
- 'username': that.element.NAME,
- 'expire': expire,
- 'egid': egid
+ "username": that.element.NAME,
+ "expire": expire,
+ "egid": egid
},
success: function(req, response){
OpenNebula.User.show({
@@ -172,7 +172,6 @@ define(function(require) {
function _loginSuccess(req, response){
var that = this;
-
OpenNebula.User.show({
data : {
id: that.element.ID
@@ -184,9 +183,9 @@ define(function(require) {
Sunstone.getDialog(DIALOG_ID).show();
if (Sunstone.getTab() == USERS_TAB_ID){
- Sunstone.runAction('User.refresh');
+ Sunstone.runAction("User.refresh");
} else {
- Sunstone.runAction('Settings.refresh');
+ Sunstone.runAction("Settings.refresh");
}
},
error: function(request, error_json){
diff --git a/src/sunstone/public/scss/_menu.scss b/src/sunstone/public/scss/_menu.scss
index 42ec934929..16aa0d5889 100644
--- a/src/sunstone/public/scss/_menu.scss
+++ b/src/sunstone/public/scss/_menu.scss
@@ -11,15 +11,15 @@
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
+ padding: 0;
+ margin: 1.4rem 0.5rem;
&.topTab {
-
-
& > a {
color: $light-black;
}
}
- &.subTab > a {
+ &.subTab > * {
padding: 0.5rem 1rem;
color: $dark-gray;
}
@@ -31,11 +31,16 @@
a {
font-weight: bold;
+ padding: 0px;
}
a:hover {
color: $black;
}
+
+ li {
+ margin: .5rem 0;
+ }
}
.nested {
@@ -47,33 +52,56 @@
}
#li_support-tab {
+ margin-top: 1rem;
a {
- margin-top: 1rem;
border: 1px solid #dfdfdf;
padding: 1rem;
background: $bg-li-support-tab;
+ cursor: default;
.support_connect {
+ .officialy_support{
+ padding: 0px;
+ color: #4DBBD3;
+ }
span {
- display: inline-box;
+ display: block;
color: $dark-gray;
padding: 0.5rem 0 0 0;
}
-
.button {
margin-top: 1rem;
}
}
+ .support_not_connected {
+ text-align: center;
+
+ button.alert {
+ margin: 0.5rem auto;
+ }
+ }
+
.support_info {
.support_open,
.support_pending,
.support_open_value,
.support_pending_value {
- display: inline-block;
+ display: block;
color: $dark-gray;
padding: 0.5rem 0 0 0;
}
+ .table{
+ display: table;
+ width: 100%;
+ *{
+ display: table-cell !important;
+ }
+ }
+ .officialy_support{
+ padding: 0px;
+ color: #4DBBD3;
+ }
.button {
margin-top: 1rem;
diff --git a/src/sunstone/routes/support.rb b/src/sunstone/routes/support.rb
index 7a84b847e2..05160bed96 100644
--- a/src/sunstone/routes/support.rb
+++ b/src/sunstone/routes/support.rb
@@ -13,6 +13,8 @@
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
+require 'curb'
+require 'base64'
UNSUPPORTED_RUBY = (RUBY_VERSION =~ /^1.8/) != nil
@@ -186,6 +188,44 @@ post '/support/request' do
end
end
+get '/support/check' do
+ if(!OpenNebula::VERSION.empty? &&
+ !$conf[:check_remote_support].nil? &&
+ !$conf[:check_remote_support].empty? &&
+ !$conf[:token_remote_support].nil? &&
+ !$conf[:token_remote_support].empty?)
+ !$conf[:opennebula_support] = !$conf[:opennebula_support].nil? ? $conf[:opennebula_support] : 0
+ now = Time.now.to_i
+ validateTime = now - $conf[:opennebula_support]
+ if(validateTime > 86400)
+ version = OpenNebula::VERSION.slice(0..OpenNebula::VERSION.rindex('.')-1)
+ minorVersion = version.slice(version.rindex('.')+1..-1).to_i
+ majorVersion = version.slice(0..version.rindex('.')-1)
+ minorVersion = minorVersion%2 === 0 ? minorVersion : minorVersion-1
+ url = $conf[:check_remote_support].sub '', majorVersion.to_s+"."+minorVersion.to_s
+ begin
+ http = Curl.get(url) do |http|
+ http.headers['Authorization'] = 'Basic ' + Base64.strict_encode64($conf[:token_remote_support])
+ end
+ rescue Exception => e
+ raise e
+ end
+ if !http.nil? && http.response_code < 400
+ $conf[:opennebula_support] = now
+ [200, JSON.pretty_generate({:pass => true})]
+ else
+ session["opennebula_support"] = 0
+ [400, JSON.pretty_generate({:pass => false})]
+ end
+ else
+ [200, JSON.pretty_generate({:pass => true})]
+ end
+ else
+ session["opennebula_support"] = 0
+ [400, JSON.pretty_generate({:pass => false})]
+ end
+end
+
post '/support/request/:id/action' do
check_zendesk_api_gem
diff --git a/src/sunstone/views/index.erb b/src/sunstone/views/index.erb
index a506fcef78..a9ba4eb164 100644
--- a/src/sunstone/views/index.erb
+++ b/src/sunstone/views/index.erb
@@ -36,7 +36,7 @@
'lang' : '<%= session[:lang] %>',
'vnc_wss' : '<%= session[:vnc_wss] %>',
'table_order' : '<%= session[:table_order] %>',
- 'default_view' : '<%= session[:defaqult_view] %>',
+ 'default_view' : '<%= session[:default_view] %>',
'page_length' : '<%= session[:page_length] %>'
},
'system_config' : {