/*global Proxmox*/ Ext.define('pmg-address-list', { extend: 'Ext.data.Model', fields: [ 'address' ], idProperty: 'address' }); // base class - do not use directly Ext.define('PMG.UserBlackWhiteList', { extend: 'Ext.grid.GridPanel', border: false, listname: undefined, // 'blacklist' or 'whitelist', selModel: 'checkboxmodel', 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', minLength: 3, regex: /^[^\,\;\s]*$/, // no whitespace no , and no ; fieldLabel: gettext("Address") }]; Ext.Object.each(params, function(key, value) { items.push({ xtype: 'hidden', name: key, value: value }); }); var config = { method: 'POST', url: url, onlineHelp: 'pmg_userblackwhitelist', isCreate: true, isAdd: true, items: items }; if (me.listname === 'blacklist') { config.subject = gettext("Blacklist"); } else if (me.listname == 'whitelist') { config.subject = gettext("Whitelist"); } else { throw "unknown list - internal error"; } var win = Ext.createWidget('proxmoxWindowEdit', config); win.on('destroy', function() { me.store.load(); }); win.show(); }, onRemoveAddress: function() { var me = this.getView(); var records = me.selModel.getSelection(); if (records.length < 1) { return; } var url = '/quarantine/' + me.listname + '/'; url += records.map(function(rec) { return encodeURIComponent(rec.getId()); }).join(','); var params = me.getStore().getProxy().getExtraParams() || {}; Proxmox.Utils.API2Request({ url: url + '?' + Ext.Object.toQueryString(params), method: 'DELETE', waitMsgTarget: me, callback: function(options, success, response) { me.store.load(); }, failure: function (response, opts) { 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) { var emailcb = this.lookupReference('email'); if (PMG.view === 'quarantineview') { emailcb.setVisible(false); view.getStore().load(); } else { emailcb.getStore().getProxy().setExtraParams({ list: view.listname === 'blacklist' ? 'BL' : 'WL' }); } 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', listConfig: { emptyText: '