--- /dev/null
+Ext.define('pmg-transport', {
+ extend: 'Ext.data.Model',
+ fields: [ 'domain', 'host', { name: 'port', type: 'integer' },
+ { name: 'use_mx', type: 'boolean' }, 'comment' ],
+ proxy: {
+ type: 'proxmox',
+ url: "/api2/json/config/transport"
+ },
+ idProperty: 'domain'
+});
+
+Ext.define('PMG.Transport', {
+ extend: 'Ext.grid.GridPanel',
+ alias: ['widget.pmgTransport'],
+
+ initComponent : function() {
+ var me = this;
+
+ var store = new Ext.data.Store({
+ model: 'pmg-transport',
+ sorters: {
+ property: 'domain',
+ order: 'DESC'
+ }
+ });
+
+ var reload = function() {
+ store.load();
+ };
+
+ me.selModel = Ext.create('Ext.selection.RowModel', {});
+
+ var remove_btn = Ext.createWidget('proxmoxButton', {
+ text: gettext('Remove'),
+ disabled: true,
+ selModel: me.selModel,
+ 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/transport/' + rec.data.domain,
+ method: 'DELETE',
+ waitMsgTarget: me,
+ callback: function() {
+ reload();
+ },
+ failure: function (response, opts) {
+ Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+ }
+ });
+ }
+ });
+
+ var common_properties = [
+ {
+ xtype: 'textfield',
+ name: 'host',
+ fieldLabel: gettext("Host")
+ },
+ {
+ xtype: 'proxmoxintegerfield',
+ name: 'port',
+ value: 25,
+ minValue: 1,
+ maxValue: 65535,
+ fieldLabel: gettext("Port")
+ },
+ {
+ xtype: 'proxmoxcheckbox',
+ name: 'use_mx',
+ checked: true,
+ uncheckedValue: 0,
+ fieldLabel: gettext("Use MX")
+ },
+ {
+ xtype: 'textfield',
+ name: 'comment',
+ fieldLabel: gettext("Comment")
+ }
+ ];
+
+ var edit_properties = common_properties.slice();
+ edit_properties.unshift({
+ xtype: 'displayfield',
+ name: 'domain',
+ fieldLabel: gettext("Relay Domain")
+ });
+
+ var create_properties = common_properties.slice();
+ create_properties.unshift({
+ xtype: 'proxmoxtextfield',
+ name: 'domain',
+ fieldLabel: gettext("Relay Domain")
+ });
+
+ var run_editor = function() {
+ var rec = me.selModel.getSelection()[0];
+ if (!rec) {
+ return;
+ }
+
+ var config = {
+ url: "/api2/extjs/config/transport/" + rec.data.domain,
+ method: 'PUT',
+ subject: gettext("Transport"),
+ items: edit_properties
+ };
+
+ 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',
+ url: "/api2/extjs/config/transport",
+ create: true,
+ subject: gettext("Transport"),
+ items: create_properties
+ };
+
+ var win = Ext.createWidget('proxmoxWindowEdit', config);
+
+ win.on('destroy', reload);
+ win.show();
+ }
+ },
+ remove_btn
+ ];
+
+ Proxmox.Utils.monStoreErrors(me, store);
+
+ Ext.apply(me, {
+ store: store,
+ tbar: tbar,
+ viewConfig: {
+ trackOver: false
+ },
+ columns: [
+ {
+ header: gettext('Relay Domain'),
+ width: 200,
+ sortable: true,
+ dataIndex: 'domain'
+ },
+ {
+ header: gettext('Host'),
+ width: 200,
+ sortable: true,
+ dataIndex: 'host'
+ },
+ {
+ header: gettext('Port'),
+ width: 80,
+ sortable: false,
+ dataIndex: 'port'
+ },
+ {
+ header: gettext('Use MX'),
+ width: 80,
+ renderer: Proxmox.Utils.format_boolean,
+ sortable: false,
+ dataIndex: 'use_mx'
+ },
+ {
+ header: gettext('Comment'),
+ sortable: false,
+ renderer: Ext.String.htmlEncode,
+ dataIndex: 'comment',
+ flex: 1
+ }
+ ],
+ listeners: {
+ itemdblclick: run_editor,
+ activate: reload
+ }
+ });
+
+ me.callParent();
+ }
+});