pve-manager/www/manager/dc/UserView.js
2012-01-11 13:12:23 +01:00

188 lines
3.5 KiB
JavaScript

Ext.define('PVE.dc.UserView', {
extend: 'Ext.grid.GridPanel',
alias: ['widget.pveUserView'],
initComponent : function() {
var me = this;
var store = new Ext.data.Store({
id: "users",
model: 'pve-users',
sorters: {
property: 'userid',
order: 'DESC'
}
});
var reload = function() {
store.load();
};
var remove_btn = new Ext.Button({
text: 'Delete',
disabled: true,
handler: function() {
var msg;
var sm = me.getSelectionModel();
var rec = sm.getSelection()[0];
if (!rec) {
return;
}
var userid = rec.data.userid;
msg = 'Are you sure you want to permanently delete the user: ' + userid;
Ext.Msg.confirm('Deletion Confirmation', msg, function(btn) {
if (btn !== 'yes') {
return;
}
PVE.Utils.API2Request({
url: '/access/users/' + userid,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert('Error',response.htmlStatus);
}
});
});
}
});
var run_editor = function() {
var sm = me.getSelectionModel();
var rec = sm.getSelection()[0];
if (!rec) {
return;
}
var win = Ext.create('PVE.dc.UserEdit',{
userid: rec.data.userid
});
win.on('destroy', reload);
win.show();
};
var edit_btn = new Ext.Button({
text: 'Modify',
disabled: true,
handler: run_editor
});
var set_button_status = function() {
var sm = me.getSelectionModel();
var rec = sm.getSelection()[0];
if (!rec) {
remove_btn.disable();
edit_btn.disable();
return;
}
edit_btn.setDisabled(false);
remove_btn.setDisabled(rec.data.userid === 'root@pam');
};
var tbar = [
{
text: 'Create',
handler: function() {
var win = Ext.create('PVE.dc.UserEdit',{
});
win.on('destroy', reload);
win.show();
}
},
edit_btn, remove_btn
];
var render_expire = function(date) {
if (!date) {
return 'never';
}
return Ext.Date.format(date, "Y-m-d");
};
var render_full_name = function(firstname, metaData, record) {
var first = firstname || '';
var last = record.data.lastname || '';
return first + " " + last;
};
var render_username = function(userid) {
return userid.match(/^([^@]+)/)[1];
};
var render_realm = function(userid) {
return userid.match(/@([^@]+)$/)[1];
};
Ext.apply(me, {
store: store,
stateful: false,
tbar: tbar,
viewConfig: {
trackOver: false
},
columns: [
{
header: 'User name',
width: 200,
sortable: true,
renderer: render_username,
dataIndex: 'userid'
},
{
header: 'Realm',
width: 100,
sortable: true,
renderer: render_realm,
dataIndex: 'userid'
},
{
header: 'Enabled',
width: 80,
sortable: true,
dataIndex: 'enable'
},
{
header: 'Expire',
width: 80,
sortable: true,
renderer: render_expire,
dataIndex: 'expire'
},
{
header: 'Name',
width: 150,
sortable: true,
renderer: render_full_name,
dataIndex: 'firstname'
},
{
id: 'comment',
header: 'Comment',
sortable: false,
dataIndex: 'comment',
flex: 1
}
],
listeners: {
show: reload,
itemdblclick: run_editor,
selectionchange: set_button_status
}
});
me.callParent();
}
});