]>
Commit | Line | Data |
---|---|---|
7690de6e DM |
1 | /*jslint confusion: true */ |
2 | Ext.define('PVE.openvz.DNS', { | |
3 | extend: 'PVE.grid.ObjectGrid', | |
4 | alias: ['widget.pveOpenVZDNS'], | |
5 | ||
6 | initComponent : function() { | |
7 | var me = this; | |
8 | var i; | |
9 | ||
10 | var nodename = me.pveSelNode.data.node; | |
11 | if (!nodename) { | |
12 | throw "no node name specified"; | |
13 | } | |
14 | ||
15 | var vmid = me.pveSelNode.data.vmid; | |
16 | if (!vmid) { | |
17 | throw "no VM ID specified"; | |
18 | } | |
19 | ||
8fb7d745 DM |
20 | var caps = Ext.state.Manager.get('GuiCap'); |
21 | ||
7690de6e DM |
22 | var rows = { |
23 | hostname: { | |
24 | required: true, | |
25 | defaultValue: me.pveSelNode.data.name, | |
0070ee37 | 26 | header: gettext('Hostname'), |
8fb7d745 | 27 | editor: caps.vms['VM.Config.Network'] ? { |
7690de6e | 28 | xtype: 'pveWindowEdit', |
0070ee37 | 29 | subject: gettext('Hostname'), |
7690de6e DM |
30 | items: { |
31 | xtype: 'textfield', | |
32 | name: 'hostname', | |
b2fe56d8 | 33 | vtype: 'DnsName', |
7690de6e | 34 | value: '', |
0070ee37 | 35 | fieldLabel: gettext('Hostname'), |
7690de6e DM |
36 | allowBlank: true, |
37 | emptyText: me.pveSelNode.data.name | |
38 | } | |
8fb7d745 | 39 | } : undefined |
7690de6e DM |
40 | }, |
41 | searchdomain: { | |
0070ee37 | 42 | header: gettext('DNS domain'), |
7690de6e | 43 | defaultValue: '', |
8fb7d745 | 44 | editor: caps.vms['VM.Config.Network'] ? { |
7690de6e | 45 | xtype: 'pveWindowEdit', |
0070ee37 | 46 | subject: gettext('DNS domain'), |
7690de6e DM |
47 | items: { |
48 | xtype: 'pvetextfield', | |
49 | name: 'searchdomain', | |
0070ee37 | 50 | fieldLabel: gettext('DNS domain'), |
7690de6e DM |
51 | allowBlank: false |
52 | } | |
8fb7d745 | 53 | } : undefined |
7690de6e DM |
54 | }, |
55 | nameserver: { | |
e4e3bdd4 | 56 | header: gettext('DNS server'), |
7690de6e | 57 | defaultValue: '', |
8fb7d745 | 58 | editor: caps.vms['VM.Config.Network'] ? { |
7690de6e | 59 | xtype: 'pveWindowEdit', |
f3bb9bb6 | 60 | subject: gettext('DNS server'), |
7690de6e DM |
61 | items: { |
62 | xtype: 'pvetextfield', | |
63 | name: 'nameserver', | |
e4e3bdd4 | 64 | fieldLabel: gettext('DNS server'), |
7690de6e DM |
65 | allowBlank: false |
66 | } | |
8fb7d745 | 67 | } : undefined |
7690de6e DM |
68 | } |
69 | }; | |
70 | ||
71 | var baseurl = 'nodes/' + nodename + '/openvz/' + vmid + '/config'; | |
72 | ||
73 | var reload = function() { | |
74 | me.rstore.load(); | |
75 | }; | |
76 | ||
f3bb9bb6 DM |
77 | var sm = Ext.create('Ext.selection.RowModel', {}); |
78 | ||
7690de6e | 79 | var run_editor = function() { |
7690de6e DM |
80 | var rec = sm.getSelection()[0]; |
81 | if (!rec) { | |
82 | return; | |
83 | } | |
84 | ||
85 | var rowdef = rows[rec.data.key]; | |
86 | if (!rowdef.editor) { | |
87 | return; | |
88 | } | |
89 | ||
90 | var config = Ext.apply({ | |
91 | pveSelNode: me.pveSelNode, | |
92 | confid: rec.data.key, | |
93 | url: '/api2/extjs/' + baseurl | |
94 | }, rowdef.editor); | |
95 | var win = Ext.createWidget(rowdef.editor.xtype, config); | |
96 | win.load(); | |
97 | ||
98 | win.show(); | |
99 | win.on('destroy', reload); | |
100 | }; | |
101 | ||
f3bb9bb6 DM |
102 | var edit_btn = new PVE.button.Button({ |
103 | text: gettext('Edit'), | |
7690de6e | 104 | disabled: true, |
f3bb9bb6 DM |
105 | selModel: sm, |
106 | enableFn: function(rec) { | |
107 | var rowdef = rows[rec.data.key]; | |
108 | return !!rowdef.editor; | |
109 | }, | |
7690de6e DM |
110 | handler: run_editor |
111 | }); | |
112 | ||
113 | var set_button_status = function() { | |
114 | var sm = me.getSelectionModel(); | |
115 | var rec = sm.getSelection()[0]; | |
116 | ||
117 | if (!rec) { | |
118 | edit_btn.disable(); | |
119 | return; | |
120 | } | |
121 | var rowdef = rows[rec.data.key]; | |
122 | edit_btn.setDisabled(!rowdef.editor); | |
123 | }; | |
124 | ||
125 | Ext.applyIf(me, { | |
126 | url: "/api2/json/nodes/" + nodename + "/openvz/" + vmid + "/config", | |
f3bb9bb6 | 127 | selModel: sm, |
7690de6e DM |
128 | cwidth1: 150, |
129 | tbar: [ edit_btn ], | |
130 | rows: rows, | |
131 | listeners: { | |
132 | itemdblclick: run_editor, | |
133 | selectionchange: set_button_status | |
134 | } | |
135 | }); | |
136 | ||
137 | me.callParent(); | |
138 | ||
139 | me.on('show', reload); | |
140 | } | |
141 | }); | |
142 |