+Ext.define('PVE.lxc.DNSInputPanel', {
+ extend: 'PVE.panel.InputPanel',
+ alias: 'widget.pveLxcDNSInputPanel',
+
+ insideWizard: false,
+
+ onGetValues: function(values) {
+ var me = this;
+
+ if (!values.searchdomain) {
+ if (me.insideWizard) {
+ return {};
+ } else {
+ return { "delete": "searchdomain,nameserver" };
+ }
+ }
+ var list = [];
+ Ext.Array.each(['dns1', 'dns2', 'dns3'], function(fn) {
+ if (values[fn]) {
+ list.push(values[fn]);
+ }
+ delete values[fn];
+ });
+
+ if (list.length) {
+ values.nameserver = list.join(' ');
+ } else {
+ if (!me.insideWizard) {
+ values['delete'] = 'nameserver';
+ }
+ }
+ return values;
+ },
+
+ initComponent : function() {
+ var me = this;
+
+ var items = [
+ {
+ xtype: 'pvetextfield',
+ name: 'searchdomain',
+ skipEmptyText: true,
+ fieldLabel: gettext('DNS domain'),
+ emptyText: gettext('use host settings'),
+ allowBlank: true,
+ listeners: {
+ change: function(f, value) {
+ if (!me.rendered) {
+ return;
+ }
+ var field_ids = ['#dns1', '#dns2', '#dns3'];
+ Ext.Array.each(field_ids, function(fn) {
+ var field = me.down(fn);
+ field.setDisabled(!value);
+ field.clearInvalid();
+ });
+ }
+ }
+ },
+ {
+ xtype: 'pvetextfield',
+ fieldLabel: gettext('DNS server') + " 1",
+ vtype: 'IPAddress',
+ allowBlank: true,
+ disabled: true,
+ name: 'dns1',
+ itemId: 'dns1'
+ },
+ {
+ xtype: 'pvetextfield',
+ fieldLabel: gettext('DNS server') + " 2",
+ vtype: 'IPAddress',
+ skipEmptyText: true,
+ disabled: true,
+ name: 'dns2',
+ itemId: 'dns2'
+ },
+ {
+ xtype: 'pvetextfield',
+ fieldLabel: gettext('DNS server') + " 3",
+ vtype: 'IPAddress',
+ skipEmptyText: true,
+ disabled: true,
+ name: 'dns3',
+ itemId: 'dns3'
+ }
+ ];
+
+ if (me.insideWizard) {
+ me.column1 = items;
+ } else {
+ me.items = items;
+ }
+
+ me.callParent();
+ }
+});
+
+Ext.define('PVE.lxc.DNSEdit', {
+ extend: 'PVE.window.Edit',
+
+ initComponent : function() {
+ var me = this;
+
+ var ipanel = Ext.create('PVE.lxc.DNSInputPanel');
+
+ Ext.apply(me, {
+ subject: gettext('Resources'),
+ items: ipanel
+ });
+
+ me.callParent();
+
+ if (!me.create) {
+ me.load({
+ success: function(response, options) {
+ var values = response.result.data;
+
+ if (values.nameserver) {
+ values.nameserver.replace(/[,;]/, ' ');
+ values.nameserver.replace(/^\s+/, '');
+ var nslist = values.nameserver.split(/\s+/);
+ values.dns1 = nslist[0];
+ values.dns2 = nslist[1];
+ values.dns3 = nslist[2];
+ }
+
+ ipanel.setValues(values);
+ }
+ });
+ }
+ }
+});
+
/*jslint confusion: true */
Ext.define('PVE.lxc.DNS', {
extend: 'PVE.grid.ObjectGrid',
searchdomain: {
header: gettext('DNS domain'),
defaultValue: '',
- editor: caps.vms['VM.Config.Network'] ? {
- xtype: 'pveWindowEdit',
- subject: gettext('DNS domain'),
- items: {
- xtype: 'pvetextfield',
- name: 'searchdomain',
- fieldLabel: gettext('DNS domain'),
- allowBlank: false
+ editor: caps.vms['VM.Config.Network'] ? 'PVE.lxc.DNSEdit' : undefined,
+ renderer: function(value) {
+ if (me.getObjectValue('nameserver') || me.getObjectValue('searchdomain')) {
+ return value;
}
- } : undefined
+ return gettext('use host settings');
+ }
},
nameserver: {
header: gettext('DNS server'),
defaultValue: '',
- editor: caps.vms['VM.Config.Network'] ? {
- xtype: 'pveWindowEdit',
- subject: gettext('DNS server'),
- items: {
- xtype: 'pvetextfield',
- name: 'nameserver',
- fieldLabel: gettext('DNS server'),
- allowBlank: false
+ editor: caps.vms['VM.Config.Network'] ? 'PVE.lxc.DNSEdit' : undefined,
+ renderer: function(value) {
+ if (me.getObjectValue('nameserver') || me.getObjectValue('searchdomain')) {
+ return value;
}
- } : undefined
+ return gettext('use host settings');
+ }
}
};
return;
}
- var config = Ext.apply({
- pveSelNode: me.pveSelNode,
- confid: rec.data.key,
- url: '/api2/extjs/' + baseurl
- }, rowdef.editor);
- var win = Ext.createWidget(rowdef.editor.xtype, config);
- win.load();
-
+ var win;
+ if (Ext.isString(rowdef.editor)) {
+ win = Ext.create(rowdef.editor, {
+ pveSelNode: me.pveSelNode,
+ confid: rec.data.key,
+ url: '/api2/extjs/' + baseurl
+ });
+ } else {
+ var config = Ext.apply({
+ pveSelNode: me.pveSelNode,
+ confid: rec.data.key,
+ url: '/api2/extjs/' + baseurl
+ }, rowdef.editor);
+ win = Ext.createWidget(rowdef.editor.xtype, config);
+ }
+ //win.load();
win.show();
win.on('destroy', reload);
};
me.on('show', reload);
}
});
-