add Realm model and RealmComboBox

copied from pve-manager, with adaptions for modern js
(let, parameter destructuring,...)

and dropped the not needed 'needOTP' method

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2020-05-15 10:19:26 +02:00 committed by Thomas Lamprecht
parent 82014ef6f1
commit 0391dee1a2
3 changed files with 88 additions and 0 deletions

View File

@ -16,6 +16,7 @@ JSSRC= \
data/ObjectStore.js \
data/RRDStore.js \
data/TimezoneStore.js \
data/model/Realm.js \
form/DisplayEdit.js \
form/ExpireDate.js \
form/IntegerField.js \
@ -28,6 +29,7 @@ JSSRC= \
form/RRDTypeSelector.js \
form/BondModeSelector.js \
form/NetworkSelector.js \
form/RealmComboBox.js \
button/Button.js \
button/HelpButton.js \
grid/ObjectGrid.js \

29
data/model/Realm.js Normal file
View File

@ -0,0 +1,29 @@
Ext.define('pmx-domains', {
extend: "Ext.data.Model",
fields: [
'realm', 'type', 'comment', 'default',
{
name: 'tfa',
allowNull: true,
},
{
name: 'descr',
convert: function(value, { data={} }) {
if (value) return Ext.String.htmlEncode(value);
let text = data.comment || data.realm;
if (data.tfa) {
text += ` (+ ${data.tfa})`;
}
return Ext.String.htmlEncode(text);
},
},
],
idProperty: 'realm',
proxy: {
type: 'proxmox',
url: "/api2/json/access/domains",
},
});

57
form/RealmComboBox.js Normal file
View File

@ -0,0 +1,57 @@
Ext.define('Proxmox.form.RealmComboBox', {
extend: 'Ext.form.field.ComboBox',
alias: 'widget.pmxRealmComboBox',
controller: {
xclass: 'Ext.app.ViewController',
init: function(view) {
view.store.on('load', this.onLoad, view);
},
onLoad: function(store, records, success) {
if (!success) {
return;
}
var me = this;
var val = me.getValue();
if (!val || !me.store.findRecord('realm', val)) {
var def = 'pam';
Ext.each(records, function(rec) {
if (rec.data && rec.data.default) {
def = rec.data.realm;
}
});
me.setValue(def);
}
},
},
fieldLabel: gettext('Realm'),
name: 'realm',
queryMode: 'local',
allowBlank: false,
editable: false,
forceSelection: true,
autoSelect: false,
triggerAction: 'all',
valueField: 'realm',
displayField: 'descr',
getState: function() {
return { value: this.getValue() };
},
applyState: function(state) {
if (state && state.value) {
this.setValue(state.value);
}
},
stateEvents: ['select'],
stateful: true, // last chosen auth realm is saved between page reloads
id: 'pveloginrealm', // We need stable ids when using stateful, not autogenerated
stateID: 'pveloginrealm',
store: {
model: 'pmx-domains',
autoLoad: true,
},
});