mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-20 10:50:08 +03:00
parent
bcd74c856b
commit
f399df791c
@ -1,6 +1,7 @@
|
||||
define(function(require) {
|
||||
require('jquery');
|
||||
|
||||
var DASHBOARD_TAB_ID = require('tabs/dashboard-tab/tabId');
|
||||
var Sunstone = require('sunstone');
|
||||
|
||||
var _tabs = [
|
||||
@ -25,7 +26,8 @@ define(function(require) {
|
||||
require('tabs/marketplace-tab'),
|
||||
require('tabs/oneflow-dashboard'),
|
||||
require('tabs/oneflow-services-tab'),
|
||||
require('tabs/oneflow-templates-tab')
|
||||
require('tabs/oneflow-templates-tab'),
|
||||
require('tabs/settings-tab')
|
||||
];
|
||||
|
||||
var _commonDialogs = [
|
||||
@ -43,6 +45,8 @@ define(function(require) {
|
||||
Sunstone.insertTabs();
|
||||
|
||||
_setupAccordion();
|
||||
|
||||
Sunstone.showTab(DASHBOARD_TAB_ID);
|
||||
});
|
||||
|
||||
function _setupAccordion() {
|
||||
|
@ -524,26 +524,21 @@ define(function(require) {
|
||||
$('.top_button, .list_button', context).attr('disabled', false);
|
||||
}
|
||||
|
||||
var _insertPanels = function(tabName, info) {
|
||||
var context = $(".right-info", $("#" + tabName));
|
||||
var _insertPanels = function(tabName, info, contextTabId, context) {
|
||||
var context = context || $(".right-info", $("#" + tabName));
|
||||
var containerId = tabName + '-panels';
|
||||
var activaTab = $("dd.active a", $("#" + containerId));
|
||||
if (activaTab) {
|
||||
var activaTabHref = activaTab.attr('href');
|
||||
}
|
||||
|
||||
var templateAttrs = {
|
||||
'containerId': containerId,
|
||||
'panels': []
|
||||
}
|
||||
|
||||
var panels = SunstoneCfg['tabs'][tabName].panels;
|
||||
var active = false;
|
||||
var templatePanelsParams = []
|
||||
var panelInstances = []
|
||||
|
||||
$.each(panels, function(panelName, Panel) {
|
||||
if (Config.isTabPanelEnabled(tabName, panelName)) {
|
||||
if (Config.isTabPanelEnabled((contextTabId||tabName), panelName)) {
|
||||
if (activaTabHref) {
|
||||
if (activaTabHref == "#" + panelName) {
|
||||
active = true;
|
||||
@ -554,7 +549,7 @@ define(function(require) {
|
||||
}
|
||||
|
||||
try {
|
||||
var panelInstance = new Panel(info);
|
||||
var panelInstance = new Panel(info, contextTabId);
|
||||
panelInstances.push(panelInstance);
|
||||
templatePanelsParams.push({
|
||||
'panelName': panelName,
|
||||
|
63
src/sunstone/public/app/tabs/settings-tab.js
Normal file
63
src/sunstone/public/app/tabs/settings-tab.js
Normal file
@ -0,0 +1,63 @@
|
||||
define(function(require) {
|
||||
var Locale = require('utils/locale');
|
||||
var OpenNebulaUser = require('opennebula/user')
|
||||
var Sunstone = require('sunstone');
|
||||
|
||||
var TAB_ID = require('./settings-tab/tabId');
|
||||
var USERS_TAB_ID = require('tabs/users-tab/tabId');
|
||||
|
||||
var _buttons = {
|
||||
"Settings.refresh" : {
|
||||
type: "action",
|
||||
layout: "refresh",
|
||||
alwaysActive: true
|
||||
}
|
||||
};
|
||||
|
||||
var _actions = {
|
||||
"Settings.refresh" : {
|
||||
type: "custom",
|
||||
call: _onShow
|
||||
},
|
||||
}
|
||||
|
||||
var _dialogs = [
|
||||
];
|
||||
|
||||
var _userPanels = [
|
||||
require('tabs/users-tab/panels/info'),
|
||||
require('tabs/users-tab/panels/quotas'),
|
||||
require('tabs/users-tab/panels/accounting'),
|
||||
require('tabs/users-tab/panels/showback')
|
||||
];
|
||||
|
||||
var _formPanels = [
|
||||
require('./acls-tab/form-panels/create')
|
||||
];
|
||||
|
||||
var Tab = {
|
||||
tabId: TAB_ID,
|
||||
title: '<i class="fa fa-lg fa-fw fa-cog"></i> ' + Locale.tr("Settings"),
|
||||
listHeader: '<i class="fa fa-cog"></i> ' + Locale.tr("Settings"),
|
||||
resource: 'Settings',
|
||||
actions: _actions,
|
||||
content: '<span class="fa-stack fa-2x" style="color: #dfdfdf">' +
|
||||
'<i class="fa fa-cloud fa-stack-2x"></i>' +
|
||||
'<i class="fa fa-spinner fa-spin fa-stack-1x fa-inverse"></i>' +
|
||||
'</span>',
|
||||
dialogs: _dialogs
|
||||
};
|
||||
|
||||
return Tab;
|
||||
|
||||
function _onShow() {
|
||||
OpenNebulaUser.show({
|
||||
data : {
|
||||
id: -1
|
||||
},
|
||||
success: function(request, user_json) {
|
||||
Sunstone.insertPanels(USERS_TAB_ID, user_json, TAB_ID, $(".right-list", $("#" + TAB_ID)))
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
3
src/sunstone/public/app/tabs/settings-tab/tabId.js
Normal file
3
src/sunstone/public/app/tabs/settings-tab/tabId.js
Normal file
@ -0,0 +1,3 @@
|
||||
define(function(require){
|
||||
return 'settings-tab';
|
||||
});
|
@ -150,6 +150,35 @@ define(function(require) {
|
||||
call: OpenNebulaResource.update,
|
||||
callback: function(request) {
|
||||
Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);
|
||||
if (request.request.data[0][0] == config['user_id']) {
|
||||
Sunstone.runAction('Settings.refresh');
|
||||
}
|
||||
},
|
||||
error: Notifier.onError
|
||||
},
|
||||
|
||||
"User.update_language" : {
|
||||
type: "single",
|
||||
call: OpenNebulaResource.update,
|
||||
callback: function(request) {
|
||||
Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);
|
||||
if (request.request.data[0][0] == config['user_id']) {
|
||||
Sunstone.runAction('Settings.refresh');
|
||||
}
|
||||
Notifier.notifyMessage(Locale.tr("The user must refresh the page for the change to take effect"));
|
||||
},
|
||||
error: Notifier.onError
|
||||
},
|
||||
|
||||
"User.update_view" : {
|
||||
type: "single",
|
||||
call: OpenNebulaResource.update,
|
||||
callback: function(request) {
|
||||
Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);
|
||||
if (request.request.data[0][0] == config['user_id']) {
|
||||
Sunstone.runAction('Settings.refresh');
|
||||
}
|
||||
Notifier.notifyMessage(Locale.tr("The user must refresh the page for the change to take effect"));
|
||||
},
|
||||
error: Notifier.onError
|
||||
},
|
||||
|
@ -56,7 +56,7 @@ define(function(require) {
|
||||
|
||||
var secondaryGroups;
|
||||
|
||||
if(typeof this.element.GROUPS.ID == "object"){
|
||||
if (typeof this.element.GROUPS.ID == "object") {
|
||||
secondaryGroups = this.element.GROUPS.ID.join(",");
|
||||
} else {
|
||||
secondaryGroups = "-";
|
||||
@ -65,6 +65,9 @@ define(function(require) {
|
||||
// TODO: simplify interface?
|
||||
var strippedTemplate = $.extend({}, this.element.TEMPLATE);
|
||||
delete strippedTemplate["SSH_PUBLIC_KEY"];
|
||||
delete strippedTemplate["LANG"];
|
||||
delete strippedTemplate["TABLE_ORDER"];
|
||||
delete strippedTemplate["DEFAULT_VIEW"];
|
||||
|
||||
var templateTableHTML = TemplateTable.html(strippedTemplate, RESOURCE,
|
||||
Locale.tr("Attributes"));
|
||||
@ -85,11 +88,23 @@ define(function(require) {
|
||||
// TODO: simplify interface?
|
||||
var strippedTemplate = $.extend({}, this.element.TEMPLATE);
|
||||
delete strippedTemplate["SSH_PUBLIC_KEY"];
|
||||
delete strippedTemplate["LANG"];
|
||||
delete strippedTemplate["TABLE_ORDER"];
|
||||
delete strippedTemplate["DEFAULT_VIEW"];
|
||||
|
||||
var hiddenValues = {};
|
||||
|
||||
if (this.element.TEMPLATE.SSH_PUBLIC_KEY != undefined){
|
||||
hiddenValues.SSH_PUBLIC_KEY = this.element.TEMPLATE.SSH_PUBLIC_KEY;
|
||||
if (this.element.TEMPLATE.SSH_PUBLIC_KEY != undefined) {
|
||||
hiddenValues.SSH_PUBLIC_KEY = this.element.TEMPLATE.SSH_PUBLIC_KEY;
|
||||
}
|
||||
if (this.element.TEMPLATE.LANG != undefined) {
|
||||
hiddenValues.LANG = this.element.TEMPLATE.LANG;
|
||||
}
|
||||
if (this.element.TEMPLATE.TABLE_ORDER != undefined) {
|
||||
hiddenValues.TABLE_ORDER = this.element.TEMPLATE.TABLE_ORDER;
|
||||
}
|
||||
if (this.element.TEMPLATE.DEFAULT_VIEW != undefined) {
|
||||
hiddenValues.DEFAULT_VIEW = this.element.TEMPLATE.DEFAULT_VIEW;
|
||||
}
|
||||
|
||||
TemplateTable.setup(strippedTemplate, RESOURCE, this.element.ID, context, hiddenValues);
|
||||
@ -112,13 +127,13 @@ define(function(require) {
|
||||
// SSH input
|
||||
|
||||
context.off("click", ".user_ssh_public_key_edit");
|
||||
context.on("click", ".user_ssh_public_key_edit", function(){
|
||||
context.on("click", ".user_ssh_public_key_edit", function() {
|
||||
$("#user_ssh_public_key_text", context).hide();
|
||||
$("#user_ssh_public_key_textarea", context).show().focus();
|
||||
});
|
||||
|
||||
context.off("change", "#user_ssh_public_key_textarea");
|
||||
context.on("change", "#user_ssh_public_key_textarea", function(){
|
||||
context.on("change", "#user_ssh_public_key_textarea", function() {
|
||||
var user_id = that.element.ID;
|
||||
|
||||
// TODO: use update --append instead of a show + update
|
||||
@ -127,13 +142,13 @@ define(function(require) {
|
||||
data : {
|
||||
id: user_id
|
||||
},
|
||||
success: function(request,user_json){
|
||||
success: function(request, user_json) {
|
||||
var template = that.element.TEMPLATE;
|
||||
|
||||
template["SSH_PUBLIC_KEY"] = $("#user_ssh_public_key_textarea", context).val();
|
||||
|
||||
template_str = "";
|
||||
$.each(template,function(key,value){
|
||||
$.each(template, function(key, value) {
|
||||
template_str += (key + '=' + '"' + value + '"\n');
|
||||
});
|
||||
|
||||
@ -143,11 +158,120 @@ define(function(require) {
|
||||
});
|
||||
|
||||
context.off("focusout", "#user_ssh_public_key_textarea");
|
||||
context.on("focusout", "#user_ssh_public_key_textarea", function(){
|
||||
context.on("focusout", "#user_ssh_public_key_textarea", function() {
|
||||
$("#user_ssh_public_key_text", context).show();
|
||||
$("#user_ssh_public_key_textarea", context).hide();
|
||||
});
|
||||
|
||||
// Change table Order
|
||||
context.off("click", "#div_edit_table_order")
|
||||
context.on("click", "#div_edit_table_order", function() {
|
||||
$(".value_td_table_order", context).html('<select id="table_order_select">' +
|
||||
'<option value="asc">' + Locale.tr("ascending") + '</option>' +
|
||||
'<option value="desc">' + Locale.tr("descending") + '</option>' +
|
||||
'</select>');
|
||||
|
||||
if (that.element.TEMPLATE.TABLE_ORDER) {
|
||||
$('#table_order_select', context).val(that.element.TEMPLATE.TABLE_ORDER);
|
||||
}
|
||||
});
|
||||
|
||||
context.off("change", "#table_order_select")
|
||||
context.on("change", "#table_order_select", function() {
|
||||
var user_id = that.element.ID;
|
||||
OpenNebulaUser.show({
|
||||
data : {
|
||||
id: user_id
|
||||
},
|
||||
success: function(request, user_json) {
|
||||
var template = that.element.TEMPLATE;
|
||||
|
||||
template["TABLE_ORDER"] = $("#table_order_select", context).val();
|
||||
|
||||
template_str = "";
|
||||
$.each(template, function(key, value) {
|
||||
template_str += (key + '=' + '"' + value + '"\n');
|
||||
});
|
||||
|
||||
Sunstone.runAction("User.update_template", user_id, template_str);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Change language
|
||||
context.off("click", "#div_edit_language")
|
||||
context.on("click", "#div_edit_language", function() {
|
||||
$(".value_td_language", context).html('<select id="language_select">' +
|
||||
Locale.language_options +
|
||||
'</select>');
|
||||
|
||||
if (that.element.TEMPLATE.LANG) {
|
||||
$('#language_select', context).val(that.element.TEMPLATE.LANG);
|
||||
}
|
||||
});
|
||||
|
||||
context.off("change", "#language_select")
|
||||
context.on("change", "#language_select", function() {
|
||||
var user_id = that.element.ID;
|
||||
OpenNebulaUser.show({
|
||||
data : {
|
||||
id: user_id
|
||||
},
|
||||
success: function(request, user_json) {
|
||||
var template = that.element.TEMPLATE;
|
||||
|
||||
template["LANG"] = $("#language_select", context).val();
|
||||
|
||||
template_str = "";
|
||||
$.each(template, function(key, value) {
|
||||
template_str += (key + '=' + '"' + value + '"\n');
|
||||
});
|
||||
|
||||
Sunstone.runAction("User.update_language", user_id, template_str);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Change view
|
||||
context.off("click", "#div_edit_view")
|
||||
context.on("click", "#div_edit_view", function() {
|
||||
var options = '';
|
||||
$.each( config['available_views'], function(id, view) {
|
||||
options += '<option value="'+view+'">'+view+'</option>';
|
||||
});
|
||||
|
||||
$(".value_td_view", context).html('<select id="view_select">' +
|
||||
options +
|
||||
'</select>');
|
||||
|
||||
if (that.element.TEMPLATE.DEFAULT_VIEW) {
|
||||
$('#view_select', context).val(that.element.TEMPLATE.DEFAULT_VIEW);
|
||||
}
|
||||
});
|
||||
|
||||
context.off("change", "#view_select")
|
||||
context.on("change", "#view_select", function() {
|
||||
var user_id = that.element.ID;
|
||||
OpenNebulaUser.show({
|
||||
data : {
|
||||
id: user_id
|
||||
},
|
||||
success: function(request, user_json) {
|
||||
var template = that.element.TEMPLATE;
|
||||
|
||||
template["DEFAULT_VIEW"] = $("#view_select", context).val();
|
||||
|
||||
template_str = "";
|
||||
$.each(template, function(key, value) {
|
||||
template_str += (key + '=' + '"' + value + '"\n');
|
||||
});
|
||||
|
||||
Sunstone.runAction("User.update_view", user_id, template_str);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
@ -28,6 +28,33 @@
|
||||
<td class="value_td">{{element.AUTH_DRIVER}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key_td">{{tr "Table Order"}}</td>
|
||||
<td class="value_td_table_order">{{valOrDefault element.TEMPLATE.TABLE_ORDER "-"}}</td>
|
||||
<td>
|
||||
<div id="div_edit_table_order">
|
||||
<a id="div_edit_table_order_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key_td">{{tr "Language"}}</td>
|
||||
<td class="value_td_language">{{valOrDefault element.TEMPLATE.LANG "-"}}</td>
|
||||
<td>
|
||||
<div id="div_edit_language">
|
||||
<a id="div_edit_language_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key_td">{{tr "View"}}</td>
|
||||
<td class="value_td_view">{{valOrDefault element.TEMPLATE.DEFAULT_VIEW "-"}}</td>
|
||||
<td>
|
||||
<div id="div_edit_view">
|
||||
<a id="div_edit_view_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
@ -21,7 +21,8 @@ define(function(require) {
|
||||
CONSTRUCTOR
|
||||
*/
|
||||
|
||||
function Panel(info) {
|
||||
function Panel(info, tabId) {
|
||||
this.tabId = tabId || TAB_ID;
|
||||
this.title = Locale.tr("Quotas");
|
||||
this.icon = "fa-align-left";
|
||||
|
||||
@ -44,14 +45,14 @@ define(function(require) {
|
||||
return QuotaWidgets.initQuotasPanel(
|
||||
this.element,
|
||||
QuotaDefaults.getDefaultQuotas(RESOURCE),
|
||||
Config.isTabActionEnabled(TAB_ID, RESOURCE+".quotas_dialog"));
|
||||
Config.isTabActionEnabled(this.tabId, RESOURCE+".quotas_dialog"));
|
||||
}
|
||||
|
||||
function _setup(context) {
|
||||
QuotaWidgets.setupQuotasPanel(
|
||||
this.element,
|
||||
context,
|
||||
Config.isTabActionEnabled(TAB_ID, RESOURCE+".quotas_dialog"),
|
||||
Config.isTabActionEnabled(this.tabId, RESOURCE+".quotas_dialog"),
|
||||
RESOURCE);
|
||||
|
||||
return false;
|
||||
|
@ -1,8 +1,30 @@
|
||||
define(function(require) {
|
||||
var LANGUAGE_OPTIONS =
|
||||
'<option value="en_US">English (en_US)</option>\
|
||||
<option value="ca">Catalan (ca)</option>\
|
||||
<option value="cs_CZ">Czech (cs_CZ)</option>\
|
||||
<option value="nl_NL">Dutch (nl_NL)</option>\
|
||||
<option value="da">Danish (da)</option>\
|
||||
<option value="fr_FR">French (fr_FR)</option>\
|
||||
<option value="de">German (de)</option>\
|
||||
<option value="el_GR">Greek (el_GR)</option>\
|
||||
<option value="it_IT">Italian (it_IT)</option>\
|
||||
<option value="ja">Japanese (ja)</option>\
|
||||
<option value="lt_LT">Lithuanian (lt_LT)</option>\
|
||||
<option value="fa_IR">Persian (fa_IR)</option>\
|
||||
<option value="pl">Polish (pl)</option>\
|
||||
<option value="pt_BR">Portuguese (pt_BR)</option>\
|
||||
<option value="pt_PT">Portuguese (pt_PT)</option>\
|
||||
<option value="ru_RU">Russian (ru_RU)</option>\
|
||||
<option value="zh_CN">Simplified Chinese (zh_CN)</option>\
|
||||
<option value="sk_SK">Slovak (sk_SK)</option>\
|
||||
<option value="es_ES">Spanish (es_ES)</option>\
|
||||
<option value="zh_TW">Traditional Chinese (zh_TW)</option>';
|
||||
|
||||
var MONTHS = new Array(
|
||||
tr("January"),tr("February"),tr("March"),tr("April"),tr("May"),
|
||||
tr("June"),tr("July"),tr("August"),tr("September"),tr("October"),
|
||||
tr("November"),tr("December"));
|
||||
tr("January"), tr("February"), tr("March"), tr("April"), tr("May"),
|
||||
tr("June"), tr("July"), tr("August"), tr("September"), tr("October"),
|
||||
tr("November"), tr("December"));
|
||||
|
||||
function tr(str) {
|
||||
// TODO Add locale from the locale folder
|
||||
@ -16,6 +38,7 @@ define(function(require) {
|
||||
|
||||
return {
|
||||
'tr': tr,
|
||||
'months': MONTHS
|
||||
'months': MONTHS,
|
||||
'language_options': LANGUAGE_OPTIONS
|
||||
}
|
||||
});
|
||||
|
@ -137,7 +137,7 @@
|
||||
</head>
|
||||
<body class="antialiased">
|
||||
<div class="row">
|
||||
<div class="small-12 large-2 columns left-content" style="padding-top: 45px">
|
||||
<div class="small-12 large-2 columns left-content" style="padding-top: 35px">
|
||||
<div id="menu" class="row left-body">
|
||||
<ul class="side-nav" id="navigation">
|
||||
<div class="row left-header">
|
||||
|
Loading…
x
Reference in New Issue
Block a user