1
0
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:
Jorge Lobo 2019-03-29 12:42:07 +01:00 committed by Tino Vázquez
parent fc6e80a3cc
commit 78604cc8a8
18 changed files with 565 additions and 413 deletions

View File

@ -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,

View File

@ -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;

View File

@ -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",

View File

@ -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;
})
});

View File

@ -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;
});

View File

@ -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,

View File

@ -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);

View File

@ -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)));
}
});
}

View File

@ -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;

View File

@ -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();
});
}
}
});

View File

@ -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(){

View File

@ -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>

View File

@ -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
};
});

View File

@ -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
}

View File

@ -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){

View File

@ -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;

View File

@ -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

View File

@ -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' : {