]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/QuarantineView.js
spam info grid: use monospace font for score and level names
[pmg-gui.git] / js / QuarantineView.js
index 3d0e9e1d8d7bd130db7ff4c4a5690d9b19c533a7..149f5810d8f2acc24e65ff4ff6aecb2ca812d8f5 100644 (file)
@@ -1,11 +1,10 @@
-/*global Proxmox*/
 Ext.define('PMG.QuarantineNavigationTree', {
     extend: 'Ext.list.Tree',
     xtype: 'quarantinenavigationtree',
 
     select: function(path) {
-       var me = this;
-       var item = me.getStore().findRecord('path', path, 0, false, true, true);
+       let me = this;
+       let item = me.getStore().findRecord('path', path, 0, false, true, true);
        me.setSelection(item);
     },
 
@@ -23,24 +22,24 @@ Ext.define('PMG.QuarantineNavigationTree', {
                            text: gettext('Whitelist'),
                            iconCls: 'fa fa-file-o',
                            path: 'pmgUserWhitelist',
-                           leaf: true
+                           leaf: true,
                        },
                        {
                            text: gettext('Blacklist'),
                            iconCls: 'fa fa-file',
                            path: 'pmgUserBlacklist',
-                           leaf: true
-                       }
-                   ]
-               }
-           ]
-       }
+                           leaf: true,
+                       },
+                   ],
+               },
+           ],
+       },
     },
 
     animation: false,
     expanderOnly: true,
     expanderFirst: false,
-    ui: 'nav'
+    ui: 'pve-nav',
 });
 
 Ext.define('PMG.QuarantineView', {
@@ -55,15 +54,21 @@ Ext.define('PMG.QuarantineView', {
            ':path:subpath': {
                action: 'changePath',
                before: 'beforeChangePath',
-                conditions : {
-                   ':path'    : '(?:([%a-zA-Z0-9\\-\\_\\s,]+))',
-                   ':subpath' : '(?:(?::)([%a-zA-Z0-9\\-\\_\\s,]+))?'
-               }
-           }
+                conditions: {
+                   ':path': '(?:([%a-zA-Z0-9\\-\\_\\s,]+))',
+                   ':subpath': '(?:(?::)([%a-zA-Z0-9\\-\\_\\s,]+))?',
+               },
+           },
        },
 
-       beforeChangePath: function(path, subpath, action) {
-           var me = this;
+       beforeChangePath: function(path, subpathOrAction, action) {
+           let me = this;
+
+           let subpath = subpathOrAction;
+           if (!action) {
+               action = subpathOrAction;
+               subpath = undefined;
+           }
 
            if (!Ext.ClassManager.getByAlias('widget.'+ path)) {
                console.warn('xtype "'+path+'" not found');
@@ -71,7 +76,7 @@ Ext.define('PMG.QuarantineView', {
                return;
            }
 
-           var lastpanel = me.lookupReference('contentpanel').getLayout().getActiveItem();
+           let lastpanel = me.lookupReference('contentpanel').getLayout().getActiveItem();
            if (lastpanel && lastpanel.xtype === path) {
                // we have the right component already,
                // we just need to select the correct tab
@@ -92,13 +97,13 @@ Ext.define('PMG.QuarantineView', {
            action.resume();
        },
 
-       changePath: function(path,subpath) {
-           var me = this;
-           var contentpanel = me.lookupReference('contentpanel');
-           var lastpanel = contentpanel.getLayout().getActiveItem();
+       changePath: function(path, subpath) {
+           let me = this;
+           let contentpanel = me.lookupReference('contentpanel');
+           let lastpanel = contentpanel.getLayout().getActiveItem();
 
-           var obj = contentpanel.add({ xtype: path, cselect: subpath });
-           var treelist = me.lookupReference('navtree');
+           let obj = contentpanel.add({ xtype: path, cselect: subpath });
+           let treelist = me.lookupReference('navtree');
 
            treelist.suspendEvents();
            treelist.select(path);
@@ -107,7 +112,7 @@ Ext.define('PMG.QuarantineView', {
            if (Ext.isFunction(obj.setActiveTab)) {
                obj.setActiveTab(subpath || 0);
                obj.addListener('tabchange', function(tabpanel, newc, oldc) {
-                   var newpath = path;
+                   let newpath = path;
 
                    // only add the subpath part for the
                    // non-default tabs
@@ -131,31 +136,8 @@ Ext.define('PMG.QuarantineView', {
        },
 
        changeLanguage: function() {
-           Ext.create('Ext.window.Window', {
-               title: gettext('Language'),
-               bodyPadding: 10,
-               items: [
-                   {
-                       xtype: 'proxmoxLanguageSelector',
-                       fieldLabel: gettext('Language'),
-                       value: Ext.util.Cookies.get('PMGLangCookie') || 'en',
-                   },
-               ],
-
-               buttons: [
-                   {
-                       text: gettext('OK'),
-                       handler: function() {
-                           let me = this;
-                           let win = this.up('window');
-                           let value = win.down('proxmoxLanguageSelector').getValue();
-                           var dt = Ext.Date.add(new Date(), Ext.Date.YEAR, 10);
-                           Ext.util.Cookies.set('PMGLangCookie', value, dt);
-                           win.mask(gettext('Please wait...'), 'x-mask-loading');
-                           window.location.reload();
-                       },
-                   }
-               ]
+           Ext.create('Proxmox.window.LanguageEditWindow', {
+               cookieName: 'PMGLangCookie',
            }).show();
        },
 
@@ -169,7 +151,7 @@ Ext.define('PMG.QuarantineView', {
 
        control: {
            '[reference=logoutButton]': {
-               click: 'logout'
+               click: 'logout',
            },
            '[reference=languageButton]': {
                click: 'changeLanguage',
@@ -177,22 +159,22 @@ Ext.define('PMG.QuarantineView', {
        },
 
        init: function(view) {
-           var me = this;
+           let me = this;
 
            // load username
-           var username = Proxmox.UserName.replace(/\@quarantine$/, '');
+           let username = Proxmox.UserName.replace(/@quarantine$/, '');
            me.lookupReference('usernameinfo').setText(username);
 
            // show login on requestexception
            // fixme: what about other errors
            Ext.Ajax.on('requestexception', function(conn, response, options) {
-               if (response.status == 401) { // auth failure
+               if (response.status === 401) { // auth failure
                    me.logout();
                }
            });
 
-           var qa = PMG.Utils.extractQuarantineAction();
-           var token;
+           let qa = PMG.Utils.extractQuarantineAction();
+           let token;
            if (qa) {
                token = 'pmgSpamQuarantine';
                if (qa.action === 'blacklist') { token = 'pmgUserBlacklist'; }
@@ -206,17 +188,17 @@ Ext.define('PMG.QuarantineView', {
                }
            } else {
                // select treeitem and load page from url fragment
-               
+
                token = Ext.util.History.getToken() || 'pmgSpamQuarantine';
                this.redirectTo(token, true);
            }
-       }
+       },
     },
 
     plugins: 'viewport',
 
     layout: {
-       type: 'border'
+       type: 'border',
     },
 
     items: [
@@ -225,20 +207,20 @@ Ext.define('PMG.QuarantineView', {
            xtype: 'container',
            layout: {
                type: 'hbox',
-               align: 'middle'
+               align: 'middle',
            },
            margin: '2 0 2 5',
            height: 38,
            items: [
                {
-                   xtype: 'proxmoxlogo'
+                   xtype: 'proxmoxlogo',
                },
                {
                    padding: '0 0 0 5',
-                   xtype: 'versioninfo'
+                   xtype: 'versioninfo',
                },
                {
-                   flex: 1
+                   flex: 1,
                },
                {
                    xtype: 'button',
@@ -246,7 +228,7 @@ Ext.define('PMG.QuarantineView', {
                    style: {
                        // proxmox dark grey p light grey as border
                        backgroundColor: '#464d4d',
-                       borderColor: '#ABBABA'
+                       borderColor: '#ABBABA',
                    },
                    margin: '0 5 0 0',
                    iconCls: 'fa fa-user',
@@ -260,33 +242,47 @@ Ext.define('PMG.QuarantineView', {
                        {
                            reference: 'logoutButton',
                            iconCls: 'fa fa-sign-out',
-                           text: gettext('Logout')
+                           text: gettext('Logout'),
                        },
                    ],
                },
-           ]
+           ],
        },
        {
-           xtype: 'quarantinenavigationtree',
-           reference: 'navtree',
-           minWidth: 177,
+           xtype: 'panel',
+           scrollable: 'y',
            border: false,
            region: 'west',
-           // we have to define it here until extjs 6.2
-           // because of a bug where a viewcontroller does not detect
-           // the selectionchange event of a treelist
-           listeners: {
-               selectionchange: 'navigate'
-           }
+           layout: {
+               type: 'vbox',
+               align: 'stretch',
+           },
+           items: [
+               {
+                   xtype: 'quarantinenavigationtree',
+                   reference: 'navtree',
+                   minWidth: 180,
+                   // we have to define it here until extjs 6.2 because of a bug where a
+                   // viewcontroller does not detect the selectionchange event of a treelist
+                   listeners: {
+                       selectionchange: 'navigate',
+                   },
+               },
+               {
+                   xtype: 'box',
+                   cls: 'x-treelist-pve-nav',
+                   flex: 1,
+               },
+           ],
        },
        {
            xtype: 'panel',
            layout: {
-               type: 'card'
+               type: 'card',
            },
            region: 'center',
            border: false,
-           reference: 'contentpanel'
-       }
-    ]
+           reference: 'contentpanel',
+       },
+    ],
 });