manager/assets/modext/widgets/security/modx.grid.access.context.js
/**
* Loads a grid of modAccessContexts.
*
* @class MODx.grid.AccessContext
* @extends MODx.grid.Grid
* @param {Object} config An object of options.
* @xtype modx-grid-access-context
*/
MODx.grid.AccessContext = function(config) {
config = config || {};
Ext.applyIf(config,{
id: 'modx-grid-access-context'
,url: MODx.config.connector_url
,baseParams: {
action: 'security/access/getList'
,type: config.type || 'modAccessContext'
,target: config.context_key
}
,fields: ['id','target','target_name','principal_class','principal','principal_name','authority','policy','policy_name','cls']
,type: 'modAccessContext'
,paging: true
,columns: [
{ header: _('context') ,dataIndex: 'target_name' ,width: 100 }
,{ header: _('user_group') ,dataIndex: 'principal_name' ,width: 120 }
,{ header: _('authority') ,dataIndex: 'authority' ,width: 50 }
,{ header: _('policy') ,dataIndex: 'policy_name' ,width: 175 }
]
,tbar: [{
text: _('acl_add')
,cls: 'primary-button'
,scope: this
,handler: this.createAcl
}]
});
MODx.grid.AccessContext.superclass.constructor.call(this,config);
};
Ext.extend(MODx.grid.AccessContext,MODx.grid.Grid,{
combos: {}
,windows: {}
,getMenu: function() {
var r = this.getSelectionModel().getSelected();
var p = r.data.cls;
var m = [];
if (this.getSelectionModel().getCount() > 1) {
} else {
if (p.indexOf('pedit') != -1) {
m.push({
text: _('edit')
,handler: this.editAcl
});
}
if (p.indexOf('premove') != -1) {
if (m.length > 0) { m.push('-'); }
m.push({
text: _('remove')
,handler: this.removeAcl
});
}
}
if (m.length > 0) {
this.addContextMenuItem(m);
}
}
,createAcl: function(itm,e) {
var r = {
target: this.config.context_key
,principal_class: 'modUserGroup'
};
if (!this.windows.create_acl) {
this.windows.create_acl = MODx.load({
xtype: 'modx-window-access-context-create'
,record: r
,listeners: {
'success': {fn:function(o) {
this.refresh();
},scope:this}
}
});
}
this.windows.create_acl.fp.getForm().reset();
this.windows.create_acl.setValues(r);
this.windows.create_acl.show(e.target);
}
,editAcl: function(itm,e) {
var r = this.menu.record;
Ext.applyIf(r,{
context: r.target
,user_group: r.principal
});
if (!this.windows.update_acl) {
this.windows.update_acl = MODx.load({
xtype: 'modx-window-access-context-update'
,acl: r.id
,record: r
,listeners: {
'success': {fn:this.refresh,scope:this}
}
});
}
this.windows.update_acl.setValues(r);
this.windows.update_acl.show(e.target);
}
,removeAcl: function(itm,e) {
MODx.msg.confirm({
title: _('ugc_remove')
,text: _('access_confirm_remove')
,url: this.config.url
,params: {
action: 'security/access/removeAcl'
,id: this.menu.record.id
,type: this.config.type || 'modAccessContext'
}
,listeners: {
'success': {fn:this.refresh,scope:this}
}
});
}
});
Ext.reg('modx-grid-access-context',MODx.grid.AccessContext);
MODx.window.CreateAccessContext = function(config) {
config = config || {};
var r = config.record;
Ext.applyIf(config,{
title: _('ugc_mutate')
,url: MODx.config.connector_url
,baseParams: {
action: 'security/access/addAcl'
,type: config.type || 'modAccessContext'
}
// ,height: 250
// ,width: 350
,type: 'modAccessContext'
,acl: 0
,fields: [{
xtype: 'hidden'
,name: 'id'
,value: r.id || ''
},{
xtype: 'hidden'
,name: 'target'
,value: r.context || ''
},{
xtype: 'hidden'
,name: 'principal_class'
,value: 'modUserGroup'
},{
xtype: 'modx-combo-usergroup'
,fieldLabel: _('user_group')
,name: 'principal'
,hiddenName: 'principal'
,anchor: '100%'
,value: r.principal || ''
,baseParams: {
action: 'security/group/getList'
,combo: true
}
},{
xtype: 'modx-combo-policy'
,fieldLabel: _('policy')
,name: 'policy'
,hiddenName: 'policy'
,value: r.policy || ''
,anchor: '100%'
},{
xtype: 'textfield'
,fieldLabel: _('authority')
,name: 'authority'
// ,width: 75
,anchor: '100%'
,value: r.authority || ''
}]
});
MODx.window.CreateAccessContext.superclass.constructor.call(this,config);
};
Ext.extend(MODx.window.CreateAccessContext,MODx.Window);
Ext.reg('modx-window-access-context-create',MODx.window.CreateAccessContext);
MODx.window.UpdateAccessContext = function(config) {
config = config || {};
var r = config.record;
this.ident = config.ident || 'uactx'+Ext.id();
Ext.applyIf(config,{
title: _('ugc_mutate')
,baseParams: {
action: 'security/access/updateAcl'
,type: config.type || 'modAccessContext'
}
});
MODx.window.UpdateAccessContext.superclass.constructor.call(this,config);
};
Ext.extend(MODx.window.UpdateAccessContext,MODx.window.CreateAccessContext);
Ext.reg('modx-window-access-context-update',MODx.window.UpdateAccessContext);