Showing with 12 additions and 4 deletions.
  1. +1 −0 src/mapserver/qgsprojectparser.cpp
  2. +10 −4 src/mapserver/qgswmsserver.cpp
  3. +1 −0 src/mapserver/qgswmsserver.h
1 change: 1 addition & 0 deletions src/mapserver/qgsprojectparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1573,6 +1573,7 @@ void QgsProjectParser::addLayerProjectSettings( QDomElement& layerElem, QDomDocu
QDomElement attributeElem = doc.createElement( "Attribute" );
attributeElem.setAttribute( "name", vLayer->attributeDisplayName( idx ) );
attributeElem.setAttribute( "type", QVariant::typeToName( field.type() ) );
attributeElem.setAttribute( "typeName", field.typeName() );

//edit type to text
QgsVectorLayer::EditType typeEnum = vLayer->editType( idx );
Expand Down
14 changes: 10 additions & 4 deletions src/mapserver/qgswmsserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1496,7 +1496,7 @@ int QgsWMSServer::featureInfoFromVectorLayer( QgsVectorLayer* layer,
QgsCoordinateReferenceSystem layerCrs = layer->crs();
bool withGeom = layer->wkbType() != QGis::WKBNoGeometry;
int version = infoFormat.startsWith( "application/vnd.ogc.gml/3" ) ? 3 : 2;
QDomElement elem = createFeatureGML( &feature, infoDocument, layerCrs, layer->name(), withGeom, version );
QDomElement elem = createFeatureGML( &feature, layer, infoDocument, layerCrs, layer->name(), withGeom, version );
QDomElement featureMemberElem = infoDocument.createElement( "gml:featureMember"/*wfs:FeatureMember*/ );
featureMemberElem.appendChild( elem );
layerElement.appendChild( featureMemberElem );
Expand All @@ -1523,7 +1523,7 @@ int QgsWMSServer::featureInfoFromVectorLayer( QgsVectorLayer* layer,

QDomElement attributeElement = infoDocument.createElement( "Attribute" );
attributeElement.setAttribute( "name", attributeName );
attributeElement.setAttribute( "value", featureAttributes[i].toString() );
attributeElement.setAttribute( "value", QgsExpression::replaceExpressionText( featureAttributes[i].toString(), &feature, layer ) );
featureElement.appendChild( attributeElement );
}

Expand Down Expand Up @@ -1607,7 +1607,7 @@ int QgsWMSServer::featureInfoFromRasterLayer( QgsRasterLayer* layer,

QgsCoordinateReferenceSystem layerCrs = layer->crs();
int version = infoFormat.startsWith( "application/vnd.ogc.gml/3" ) ? 3 : 2;
QDomElement elem = createFeatureGML( &feature, infoDocument, layerCrs, layer->name(), false, version );
QDomElement elem = createFeatureGML( &feature, 0, infoDocument, layerCrs, layer->name(), false, version );
layerElement.appendChild( elem );
}
else
Expand Down Expand Up @@ -2499,6 +2499,7 @@ void QgsWMSServer::convertFeatureInfoToSIA2045( QDomDocument& doc )

QDomElement QgsWMSServer::createFeatureGML(
QgsFeature* feat,
QgsVectorLayer* layer,
QDomDocument& doc,
QgsCoordinateReferenceSystem& crs,
QString typeName,
Expand Down Expand Up @@ -2560,7 +2561,12 @@ QDomElement QgsWMSServer::createFeatureGML(
{
QString attributeName = fields->at( i ).name();
QDomElement fieldElem = doc.createElement( "qgs:" + attributeName.replace( QString( " " ), QString( "_" ) ) );
QDomText fieldText = doc.createTextNode( featureAttributes[i].toString() );
QString fieldTextString = featureAttributes[i].toString();
if ( layer )
{
fieldTextString = QgsExpression::replaceExpressionText( fieldTextString, feat, layer );
}
QDomText fieldText = doc.createTextNode( fieldTextString );
fieldElem.appendChild( fieldText );
typeNameElement.appendChild( fieldElem );
}
Expand Down
1 change: 1 addition & 0 deletions src/mapserver/qgswmsserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ class QgsWMSServer

QDomElement createFeatureGML(
QgsFeature* feat,
QgsVectorLayer* layer,
QDomDocument& doc,
QgsCoordinateReferenceSystem& crs,
QString typeName,
Expand Down