]>
Commit | Line | Data |
---|---|---|
ca9a198a WL |
1 | Ext.define('PVE.storage.CIFSScan', { |
2 | extend: 'Ext.form.field.ComboBox', | |
3 | alias: 'widget.pveCIFSScan', | |
4 | ||
5 | queryParam: 'server', | |
6 | ||
7 | valueField: 'share', | |
8 | displayField: 'share', | |
9 | matchFieldWidth: false, | |
10 | listConfig: { | |
11 | loadingText: gettext('Scanning...'), | |
12 | width: 350 | |
13 | }, | |
14 | doRawQuery: function() { | |
15 | }, | |
16 | ||
17 | onTriggerClick: function() { | |
18 | var me = this; | |
19 | ||
20 | if (!me.queryCaching || me.lastQuery !== me.cifsServer) { | |
21 | me.store.removeAll(); | |
22 | } | |
23 | ||
24 | var params = {}; | |
25 | if (me.cifsUsername && me.cifsPassword) { | |
26 | params.username = me.cifsUsername; | |
27 | params.password = me.cifsPassword; | |
28 | } | |
29 | ||
30 | if (me.cifsDomain) { | |
31 | params.domain = me.cifsDomain; | |
32 | } | |
33 | ||
34 | me.store.getProxy().setExtraParams(params); | |
35 | me.allQuery = me.cifsServer; | |
36 | ||
37 | me.callParent(); | |
38 | }, | |
39 | ||
40 | setServer: function(server) { | |
41 | var me = this; | |
42 | ||
43 | me.cifsServer = server; | |
44 | }, | |
45 | ||
46 | setUsername: function(username) { | |
47 | var me = this; | |
48 | ||
49 | me.cifsUsername = username; | |
50 | }, | |
51 | ||
52 | setPassword: function(password) { | |
53 | var me = this; | |
54 | ||
55 | me.cifsPassword = password; | |
56 | }, | |
57 | ||
58 | setDomain: function(domain) { | |
59 | var me = this; | |
60 | ||
61 | me.cifsDomain = domain; | |
62 | }, | |
63 | ||
64 | initComponent : function() { | |
65 | var me = this; | |
66 | ||
67 | if (!me.nodename) { | |
68 | me.nodename = 'localhost'; | |
69 | } | |
70 | ||
71 | var store = Ext.create('Ext.data.Store', { | |
72 | fields: ['description', 'share'], | |
73 | proxy: { | |
74 | type: 'proxmox', | |
75 | url: '/api2/json/nodes/' + me.nodename + '/scan/cifs' | |
76 | } | |
77 | }); | |
78 | store.sort('share', 'ASC'); | |
79 | ||
80 | Ext.apply(me, { | |
81 | store: store | |
82 | }); | |
83 | ||
84 | me.callParent(); | |
85 | } | |
86 | }); | |
87 | ||
88 | Ext.define('PVE.storage.CIFSInputPanel', { | |
f28ec3e4 | 89 | extend: 'PVE.panel.StorageBase', |
ca9a198a WL |
90 | |
91 | initComponent : function() { | |
92 | var me = this; | |
93 | ||
94 | var passwordfield = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', { | |
95 | inputType: 'password', | |
96 | name: 'password', | |
97 | value: me.isCreate ? '' : '********', | |
98 | fieldLabel: gettext('Password'), | |
99 | allowBlank: true, | |
100 | minLength: 1, | |
101 | listeners: { | |
102 | change: function(f, value) { | |
103 | ||
104 | if (me.isCreate) { | |
105 | var exportField = me.down('field[name=share]'); | |
106 | exportField.setPassword(value); | |
107 | } | |
108 | } | |
109 | } | |
110 | }); | |
111 | ||
112 | me.column1 = [ | |
ca9a198a WL |
113 | { |
114 | xtype: me.isCreate ? 'textfield' : 'displayfield', | |
115 | name: 'server', | |
116 | value: '', | |
117 | fieldLabel: gettext('Server'), | |
118 | allowBlank: false, | |
119 | listeners: { | |
120 | change: function(f, value) { | |
121 | if (me.isCreate) { | |
122 | var exportField = me.down('field[name=share]'); | |
123 | exportField.setServer(value); | |
124 | } | |
125 | } | |
126 | } | |
127 | }, | |
128 | { | |
129 | xtype: me.isCreate ? 'textfield' : 'displayfield', | |
130 | name: 'username', | |
131 | value: '', | |
132 | fieldLabel: gettext('Username'), | |
133 | emptyText: gettext('Guest user'), | |
134 | allowBlank: true, | |
135 | listeners: { | |
136 | change: function(f, value) { | |
137 | if (me.isCreate) { | |
138 | var exportField = me.down('field[name=share]'); | |
139 | exportField.setUsername(value); | |
140 | } | |
141 | if (value == "") { | |
142 | passwordfield.allowBlank = true; | |
143 | } else { | |
144 | passwordfield.allowBlank = false; | |
145 | } | |
146 | passwordfield.validate(); | |
147 | } | |
148 | } | |
149 | }, | |
150 | { | |
151 | xtype: me.isCreate ? 'pveCIFSScan' : 'displayfield', | |
152 | name: 'share', | |
153 | value: '', | |
154 | fieldLabel: 'Share', | |
155 | allowBlank: false | |
156 | }, | |
157 | { | |
158 | xtype: 'pveContentTypeSelector', | |
159 | name: 'content', | |
160 | value: 'images', | |
161 | multiSelect: true, | |
162 | fieldLabel: gettext('Content'), | |
163 | allowBlank: false | |
164 | } | |
165 | ]; | |
166 | ||
167 | me.column2 = [ | |
ca9a198a WL |
168 | { |
169 | xtype: 'proxmoxintegerfield', | |
170 | fieldLabel: gettext('Max Backups'), | |
171 | name: 'maxfiles', | |
172 | reference: 'maxfiles', | |
173 | minValue: 0, | |
174 | maxValue: 365, | |
175 | value: me.isCreate ? '1' : undefined, | |
176 | allowBlank: false | |
177 | }, | |
178 | passwordfield, | |
179 | { | |
180 | xtype: me.isCreate ? 'textfield' : 'displayfield', | |
181 | name: 'domain', | |
182 | value: me.isCreate ? '' : undefined, | |
183 | fieldLabel: gettext('Domain'), | |
184 | allowBlank: true, | |
185 | listeners: { | |
186 | change: function(f, value) { | |
187 | if (me.isCreate) { | |
188 | ||
189 | var exportField = me.down('field[name=share]'); | |
190 | exportField.setDomain(value); | |
191 | } | |
192 | } | |
193 | } | |
194 | } | |
195 | ]; | |
196 | ||
197 | me.callParent(); | |
198 | } | |
199 | }); |