Ext.define('pmg-domains', {
extend: 'Ext.data.Model',
- fields: [ 'domain', 'comment' ],
- proxy: {
- type: 'proxmox',
- url: "/api2/json/config/domains"
- },
- idProperty: 'domain'
+ fields: ['domain', 'comment'],
+ idProperty: 'domain',
});
Ext.define('PMG.RelayDomains', {
extend: 'Ext.grid.GridPanel',
alias: ['widget.pmgRelayDomains'],
- initComponent : function() {
+ baseurl: '/config/domains',
+ domain_desc: gettext('Relay Domain'),
+
+ onlineHelp: 'pmgconfig_mailproxy_relay_domains',
+
+ initComponent: function() {
var me = this;
var store = new Ext.data.Store({
model: 'pmg-domains',
sorters: {
property: 'domain',
- order: 'DESC'
- }
+ direction: 'ASC',
+ },
+ proxy: {
+ type: 'proxmox',
+ url: '/api2/json' + me.baseurl,
+ },
});
var reload = function() {
store.load();
};
- var sm = Ext.create('Ext.selection.RowModel', {});
+ me.selModel = Ext.create('Ext.selection.RowModel', {});
- var remove_btn = Ext.createWidget('proxmoxButton', {
- text: gettext('Remove'),
- disabled: true,
- selModel: sm,
- confirmMsg: function (rec) {
- return Ext.String.format(
- gettext('Are you sure you want to remove entry {0}'),
- "'" + rec.data.domain + "'");
- },
- handler: function(btn, event, rec) {
- Proxmox.Utils.API2Request({
- url: '/config/domains/' + rec.data.domain,
- method: 'DELETE',
- waitMsgTarget: me,
- callback: function() {
- reload();
- },
- failure: function (response, opts) {
- Ext.Msg.alert(gettext('Error'), response.htmlStatus);
- }
- });
- }
+ var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
+ selModel: me.selModel,
+ baseurl: me.baseurl,
+ callback: reload,
+ waitMsgTarget: me,
});
+ var run_editor = function() {
+ var rec = me.selModel.getSelection()[0];
+ if (!rec) {
+ return;
+ }
+
+ var config = {
+ url: '/api2/extjs' + me.baseurl + '/' + rec.data.domain,
+ onlineHelp: me.onlineHelp,
+ method: 'PUT',
+ subject: me.domain_desc,
+ items: [
+ {
+ xtype: 'displayfield',
+ name: 'domain',
+ fieldLabel: me.domain_desc,
+ },
+ {
+ xtype: 'textfield',
+ name: 'comment',
+ fieldLabel: gettext("Comment"),
+ },
+ ],
+ };
+
+ var win = Ext.createWidget('proxmoxWindowEdit', config);
+
+ win.load();
+ win.on('destroy', reload);
+ win.show();
+ };
+
var tbar = [
+ {
+ xtype: 'proxmoxButton',
+ text: gettext('Edit'),
+ disabled: true,
+ selModel: me.selModel,
+ handler: run_editor,
+ },
{
text: gettext('Create'),
handler: function() {
var config = {
method: 'POST',
- create: true,
- url: "/api2/extjs/config/domains",
+ url: '/api2/extjs' + me.baseurl,
+ onlineHelp: me.onlineHelp,
+ isCreate: true,
subject: gettext("Relay Domain"),
- items: {
- xtype: 'proxmoxtextfield',
- name: 'domain',
- fieldLabel: gettext("Relay Domain")
- }
+ items: [
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'domain',
+ fieldLabel: me.domain_desc,
+ },
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'comment',
+ fieldLabel: gettext("Comment"),
+ },
+ ],
};
var win = Ext.createWidget('proxmoxWindowEdit', config);
+
win.on('destroy', reload);
win.show();
- }
+ },
},
- remove_btn
+ remove_btn,
+ '->',
+ {
+ xtype: 'pmgFilterField',
+ filteredFields: ['domain', 'comment'],
+ },
];
- Proxmox.Utils.monStoreErrors(me, store);
+ Proxmox.Utils.monStoreErrors(me, store, true);
Ext.apply(me, {
store: store,
- selModel: sm,
tbar: tbar,
+ run_editor: run_editor,
viewConfig: {
- trackOver: false
+ trackOver: false,
},
columns: [
{
- header: gettext('Relay Domain'),
+ header: me.domain_desc,
width: 200,
sortable: true,
- dataIndex: 'domain'
+ dataIndex: 'domain',
},
{
header: gettext('Comment'),
sortable: false,
renderer: Ext.String.htmlEncode,
dataIndex: 'comment',
- flex: 1
- }
+ flex: 1,
+ },
],
listeners: {
- activate: reload
- }
+ itemdblclick: run_editor,
+ activate: reload,
+ },
});
me.callParent();
- }
+ },
});