mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-13 08:55:44 +01:00
improve permission grid autocomplete
This commit is contained in:
@@ -136,5 +136,25 @@ function logout(){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var userSearchStore = new Ext.data.JsonStore({
|
||||||
|
root: 'results',
|
||||||
|
idProperty: 'value',
|
||||||
|
fields: ['value','label'],
|
||||||
|
proxy: new Ext.data.HttpProxy({
|
||||||
|
url: restUrl + 'search/users.json',
|
||||||
|
method: 'GET'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var groupSearchStore = new Ext.data.JsonStore({
|
||||||
|
root: 'results',
|
||||||
|
idProperty: 'value',
|
||||||
|
fields: ['value','label'],
|
||||||
|
proxy: new Ext.data.HttpProxy({
|
||||||
|
url: restUrl + 'search/groups.json',
|
||||||
|
method: 'GET'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
// enable extjs quicktips
|
// enable extjs quicktips
|
||||||
Ext.QuickTips.init();
|
Ext.QuickTips.init();
|
||||||
|
|||||||
@@ -141,16 +141,6 @@ Sonia.group.FormPanel = Ext.extend(Sonia.rest.FormPanel,{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var memberSearchStore = new Ext.data.JsonStore({
|
|
||||||
root: 'results',
|
|
||||||
idProperty: 'value',
|
|
||||||
fields: ['value','label'],
|
|
||||||
proxy: new Ext.data.HttpProxy({
|
|
||||||
url: restUrl + 'search/users.json',
|
|
||||||
method: 'GET'
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
var memberColModel = new Ext.grid.ColumnModel({
|
var memberColModel = new Ext.grid.ColumnModel({
|
||||||
defaults: {
|
defaults: {
|
||||||
sortable: true
|
sortable: true
|
||||||
@@ -160,7 +150,7 @@ Sonia.group.FormPanel = Ext.extend(Sonia.rest.FormPanel,{
|
|||||||
header: 'Member',
|
header: 'Member',
|
||||||
dataIndex: 'member',
|
dataIndex: 'member',
|
||||||
editor: new Ext.form.ComboBox({
|
editor: new Ext.form.ComboBox({
|
||||||
store: memberSearchStore,
|
store: userSearchStore,
|
||||||
displayField: 'label',
|
displayField: 'label',
|
||||||
valueField: 'value',
|
valueField: 'value',
|
||||||
typeAhead: true,
|
typeAhead: true,
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ Sonia.repository.FormPanel = Ext.extend(Sonia.rest.FormPanel,{
|
|||||||
|
|
||||||
update = this.item != null;
|
update = this.item != null;
|
||||||
|
|
||||||
this.permissionStore = new Ext.data.JsonStore({
|
var permissionStore = new Ext.data.JsonStore({
|
||||||
root: 'permissions',
|
root: 'permissions',
|
||||||
fields: [
|
fields: [
|
||||||
{name: 'name'},
|
{name: 'name'},
|
||||||
@@ -178,16 +178,7 @@ Sonia.repository.FormPanel = Ext.extend(Sonia.rest.FormPanel,{
|
|||||||
field: 'name'
|
field: 'name'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
this.permissionStore = permissionStore;
|
||||||
var searchStore = new Ext.data.JsonStore({
|
|
||||||
root: 'results',
|
|
||||||
idProperty: 'value',
|
|
||||||
fields: ['value','label'],
|
|
||||||
proxy: new Ext.data.HttpProxy({
|
|
||||||
url: restUrl + 'search/users.json',
|
|
||||||
method: 'GET'
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
var permissionColModel = new Ext.grid.ColumnModel({
|
var permissionColModel = new Ext.grid.ColumnModel({
|
||||||
defaults: {
|
defaults: {
|
||||||
@@ -203,17 +194,7 @@ Sonia.repository.FormPanel = Ext.extend(Sonia.rest.FormPanel,{
|
|||||||
id: 'name',
|
id: 'name',
|
||||||
header: 'Name',
|
header: 'Name',
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
editor: new Ext.form.ComboBox({
|
editable: true
|
||||||
store: searchStore,
|
|
||||||
displayField: 'label',
|
|
||||||
valueField: 'value',
|
|
||||||
typeAhead: true,
|
|
||||||
mode: 'remote',
|
|
||||||
queryParam: 'query',
|
|
||||||
hideTrigger: true,
|
|
||||||
selectOnFocus:true,
|
|
||||||
width: 250
|
|
||||||
})
|
|
||||||
},{
|
},{
|
||||||
id: 'type',
|
id: 'type',
|
||||||
header: 'Type',
|
header: 'Type',
|
||||||
@@ -235,7 +216,37 @@ Sonia.repository.FormPanel = Ext.extend(Sonia.rest.FormPanel,{
|
|||||||
]
|
]
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}]
|
}],
|
||||||
|
|
||||||
|
getCellEditor: function(colIndex, rowIndex) {
|
||||||
|
if (colIndex == 1) {
|
||||||
|
var store = null;
|
||||||
|
var rec = permissionStore.getAt(rowIndex);
|
||||||
|
if ( rec.data.groupPermission ){
|
||||||
|
if (debug){
|
||||||
|
console.debug( "using groupSearchStore" );
|
||||||
|
}
|
||||||
|
store = groupSearchStore;
|
||||||
|
} else {
|
||||||
|
if (debug){
|
||||||
|
console.debug( "using userSearchStore" );
|
||||||
|
}
|
||||||
|
store = userSearchStore;
|
||||||
|
}
|
||||||
|
return new Ext.grid.GridEditor(new Ext.form.ComboBox({
|
||||||
|
store: store,
|
||||||
|
displayField: 'label',
|
||||||
|
valueField: 'value',
|
||||||
|
typeAhead: true,
|
||||||
|
mode: 'remote',
|
||||||
|
queryParam: 'query',
|
||||||
|
hideTrigger: true,
|
||||||
|
selectOnFocus:true,
|
||||||
|
width: 250
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
return Ext.grid.ColumnModel.prototype.getCellEditor.call(this, colIndex, rowIndex);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if ( update ){
|
if ( update ){
|
||||||
|
|||||||
Reference in New Issue
Block a user