/**
 * Loads a grid of Role and User pairs.
 * 
 * @deprecated
 * 
 * @class MODx.grid.AccessResourceGroup
 * @extends MODx.grid.Grid
 * @param {Object} config An object of options.
 * @xtype modx-grid-roleuser
 */
MODx.grid.RoleUser = function(config) {
    config = config || {};
    Ext.applyIf(config,{
        title: _('role_users')
        ,url: MODx.config.connector_url
        ,fields: ['id','username','fullname','email']
        ,baseParams: {
            action: 'security/role/getUsers'
            ,role: config.role
        }
        ,autosave: true
        ,paging: true
        ,columns: [
            { header: _('id') ,dataIndex: 'id' ,width: 40 }
            ,{ header: _('username') ,dataIndex: 'username' ,width: 175 }
            ,{ header: _('name') ,dataIndex: 'fullname' ,width: 175 }
            ,{ header: _('email') ,dataIndex: 'email' ,width: 200 }
        ]
        ,tbar: this.getToolbar()
    });
    MODx.grid.RoleUser.superclass.constructor.call(this,config);
};
Ext.extend(MODx.grid.RoleUser,MODx.grid.Grid,{
    combos: {}
    /**
     * Runs a confirm dialog, and if proceeding, removes the modUser.   
     */
    ,removeUser: function() {
        MODx.msg.confirm({
            title: _('role_user_remove')
            ,text: _('role_user_confirm_remove')
            ,url: this.config.url
            ,params: {
                action: 'security/role/removeUser'
                ,user: this.menu.record.id
                ,role: this.config.role
            }
            ,listeners: {
                'success': {fn:this.refresh,scope:this}
            }
        });
    }
    /**
     * Adds a user to the role based upon the combobox value.
     */
    ,addUser: function(btn,e) {
        var user = Ext.getCmp('rugrid-combo-user').getValue();
        MODx.Ajax.request({
            url: this.config.url
            ,params: {
                action: 'security/role/addUser'
                ,role: this.config.role
                ,user: user
            }
            ,listeners: {
                'success': {fn:function(r) {
                    this.getStore().baseParams = {
                        action: 'security/role/getUsers'
                        ,role: this.config.role
                    };
                    Ext.getCmp('rugrid-combo-usergroup').setValue('');
                    this.refresh();
                },scope:this}
            }
        });
    }
    /**
     * Loads the context menu for the user-role pairing.
     */
    ,_loadMenu: function() {
        this.menu = new Ext.menu.Menu({ defaultAlign: 'tl-b?' });
        this.menu.add({
            text: _('role_user_remove')
            ,handler: this.removeUser
            ,scope: this
        });
    }
    /**
     * Returns the custom toolbar for the grid.
     */
	,getToolbar: function() {		
		return [
			_('role_user_add')+': '
			,{
                xtype: 'modx-combo-user'
                ,id: 'rugrid-combo-user'
            },{
				xtype: 'button'
				,text: 'Add'
				,scope: this
				,handler: this.addUser
			}
			,'->'
			,_('group')+': '
			,{
                xtype: 'modx-combo-usergroup'
                ,id: 'rugrid-combo-usergroup'
                ,listeners: {
                    'select': {fn:function(btn,e) {
                        this.store.baseParams = {
                            action: 'security/role/getUsers'
                            ,role: this.config.role
                            ,group: Ext.getCmp('rugrid-combo-usergroup').getValue()
                        };
                        this.refresh();
                    },scope:this}
                }
            },{
				xtype: 'button'
				,text: _('clear_filter')
				,scope: this
				,handler: function(btn,e) {
					this.getStore().baseParams = { 
						action: 'security/role/getUsers'
						,role: this.config.role
					};
                    Ext.getCmp('rugrid-combo-usergroup').setValue('');
					this.getStore().load();
				}
			}		
		];
	}
});
Ext.reg('modx-grid-roleuser',MODx.grid.RoleUser);
