Skip to content

Commit b385f42

Browse files
committedFeb 27, 2018
Set project expression variables in server
1 parent 9a3ecc2 commit b385f42

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed
 

‎src/server/qgsserverprojectparser.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,17 @@ QgsServerProjectParser::QgsServerProjectParser( QDomDocument* xmlDoc, const QStr
8080
{
8181
QgsProject::instance()->setFileName( mProjectPath );
8282
}
83+
84+
// Set the project scope variables
85+
QStringList variableNames = readListEntry( "Variables", "variableNames" );
86+
QStringList variableValues = readListEntry( "Variables", "variableValues" );
87+
88+
//read values
89+
90+
//append standard values
91+
92+
QgsProject::instance()->writeEntry( "Variables", "/variableNames", variableNames );
93+
QgsProject::instance()->writeEntry( "Variables", "/variableValues", variableValues );
8394
}
8495

8596
QgsServerProjectParser::QgsServerProjectParser()
@@ -1633,4 +1644,34 @@ void QgsServerProjectParser::addGetFeatureLayers( const QDomElement& layerElem )
16331644
}
16341645
}
16351646

1647+
QStringList QgsServerProjectParser::readListEntry( const QString& scope, const QString& key ) const
1648+
{
1649+
QStringList entryList;
1650+
QDomElement propertiesElement = propertiesElem();
1651+
if ( propertiesElement.isNull() )
1652+
{
1653+
return entryList;
1654+
}
1655+
1656+
QDomElement scopeElem = propertiesElement.firstChildElement( scope );
1657+
if ( scopeElem.isNull() )
1658+
{
1659+
return entryList;
1660+
}
1661+
1662+
QDomElement keyElem = scopeElem.firstChildElement( key );
1663+
if ( keyElem.isNull() )
1664+
{
1665+
return entryList;
1666+
}
1667+
1668+
QDomNodeList valueNodeList = keyElem.elementsByTagName( "value" );
1669+
for ( int i = 0; i < valueNodeList.size(); ++i )
1670+
{
1671+
entryList.append( valueNodeList.at( i ).toElement().text() );
1672+
}
1673+
1674+
return entryList;
1675+
}
1676+
16361677

‎src/server/qgsserverprojectparser.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ class SERVER_EXPORT QgsServerProjectParser
175175

176176
/** Adds sublayers of an embedded group to layer set*/
177177
static void sublayersOfEmbeddedGroup( const QString& projectFilePath, const QString& groupName, QSet<QString>& layerSet );
178+
179+
/** Reads list entry from project properties*/
180+
QStringList readListEntry( const QString& scope, const QString& key ) const;
178181
};
179182

180183
#endif // QGSSERVERPROJECTPARSER_H

‎src/server/qgswmsserver.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2193,6 +2193,16 @@ int QgsWMSServer::configureMapRender( const QPaintDevice* paintDevice ) const
21932193
mMapRenderer->setOutputUnits( QgsMapRenderer::Pixels ); //SLD units are in pixels normally
21942194
}
21952195

2196+
//Clear expression context and set project variables
2197+
QgsRenderContext* ctx = mMapRenderer->rendererContext();
2198+
if ( ctx )
2199+
{
2200+
QgsExpressionContext newContext;
2201+
ctx->setExpressionContext( newContext );
2202+
QgsExpressionContext& expCtx = ctx->expressionContext();
2203+
expCtx.appendScope( QgsExpressionContextUtils::projectScope() );
2204+
}
2205+
21962206
return 0;
21972207
}
21982208

0 commit comments

Comments
 (0)