diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java index b8cdc5ad48..c4af39a38b 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java @@ -55,6 +55,7 @@ import sonia.scm.web.security.WebSecurityContext; import java.util.Collection; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; import javax.ws.rs.WebApplicationException; diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.group.js b/scm-webapp/src/main/webapp/resources/js/sonia.group.js index a37e793a7d..b54240dff7 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.group.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.group.js @@ -140,6 +140,16 @@ 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({ defaults: { sortable: true @@ -148,8 +158,16 @@ Sonia.group.FormPanel = Ext.extend(Sonia.rest.FormPanel,{ id: 'member', header: 'Member', dataIndex: 'member', - editor: new Ext.form.TextField({ - allowBlank: false + editor: new Ext.form.ComboBox({ + store: memberSearchStore, + displayField: 'label', + valueField: 'value', + typeAhead: true, + mode: 'remote', + queryParam: 'query', //contents of the field sent to server. + hideTrigger: true, //hide trigger so it doesn't look like a combobox. + selectOnFocus:true, + width: 250 }) }] });