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


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to