MODx.panel.Users=function(config){config=config||{};Ext.applyIf(config,{id:'modx-panel-users',cls:'container',bodyStyle:'',defaults:{collapsible:false,autoHeight:true},items:[{html:'

'+_('users')+'

',border:false,id:'modx-users-header',cls:'modx-page-header'},{layout:'form',items:[{html:'

'+_('user_management_msg')+'

',bodyCssClass:'panel-desc',border:false},{xtype:'modx-grid-user',cls:'main-wrapper',preventRender:true}]}]});MODx.panel.Users.superclass.constructor.call(this,config);};Ext.extend(MODx.panel.Users,MODx.FormPanel);Ext.reg('modx-panel-users',MODx.panel.Users);MODx.grid.User=function(config){config=config||{};this.sm=new Ext.grid.CheckboxSelectionModel();Ext.applyIf(config,{url:MODx.config.connector_url,baseParams:{action:'security/user/getList',usergroup:MODx.request['usergroup']?MODx.request['usergroup']:''},fields:['id','username','fullname','email','gender','blocked','role','active','cls'],paging:true,autosave:true,save_action:'security/user/updatefromgrid',remoteSort:true,viewConfig:{forceFit:true,enableRowBody:true,scrollOffset:0,autoFill:true,showPreview:true,getRowClass:function(rec){return rec.data.active?'grid-row-active':'grid-row-inactive';}},sm:this.sm,columns:[this.sm,{header:_('id'),dataIndex:'id',width:50,sortable:true},{header:_('name'),dataIndex:'username',width:150,sortable:true,renderer:function(value,p,record){return String.format('{2}',record.id,_('user_update'),Ext.util.Format.htmlEncode(value));}},{header:_('user_full_name'),dataIndex:'fullname',width:180,sortable:true,editor:{xtype:'textfield'},renderer:Ext.util.Format.htmlEncode},{header:_('email'),dataIndex:'email',width:180,sortable:true,editor:{xtype:'textfield'}},{header:_('active'),dataIndex:'active',width:80,sortable:true,editor:{xtype:'combo-boolean',renderer:'boolean'}},{header:_('user_block'),dataIndex:'blocked',width:80,sortable:true,editor:{xtype:'combo-boolean',renderer:'boolean'}}],tbar:[{text:_('user_new'),handler:this.createUser,scope:this,cls:'primary-button'},{text:_('bulk_actions'),menu:[{text:_('selected_activate'),handler:this.activateSelected,scope:this},{text:_('selected_deactivate'),handler:this.deactivateSelected,scope:this},{text:_('selected_remove'),handler:this.removeSelected,scope:this}]},'->',{xtype:'modx-combo-usergroup',name:'usergroup',id:'modx-user-filter-usergroup',itemId:'usergroup',emptyText:_('user_group')+'...',baseParams:{action:'security/group/getList',addAll:true},value:MODx.request['usergroup']?MODx.request['usergroup']:'',width:200,listeners:{'select':{fn:this.filterUsergroup,scope:this}}},{xtype:'textfield',name:'search',id:'modx-user-search',cls:'x-form-filter',emptyText:_('search_ellipsis'),listeners:{'change':{fn:this.search,scope:this},'render':{fn:function(cmp){new Ext.KeyMap(cmp.getEl(),{key:Ext.EventObject.ENTER,fn:this.blur,scope:cmp});},scope:this}}},{xtype:'button',id:'modx-filter-clear',cls:'x-form-filter-clear',text:_('filter_clear'),listeners:{'click':{fn:this.clearFilter,scope:this}}}]});MODx.grid.User.superclass.constructor.call(this,config);this.on('afterAutoSave',function(result){if(!result.success){var msg=result.data[0].msg||_('user_err_save');MODx.msg.alert(_('error'),msg);}});};Ext.extend(MODx.grid.User,MODx.grid.Grid,{getMenu:function(){var r=this.getSelectionModel().getSelected();var p=r.data.cls;var m=[];if(this.getSelectionModel().getCount()>1){m.push({text:_('selected_activate'),handler:this.activateSelected,scope:this});m.push({text:_('selected_deactivate'),handler:this.deactivateSelected,scope:this});m.push('-');m.push({text:_('selected_remove'),handler:this.removeSelected,scope:this});}else{if(p.indexOf('pupdate')!=-1){m.push({text:_('user_update'),handler:this.updateUser});} if(p.indexOf('pcopy')!=-1){if(m.length>0)m.push('-');m.push({text:_('user_duplicate'),handler:this.duplicateUser});} if(p.indexOf('premove')!=-1){if(m.length>0)m.push('-');m.push({text:_('user_remove'),handler:this.removeUser});}} if(m.length>0){this.addContextMenuItem(m);}},createUser:function(){MODx.loadPage('security/user/create');},activateSelected:function(){var cs=this.getSelectedAsList();if(cs===false)return false;MODx.Ajax.request({url:this.config.url,params:{action:'security/user/activateMultiple',users:cs},listeners:{'success':{fn:function(r){this.getSelectionModel().clearSelections(true);this.refresh();},scope:this}}});return true;},deactivateSelected:function(){var cs=this.getSelectedAsList();if(cs===false)return false;MODx.Ajax.request({url:this.config.url,params:{action:'security/user/deactivateMultiple',users:cs},listeners:{'success':{fn:function(r){this.getSelectionModel().clearSelections(true);this.refresh();},scope:this}}});return true;},removeSelected:function(){var cs=this.getSelectedAsList();if(cs===false)return false;MODx.msg.confirm({title:_('user_remove_multiple'),text:_('user_remove_multiple_confirm'),url:this.config.url,params:{action:'security/user/removeMultiple',users:cs},listeners:{'success':{fn:function(r){this.getSelectionModel().clearSelections(true);this.refresh();},scope:this}}});return true;},removeUser:function(){MODx.msg.confirm({title:_('user_remove'),text:_('user_confirm_remove'),url:this.config.url,params:{action:'security/user/delete',id:this.menu.record.id},listeners:{'success':{fn:this.refresh,scope:this}}});},duplicateUser:function(){MODx.Ajax.request({url:this.config.url,params:{action:'security/user/duplicate',id:this.menu.record.id},listeners:{'success':{fn:this.refresh,scope:this}}});},updateUser:function(){MODx.loadPage('security/user/update','id='+this.menu.record.id);},rendGender:function(d,c){switch(d.toString()){case'0':return'-';case'1':return _('male');case'2':return _('female');}},filterUsergroup:function(cb,nv,ov){this.getStore().baseParams.usergroup=Ext.isEmpty(nv)||Ext.isObject(nv)?cb.getValue():nv;this.getBottomToolbar().changePage(1);this.refresh();return true;},search:function(tf,newValue,oldValue){var nv=newValue||tf;this.getStore().baseParams.query=Ext.isEmpty(nv)||Ext.isObject(nv)?'':nv;this.getBottomToolbar().changePage(1);return true;},clearFilter:function(){this.getStore().baseParams={action:'security/user/getList'};Ext.getCmp('modx-user-search').reset();Ext.getCmp('modx-user-filter-usergroup').reset();this.getBottomToolbar().changePage(1);this.refresh();}});Ext.reg('modx-grid-user',MODx.grid.User);;MODx.page.Users=function(config){config=config||{};Ext.applyIf(config,{components:[{xtype:'modx-panel-users'}],buttons:[{text:_('help_ex'),id:'modx-abtn-help',handler:MODx.loadHelpPane}]});MODx.page.Users.superclass.constructor.call(this,config);};Ext.extend(MODx.page.Users,MODx.Component);Ext.reg('modx-page-users',MODx.page.Users);