+/*global Proxmox*/
Ext.define('pmg-address-list', {
extend: 'Ext.data.Model',
fields: [ 'address' ],
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') {
}
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) {
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'
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>' +
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>' +