I got the GeoExt QueryPanel working so far, it recognizes the layers available on my Geoserver but it is not able to get the attribute columns for the dataset. I configured an osgeo proxy on my Apache Server, I use the override-ext-ajax.js and have the OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
class configured.
A DescribeFeatureType request is sent when selecting the layer I want to filter. The same happens when trying to choose the attribute column in the query panel, but there are none displayed.
The sent request URLs look like this:
http://localhost/cgi-bin/proxy.cgi?url=
http%3A%2F%2Flocalhost%2Fcgibin%2Fproxy.cgi%2Fwfs%3F
VERSION%3D1.1.0%26REQUEST%3DDescribeFeatureType%26TYPENAME%3Dcases%26query%3D
The strange part here is, that the request is sent via the proxy.cgi twice. The request URL should look like this, going passed geoserver´s WFS:
http://localhost/cgi-bin/proxy.cgi?url=
http%3A%2F%2Flocalhost%3A8080%2Fgeoserver%2Fwfs%3F
VERSION%3D1.1.0%26REQUEST%3DDescribeFeatureType%26TYPENAME%3Dcases%26query%3D
Does anybody have a clue what´s going wrong here and why the request URL is wrong? The strange thing is that even if I remove the Open.Layers.ProxyHost class and the override-ext-ajax.js from my application, the request is sent that way. This leads to the conclusion, that the source of error can be found in the QueryPanel.js file, yet I couldn´t spot it.
Can it, on the other hand be related to my server?
Other requests sent in the application (GET & POST) work fine. The (relevant) code looks like this, maybe you can spot the error.
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
var owsUrl = "/geoserver/wfs";
var symbolizer = OpenLayers.Feature.Vector.style["default"];
symbolizer.graphicName = "square";
var store;
Ext.onReady(function() {
store = new GeoExt.data.WFSCapabilitiesStore({
url: Ext.urlAppend(owsUrl,
"VERSION=1.0.0&REQUEST=GetCapabilities"),
protocolOptions: {version: "1.1.0"},
autoLoad: true,
listeners: {
load: initApp
}
});
});
function initApp() {
var vecLayer = new OpenLayers.Layer.Vector("Query", {
eventListeners: {
featuresadded: function() {
var extent = vecLayer.getDataExtent()
mapPanel.map.zoomToExtent(extent)
}
}
});
var queryPanel = new gxp.QueryPanel({
title: "Query",
region: "center",
width: 350,
bodyStyle: "padding: 10px",
autoScroll: true,
layerStore: store,
bbar: ["->", {
text: "Query",
handler: function() {
queryPanel.query();
}
}],
listeners: {
query: function(panel, store) {
var rule = new OpenLayers.Rule({
filter: panel.getFilter()
});
rule.symbolizer[queryPanel.symbolizerType] = symbolizer;
var style = new OpenLayers.Style("", {rules: [rule]});
wms.mergeNewParams({
sld_body: new OpenLayers.Format.SLD().write({
namedLayers: [{
name: panel.selectedLayer.get("name"),
userStyles: [style]
}]
})
});
store.bind(vecLayer, {
initDir: GeoExt.data.FeatureStore.STORE_TO_LAYER
});
}
}
});