[pve-devel] [RFC manager 2/2] add 'my settings' to logout button

Dominik Csapak d.csapak at proxmox.com
Wed Oct 12 11:51:27 CEST 2016


this adds a menu below 'logout' with an entry 'my settings'
this opens a window with (for now) browser specific settings
and a place to reset them

the plan would be to add password change, 2fa setup etc here

one remark: the reset layout button reloads the window,
to really apply the reset

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 www/manager6/Makefile           |   1 +
 www/manager6/Workspace.js       |  10 +++-
 www/manager6/window/Settings.js | 122 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 132 insertions(+), 1 deletion(-)
 create mode 100644 www/manager6/window/Settings.js

diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index 558ddfd..908097b 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -86,6 +86,7 @@ JSSRC= 				                 	\
 	window/Restore.js				\
 	window/SafeDestroy.js				\
 	window/BackupConfig.js				\
+	window/Settings.js				\
 	panel/NotesView.js				\
 	grid/SelectFeature.js				\
 	grid/ObjectGrid.js				\
diff --git a/www/manager6/Workspace.js b/www/manager6/Workspace.js
index 7f5a4c1..6903d8e 100644
--- a/www/manager6/Workspace.js
+++ b/www/manager6/Workspace.js
@@ -413,10 +413,18 @@ Ext.define('PVE.StdWorkspace', {
 			{
 			    pack: 'end',
 			    margin: '0 5 0 0',
-			    xtype: 'button',
+			    xtype: 'splitbutton',
 			    baseCls: 'x-btn',
 			    iconCls: 'fa fa-sign-out',
 			    text: gettext("Logout"),
+			    menu: [{
+				text: gettext('My Settings'),
+				iconCls: 'fa fa-gear',
+				handler: function() {
+				    var win = Ext.create('PVE.window.Settings');
+				    win.show();
+				}
+			    }],
 			    handler: function() { 
 				PVE.data.ResourceStore.loadData([], false);
 				me.showLogin(); 
diff --git a/www/manager6/window/Settings.js b/www/manager6/window/Settings.js
new file mode 100644
index 0000000..d7b37e3
--- /dev/null
+++ b/www/manager6/window/Settings.js
@@ -0,0 +1,122 @@
+Ext.define('PVE.window.Settings', {
+    extend: 'Ext.window.Window',
+
+    width: '400px',
+    title: gettext('My Settings'),
+    iconCls: 'fa fa-gear',
+    modal: true,
+    bodyPadding: 10,
+    resizable: false,
+
+    buttons: [{
+	text: gettext('Close'),
+	handler: function() {
+	    this.up('window').close();
+	}
+    }],
+
+    layout: {
+	type: 'vbox',
+	align: 'center'
+    },
+
+    controller: {
+	xclass: 'Ext.app.ViewController',
+
+	control: {
+	    '#': {
+		show: function() {
+		    var me = this;
+		    var sp = Ext.state.Manager.getProvider();
+
+		    var username = sp.get('login-username') || PVE.Utils.noneText;
+		    me.lookupReference('savedUserName').setValue(username);
+		}
+	    },
+	    'button[name=reset]': {
+		click: function () {
+		    var blacklist = ['GuiCap', 'login-username'];
+		    var sp = Ext.state.Manager.getProvider();
+		    var state;
+		    for (state in sp.state) {
+			if (sp.state.hasOwnProperty(state)) {
+			    if (blacklist.indexOf(state) !== -1) {
+				continue;
+			    }
+
+			    sp.clear(state);
+			}
+		    }
+
+		    window.location.reload();
+		}
+	    },
+	    'button[name=clear-username]': {
+		click: function () {
+		    var me = this;
+		    var usernamefield = me.lookupReference('savedUserName');
+		    var sp = Ext.state.Manager.getProvider();
+
+		    usernamefield.setValue(PVE.Utils.noneText);
+		    sp.clear('login-username');
+		}
+	    }
+	}
+    },
+
+    items: [{
+	    xtype: 'fieldset',
+	    width: '90%',
+	    title: gettext('Browser Settings'),
+	    layout: {
+		type: 'vbox',
+		align: 'right'
+	    },
+	    defaults: {
+		width: '100%',
+		margin: '0 0 10 0'
+	    },
+	    items: [
+		{
+		    xtype: 'displayfield',
+		    fieldLabel: gettext('Saved User name'),
+		    labelAlign: 'left',
+		    labelWidth: '50%',
+		    fieldStyle: {
+			'text-align':'right'
+		    },
+		    stateId: 'login-username',
+		    reference: 'savedUserName',
+		    value: ''
+		},
+		{
+		    xtype: 'button',
+		    text: gettext('Clear User name'),
+		    width: 'auto',
+		    name: 'clear-username'
+		},
+		{
+		    xtype: 'box',
+		    autoEl: { tag: 'hr'}
+		},
+		{
+		    xtype: 'displayfield',
+		    fieldLabel: gettext('Layout'),
+		    labelAlign: 'left',
+		    labelWidth: '50%'
+		},
+		{
+		    xtype: 'button',
+		    text: gettext('Reset Layout'),
+		    width: 'auto',
+		    name: 'reset'
+		}
+	    ]
+    }],
+
+    onShow: function() {
+	var me = this;
+	me.callParent();
+
+    }
+});
-- 
2.1.4





More information about the pve-devel mailing list