]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/UserBlackWhiteList.js
bump version to 1.0-42
[pmg-gui.git] / js / UserBlackWhiteList.js
index 9767a5b23053252a2464fd21d0e4912fed4e4fb4..3cc5adbf340e0f9fe69b49b907c48578030f0153 100644 (file)
@@ -1,3 +1,4 @@
+/*global Proxmox*/
 Ext.define('pmg-address-list', {
     extend: 'Ext.data.Model',
     fields: [ 'address' ],
@@ -8,29 +9,42 @@ Ext.define('pmg-address-list', {
 Ext.define('PMG.UserBlackWhiteList', {
     extend: 'Ext.grid.GridPanel',
 
+    border: false,
     listname: undefined, // 'blacklist' or 'whitelist',
 
+    emptyText: gettext('No data in database'),
+
     controller: {
 
         xclass: 'Ext.app.ViewController',
 
        onAddAddress: function() {
            var me = this.getView();
+           var params = me.getStore().getProxy().getExtraParams() || {};
 
            var url = '/quarantine/' + me.listname;
 
+           var items = [{
+               xtype: 'proxmoxtextfield',
+               name: 'address',
+               fieldLabel: gettext("Address")
+           }];
+
+           Ext.Object.each(params, function(key, value) {
+               items.push({
+                   xtype: 'hidden',
+                   name: key,
+                   value: value
+               });
+           });
+
            var config = {
                method: 'POST',
                url: url,
-               create: true,
+               onlineHelp: 'pmg_userblackwhitelist',
+               isCreate: true,
                isAdd: true,
-               items: [
-                   {
-                       xtype: 'proxmoxtextfield',
-                       name: 'address',
-                       fieldLabel: gettext("Address")
-                   }
-               ]
+               items: items
            };
 
            if (me.listname === 'blacklist') {
@@ -42,19 +56,22 @@ Ext.define('PMG.UserBlackWhiteList', {
            }
 
            var win = Ext.createWidget('proxmoxWindowEdit', config);
-           win.on('destroy', function() { me.store.load() });
+           win.on('destroy', function() { me.store.load(); });
            win.show();
        },
 
        onRemoveAddress: function() {
            var me = this.getView();
            var rec = me.selModel.getSelection()[0];
-           if (!rec) return;
+           if (!rec) {
+               return;
+           }
 
+           var params = me.getStore().getProxy().getExtraParams() || {};
            var url = '/quarantine/' + me.listname + '/' + rec.getId();
 
            Proxmox.Utils.API2Request({
-               url: url,
+               url: url + '?' + Ext.Object.toQueryString(params),
                method: 'DELETE',
                waitMsgTarget: me,
                callback: function(options, success, response) {
@@ -64,10 +81,62 @@ Ext.define('PMG.UserBlackWhiteList', {
                    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
                }
            });
+       },
+
+       changeEmail: function(combobox, value) {
+           var view = this.getView();
+           if (value && combobox.isValid()) {
+               view.getStore().getProxy().setExtraParams({
+                   pmail: value
+               });
+               view.getStore().load();
+           }
+       },
+
+       init: function(view) {
+           if (PMG.view === 'quarantineview') {
+               this.lookupReference('email').setVisible(false);
+               view.getStore().load();
+           }
+           Proxmox.Utils.monStoreErrors(view.getView(), view.getStore(), true);
+       },
+
+       control: {
+           'combobox':{
+               change: {
+                   fn: 'changeEmail',
+                   buffer: 500
+               }
+           }
        }
     },
 
     tbar: [
+       {
+           xtype: 'combobox',
+           displayField: 'mail',
+           vtype: 'email',
+           allowBlank: false,
+           valueField: 'mail',
+           store: {
+               proxy: {
+                   type: 'proxmox',
+                   url: '/api2/json/quarantine/quarusers'
+               },
+               fields: [
+                   {
+                       name: 'mail',
+                       renderer: Ext.htmlEncode
+                   }
+               ]
+           },
+           queryParam: false,
+           queryCaching: false,
+           editable: true,
+           reference: 'email',
+           name: 'email',
+           fieldLabel: 'E-Mail'
+       },
        {
            text: gettext('Add'),
            handler: 'onAddAddress'
@@ -108,17 +177,21 @@ Ext.define('PMG.UserBlacklist', {
 
     store: {
        model: 'pmg-address-list',
-       autoLoad: true,
+       autoDestroy: true,
        proxy: {
             type: 'proxmox',
             url: "/api2/json/quarantine/blacklist"
-       },
+       }
     },
 
     dockedItems: [
        {
             dock: 'top',
-           bodyStyle: 'padding: 10px;',
+           bodyStyle: {
+               padding: '10px',
+               'border-left': '0px',
+               'border-right': '0px'
+           },
             html: gettext('With this feature, you can manually mark E-mails from certain domains or addresses as spam.') + '<br><br>' +
                '<b>*.com</b> (all mails from <b>.com</b> domains)' + '<br>' +
                '<b>*@example.com</b> (all mails from domain <b>example.com</b>)' + '<br>' +
@@ -138,17 +211,21 @@ Ext.define('PMG.UserWhitelist', {
 
     store: {
        model: 'pmg-address-list',
-       autoLoad: true,
+       autoDestroy: true,
        proxy: {
             type: 'proxmox',
             url: "/api2/json/quarantine/whitelist"
-       },
+       }
     },
 
     dockedItems: [
        {
             dock: 'top',
-           bodyStyle: 'padding: 10px;',
+           bodyStyle: {
+               padding: '10px',
+               'border-left': '0px',
+               'border-right': '0px'
+           },
             html: gettext('With this feature, you can manually bypass spam checking for certain domains or E-mail addresses.') + '<br><br>' +
                '<b>*.com</b> (all mails from <b>.com</b> domains)' + '<br>' +
                '<b>*@example.com</b> (all mails from domain <b>example.com</b>)' + '<br>' +