1
// kate: space-indent on; indent-width 2; replace-tabs on;
3
Ext.namespace('Ext.ux');
5
Ext.ux.UserEditorPanel = function( config ){
6
Ext.apply( this, config );
8
userRecord = Ext.data.Record.create([
9
{ name: 'id', type: 'int' },
10
{ name: 'name', type: 'string' },
11
{ name: 'password', type: 'string' },
12
{ name: 'owner', type: 'int' },
13
{ name: 'admin', type: 'bool' },
14
{ name: 'delete', type: 'bool' }
17
userAdminStore = new Ext.data.DirectStore({
18
baseParams: { server: this.server, resync: false },
19
directFn: MumbleUserAdmin.users,
21
paramOrder: ['server', 'resync'],
26
adminColumn = new Ext.grid.CheckColumn({
27
header: gettext("Admin on root channel"),
32
deleteColumn = new Ext.grid.CheckColumn({
33
header: gettext("Delete"),
38
ownerCombo = new Ext.form.ComboBox({
40
hiddenName: 'owner_id',
44
displayField: 'uname',
45
store: new Ext.data.DirectStore({
46
directFn: MumbleUserAdmin.djangousers,
47
fields: [ 'uid', 'uname' ],
53
title: gettext("User List"),
54
store: userAdminStore,
55
viewConfig: { forceFit: true },
57
cm: new Ext.grid.ColumnModel( [ {
58
header: gettext("name"),
61
editor: new Ext.form.TextField({
65
header: gettext("Account owner"),
69
renderer: function( value ){
70
if( value == '' ) return '';
71
items = ownerCombo.store.data.items;
72
for( i = 0; i < items.length; i++ )
73
if( items[i].data.uid == value )
74
return items[i].data.uname;
77
header: gettext("Change password"),
78
dataIndex: 'password',
79
editor: new Ext.form.TextField({
82
renderer: function( value ){
84
for( i = 0; i < value.length; i++ )
93
userAdminStore.add( new userRecord( {
95
name: gettext('New User'),
103
text: gettext("Save"),
105
handler : function(){
107
for( i = 0; i < userAdminStore.data.items.length; i++ ){
108
var rec = userAdminStore.data.items[i];
113
MumbleUserAdmin.update( this.server, data, function(provider, response){
114
if( response.result.success ){
115
for( i = 0; i < userAdminStore.data.items.length; i++ ){
116
rec = userAdminStore.data.items[i];
117
if( rec.data['delete'] == true )
118
userAdminStore.remove( rec );
119
else if( rec.dirty ){
126
title: gettext("Submit error"),
127
msg: gettext("Unable to save."),
128
icon: Ext.MessageBox.ERROR,
129
buttons: Ext.MessageBox.OK
135
text: gettext("Refresh"),
137
userAdminStore.reload({
138
params: { 'resync': false }
142
text: gettext("Resync with Murmur"),
144
userAdminStore.reload({
145
params: { 'resync': true }
149
plugins: [ adminColumn, deleteColumn ]
151
Ext.ux.UserEditorPanel.superclass.constructor.call( this );
154
Ext.extend( Ext.ux.UserEditorPanel, Ext.grid.EditorGridPanel, {
157
Ext.reg( 'userEditorPanel', Ext.ux.UserEditorPanel );