mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
F #3167 add Sunstone Banner
Signed-off-by: Jorge Lobo <jlobo@opennebula.systems>
This commit is contained in:
parent
fc6e80a3cc
commit
78604cc8a8
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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",
|
||||
|
@ -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;
|
||||
})
|
||||
});
|
||||
|
@ -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;
|
||||
});
|
||||
|
@ -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 = "<li id=\"li_" + tabName + "\" class=\"" + tabClass + "\">" +
|
||||
"<a href=\"#\">" + title + "</a>" +
|
||||
"</li>";
|
||||
|
||||
liItem = "<li id=\"li_" + tabName + "\" class=\"" + tabClass + "\">" + "<a href=\"#\">" + title + "</a>" + "</li>";
|
||||
if ($("#menu ul#navigation #li_" + parent + " .menu").length > 0) {
|
||||
$("#menu ul#navigation #li_" + parent + " .menu").append(liItem);
|
||||
} else {
|
||||
$("#menu ul#navigation #li_" + parent).append(
|
||||
"<ul class=\"menu vertical nested\" data-submenu>" +
|
||||
liItem +
|
||||
"</ul>");
|
||||
$("#menu ul#navigation #li_" + parent).append("<ul class=\"menu vertical nested\" data-submenu>" + liItem + "</ul>");
|
||||
}
|
||||
} else {
|
||||
liItem = "<li id=\"li_" + tabName + "\" class=\"" + tabClass + "\">" +
|
||||
"<a href=\"#\">" + title + "</a>" +
|
||||
"</li>";
|
||||
|
||||
liItem = "<li id=\"li_" + tabName + "\" class=\"" + tabClass + "\">" + "<a href=\"#\">" + title + "</a>" + "</li>";
|
||||
$("div#menu ul#navigation").append(liItem);
|
||||
}
|
||||
|
||||
@ -1281,6 +1285,7 @@ define(function(require) {
|
||||
|
||||
var Sunstone = {
|
||||
"addMainTabs": _addMainTabs,
|
||||
"addMainTab": _addMainTab,
|
||||
"addDialogs": _addDialogs,
|
||||
|
||||
"insertTabs": _insertTabs,
|
||||
|
@ -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);
|
||||
|
@ -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: '<span class="fa-stack fa-2x" style="color: #dfdfdf">' +
|
||||
'<i class="fas fa-cloud fa-stack-2x"></i>' +
|
||||
'<i class="fa fa-spinner fa-spin fa-stack-1x fa-inverse"></i>' +
|
||||
'</span>',
|
||||
content: "<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">" +
|
||||
"<i class=\"fas fa-cloud fa-stack-2x\"></i>" +
|
||||
"<i class=\"fa fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>" +
|
||||
"</span>",
|
||||
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)));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -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('<option value="' + view + '">' + view + '</option>')
|
||||
$.each(config["available_views"], function(id, view) {
|
||||
$("select#provision_user_views_select", context).append("<option value=\"" + view + "\">" + view + "</option>");
|
||||
});
|
||||
|
||||
$('#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;
|
||||
|
@ -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('<i class="fas fa-spinner fa-spin"></i>');
|
||||
$(".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("<i class=\"fas fa-spinner fa-spin\"></i>");
|
||||
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();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -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(){
|
||||
|
@ -14,17 +14,45 @@
|
||||
{{! limitations under the License. }}
|
||||
{{! -------------------------------------------------------------------------- }}
|
||||
|
||||
<span class="support_title">Support</span>
|
||||
<br>
|
||||
<div class="support_info" style="display: none;">
|
||||
<span class="support_open">Open</span><span class="secondary right support_open_value">-</span>
|
||||
<br>
|
||||
<span class="support_pending">Pending</span><span class="secondary right support_pending_value">-</span>
|
||||
<br>
|
||||
<button class="button small success radius support_button">Submit a Request</button>
|
||||
<span class="officialy_support">
|
||||
{{tr "Officially supported"}}
|
||||
</span>
|
||||
<div class="table only_admin_view">
|
||||
<span class="support_open">
|
||||
{{tr "Open"}}
|
||||
</span>
|
||||
<span class="secondary right support_open_value">
|
||||
-
|
||||
</span>
|
||||
</div>
|
||||
<div class="table only_admin_view">
|
||||
<span class="support_pending">
|
||||
{{tr "Pending"}}
|
||||
</span>
|
||||
<span class="secondary right support_pending_value">
|
||||
-
|
||||
</span>
|
||||
</div>
|
||||
<button class="button small success radius support_button only_admin_view">
|
||||
{{tr "Submit a Request"}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="support_not_connected">
|
||||
<button class="button small alert radius">
|
||||
{{tr "Not officially supported"}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="support_connect" style="display: none;">
|
||||
<span class="">Not connected</span>
|
||||
<br>
|
||||
<button class="button small success radius support_connect_button">Sign in</button>
|
||||
<span class="officialy_support">
|
||||
{{tr "Officially supported"}}
|
||||
</span>
|
||||
<span class="only_admin_view">
|
||||
{{tr "Not connected"}}
|
||||
</span>
|
||||
<button class="only_admin_view button small success radius support_connect_button">
|
||||
{{tr "Sign in"}}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -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
|
||||
};
|
||||
});
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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: '<option value="-1">' + Locale.tr("None") + '</option>'
|
||||
context: $(".token-group-selector", context),
|
||||
resourceName: "Group",
|
||||
initValue: "-1",
|
||||
extraOptions: "<option value=\"-1\">" + Locale.tr("None") + "</option>"
|
||||
});
|
||||
|
||||
context.on("click", "i.remove-tab", function(){
|
||||
var tr = $(this).closest('tr');
|
||||
var tr = $(this).closest("tr");
|
||||
|
||||
$(this).closest('td').html('<i class="fas fa-spinner fa-spin"/>')
|
||||
$(this).closest("td").html("<i class=\"fas fa-spinner fa-spin\"/>");
|
||||
|
||||
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('<i class="fas fa-spinner fa-spin"/>')
|
||||
$("#token_btn", context).html("<i class=\"fas fa-spinner fa-spin\"/>");
|
||||
|
||||
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){
|
||||
|
@ -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;
|
||||
|
@ -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 '<VERSION>', 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
|
||||
|
||||
|
@ -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' : {
|
||||
|
Loading…
x
Reference in New Issue
Block a user