]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/lxc/DNS.js
1 Ext
.define('PVE.lxc.DNSInputPanel', {
2 extend
: 'Proxmox.panel.InputPanel',
3 alias
: 'widget.pveLxcDNSInputPanel',
7 onGetValues: function(values
) {
11 if (!values
.searchdomain
&& !me
.insideWizard
) {
12 deletes
.push('searchdomain');
15 if (values
.nameserver
) {
16 var list
= values
.nameserver
.split(/[\ \,\;]+/);
17 values
.nameserver
= list
.join(' ');
18 } else if(!me
.insideWizard
) {
19 deletes
.push('nameserver');
23 values
['delete'] = deletes
.join(',');
29 initComponent : function() {
34 xtype
: 'proxmoxtextfield',
37 fieldLabel
: gettext('DNS domain'),
38 emptyText
: gettext('use host settings'),
42 xtype
: 'proxmoxtextfield',
43 fieldLabel
: gettext('DNS servers'),
44 vtype
: 'IP64AddressList',
46 emptyText
: gettext('use host settings'),
52 if (me
.insideWizard
) {
62 Ext
.define('PVE.lxc.DNSEdit', {
63 extend
: 'Proxmox.window.Edit',
65 initComponent : function() {
68 var ipanel
= Ext
.create('PVE.lxc.DNSInputPanel');
71 subject
: gettext('Resources'),
79 success: function(response
, options
) {
80 var values
= response
.result
.data
;
82 if (values
.nameserver
) {
83 values
.nameserver
.replace(/[,;]/, ' ');
84 values
.nameserver
.replace(/^\s+/, '');
87 ipanel
.setValues(values
);
94 /*jslint confusion: true */
95 Ext
.define('PVE.lxc.DNS', {
96 extend
: 'Proxmox.grid.PendingObjectGrid',
97 alias
: ['widget.pveLxcDNS'],
99 onlineHelp
: 'pct_container_network',
101 initComponent : function() {
105 var nodename
= me
.pveSelNode
.data
.node
;
107 throw "no node name specified";
110 var vmid
= me
.pveSelNode
.data
.vmid
;
112 throw "no VM ID specified";
115 var caps
= Ext
.state
.Manager
.get('GuiCap');
120 defaultValue
: me
.pveSelNode
.data
.name
,
121 header
: gettext('Hostname'),
122 editor
: caps
.vms
['VM.Config.Network'] ? {
123 xtype
: 'proxmoxWindowEdit',
124 subject
: gettext('Hostname'),
128 fieldLabel
: gettext('Hostname'),
133 emptyText
: 'CT' + vmid
.toString()
135 onGetValues: function(values
) {
137 if (values
.hostname
=== undefined ||
138 values
.hostname
=== null ||
139 values
.hostname
=== '') {
140 params
= { hostname
: 'CT'+vmid
.toString()};
148 header
: gettext('DNS domain'),
150 editor
: caps
.vms
['VM.Config.Network'] ? 'PVE.lxc.DNSEdit' : undefined,
151 renderer: function(value
) {
152 return value
|| gettext('use host settings');
156 header
: gettext('DNS server'),
158 editor
: caps
.vms
['VM.Config.Network'] ? 'PVE.lxc.DNSEdit' : undefined,
159 renderer: function(value
) {
160 return value
|| gettext('use host settings');
165 var baseurl
= 'nodes/' + nodename
+ '/lxc/' + vmid
+ '/config';
167 var reload = function() {
171 var sm
= Ext
.create('Ext.selection.RowModel', {});
173 var run_editor = function() {
174 var rec
= sm
.getSelection()[0];
179 var rowdef
= rows
[rec
.data
.key
];
180 if (!rowdef
.editor
) {
185 if (Ext
.isString(rowdef
.editor
)) {
186 win
= Ext
.create(rowdef
.editor
, {
187 pveSelNode
: me
.pveSelNode
,
188 confid
: rec
.data
.key
,
189 url
: '/api2/extjs/nodes/' + nodename
+ '/lxc/' + vmid
+ '/config'
192 var config
= Ext
.apply({
193 pveSelNode
: me
.pveSelNode
,
194 confid
: rec
.data
.key
,
195 url
: '/api2/extjs/nodes/' + nodename
+ '/lxc/' + vmid
+ '/config'
197 win
= Ext
.createWidget(rowdef
.editor
.xtype
, config
);
202 win
.on('destroy', reload
);
205 var edit_btn
= new Proxmox
.button
.Button({
206 text
: gettext('Edit'),
209 enableFn: function(rec
) {
210 var rowdef
= rows
[rec
.data
.key
];
211 return !!rowdef
.editor
;
216 var revert_btn
= new Proxmox
.button
.Button({
217 text
: gettext('Revert'),
219 handler: function() {
220 var sm
= me
.getSelectionModel();
221 var rec
= sm
.getSelection()[0];
226 var rowdef
= me
.rows
[rec
.data
.key
] || {};
227 var keys
= rowdef
.multiKey
|| [ rec
.data
.key
];
228 var revert
= keys
.join(',');
230 Proxmox
.Utils
.API2Request({
231 url
: '/api2/extjs/' + baseurl
,
237 callback: function() {
240 failure: function (response
, opts
) {
241 Ext
.Msg
.alert('Error',response
.htmlStatus
);
248 var set_button_status = function() {
249 var sm
= me
.getSelectionModel();
250 var rec
= sm
.getSelection()[0];
256 var key
= rec
.data
.key
;
257 var rowdef
= rows
[key
];
258 var pending
= rec
.data
['delete'] || me
.hasPendingChanges(key
);
259 edit_btn
.setDisabled(!rowdef
.editor
);
260 revert_btn
.setDisabled(!pending
);
264 url
: "/api2/json/nodes/" + nodename
+ "/lxc/" + vmid
+ "/pending",
268 run_editor
: run_editor
,
269 tbar
: [ edit_btn
, revert_btn
],
272 url
: "/api2/extjs/" + baseurl
275 itemdblclick
: run_editor
,
276 selectionchange
: set_button_status
,
283 me
.on('activate', me
.rstore
.startUpdate
);
284 me
.on('destroy', me
.rstore
.stopUpdate
);
285 me
.on('deactivate', me
.rstore
.stopUpdate
);
287 me
.mon(me
.getStore(), 'datachanged', function() {