diff --git a/python/server/auto_generated/qgsserverprojectutils.sip.in b/python/server/auto_generated/qgsserverprojectutils.sip.in index fcc9baeb894..84f8b19361f 100644 --- a/python/server/auto_generated/qgsserverprojectutils.sip.in +++ b/python/server/auto_generated/qgsserverprojectutils.sip.in @@ -212,6 +212,15 @@ Returns if the geometry is displayed as Well Known Text in GetFeatureInfo reques :param project: the QGIS project :return: if the geometry is displayed as Well Known Text in GetFeatureInfo request. +%End + + bool wmsFeatureInfoUseAttributeFormSettings( const QgsProject &project ); +%Docstring +Returns if feature form settings should be considered for the format of the feature info response + +:param project: the QGIS project + +:return: true if the feature form settings shall be considered for the feature info response %End bool wmsFeatureInfoSegmentizeWktGeometry( const QgsProject &project ); diff --git a/src/app/qgsprojectproperties.cpp b/src/app/qgsprojectproperties.cpp index 15db4f9118d..32e4da9f806 100644 --- a/src/app/qgsprojectproperties.cpp +++ b/src/app/qgsprojectproperties.cpp @@ -665,6 +665,9 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa mLayerRestrictionsListWidget->addItems( values ); } + bool useAttributeFormSettings = QgsProject::instance()->readBoolEntry( QStringLiteral( "WMSFeatureInfoUseAttributeFormSettings" ), QStringLiteral( "/" ) ); + mUseAttributeFormSettingsCheckBox->setChecked( useAttributeFormSettings ); + bool addWktGeometry = QgsProject::instance()->readBoolEntry( QStringLiteral( "WMSAddWktGeometry" ), QStringLiteral( "/" ) ); mAddWktGeometryCheckBox->setChecked( addWktGeometry ); @@ -1393,6 +1396,7 @@ void QgsProjectProperties::apply() QgsProject::instance()->removeEntry( QStringLiteral( "WMSRestrictedLayers" ), QStringLiteral( "/" ) ); } + QgsProject::instance()->writeEntry( QStringLiteral( "WMSFeatureInfoUseAttributeFormSettings" ), QStringLiteral( "/" ), mUseAttributeFormSettingsCheckBox->isChecked() ); QgsProject::instance()->writeEntry( QStringLiteral( "WMSAddWktGeometry" ), QStringLiteral( "/" ), mAddWktGeometryCheckBox->isChecked() ); QgsProject::instance()->writeEntry( QStringLiteral( "WMSSegmentizeFeatureInfoGeometry" ), QStringLiteral( "/" ), mSegmentizeFeatureInfoGeometryCheckBox->isChecked() ); QgsProject::instance()->writeEntry( QStringLiteral( "WMSUseLayerIDs" ), QStringLiteral( "/" ), mWmsUseLayerIDs->isChecked() ); diff --git a/src/server/qgsserverprojectutils.cpp b/src/server/qgsserverprojectutils.cpp index 85e33bb1439..ae9e075de2f 100644 --- a/src/server/qgsserverprojectutils.cpp +++ b/src/server/qgsserverprojectutils.cpp @@ -172,6 +172,13 @@ bool QgsServerProjectUtils::wmsFeatureInfoAddWktGeometry( const QgsProject &proj || wktGeom.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0; } +bool QgsServerProjectUtils::wmsFeatureInfoUseAttributeFormSettings( const QgsProject &project ) +{ + QString useFormSettings = project.readEntry( QStringLiteral( "WMSFeatureInfoUseAttributeFormSettings" ), QStringLiteral( "/" ), "" ); + return useFormSettings.compare( QLatin1String( "enabled" ), Qt::CaseInsensitive ) == 0 + || useFormSettings.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0; +} + bool QgsServerProjectUtils::wmsFeatureInfoSegmentizeWktGeometry( const QgsProject &project ) { QString segmGeom = project.readEntry( QStringLiteral( "WMSSegmentizeFeatureInfoGeometry" ), QStringLiteral( "/" ), "" ); diff --git a/src/server/qgsserverprojectutils.h b/src/server/qgsserverprojectutils.h index 0577e276fbb..923b8a002ca 100644 --- a/src/server/qgsserverprojectutils.h +++ b/src/server/qgsserverprojectutils.h @@ -207,6 +207,13 @@ namespace QgsServerProjectUtils */ SERVER_EXPORT bool wmsFeatureInfoAddWktGeometry( const QgsProject &project ); + /** + * Returns if feature form settings should be considered for the format of the feature info response + * \param project the QGIS project + * \returns true if the feature form settings shall be considered for the feature info response + */ + SERVER_EXPORT bool wmsFeatureInfoUseAttributeFormSettings( const QgsProject &project ); + /** * Returns if the geometry has to be segmentize in GetFeatureInfo request. * \param project the QGIS project diff --git a/src/server/services/wms/qgswmsrenderer.cpp b/src/server/services/wms/qgswmsrenderer.cpp index b749b8d7fd6..28e7bbdc290 100644 --- a/src/server/services/wms/qgswmsrenderer.cpp +++ b/src/server/services/wms/qgswmsrenderer.cpp @@ -1566,7 +1566,7 @@ namespace QgsWms featureAttributes = feature.attributes(); QgsEditFormConfig editConfig = layer->editFormConfig(); - if ( editConfig.layout() == QgsEditFormConfig::TabLayout ) + if ( QgsServerProjectUtils::wmsFeatureInfoUseAttributeFormSettings( *mProject ) && editConfig.layout() == QgsEditFormConfig::TabLayout ) { writeAttributesTabLayout( editConfig, layer, fields, featureAttributes, infoDocument, featureElement, renderContext ); } diff --git a/src/server/services/wms/qgswmsrenderer.h b/src/server/services/wms/qgswmsrenderer.h index 571989edc1d..e88eb2975d8 100644 --- a/src/server/services/wms/qgswmsrenderer.h +++ b/src/server/services/wms/qgswmsrenderer.h @@ -223,11 +223,40 @@ namespace QgsWms QgsRectangle *featureBBox = nullptr, QgsGeometry *filterGeom = nullptr ) const; - //!Recursively called to write tab layout groups to XML + /** + * Recursively called to write tab layout groups to XML + * \param group the tab layout group + * \param layer The vector layer + * \param fields attribute fields + * \param featureAttributes the feature attributes + * \param doc Feature info XML document + * \param featureElem the feature XML element + * \param renderContext Context to use for feature rendering + */ void writeAttributesTabGroup( const QgsAttributeEditorElement *group, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext ) const; - //!Writes attributes to XML document using the group/attribute layout defined in the tab layout + + /** + * Writes attributes to XML document using the group/attribute layout defined in the tab layout + * \param config editor config object + * \param layer The vector layer + * \param fields attribute fields + * \param featureAttributes the feature attributes + * \param doc Feature info XML document + * \param featureElem the feature XML element + * \param renderContext Context to use for feature rendering + */ void writeAttributesTabLayout( QgsEditFormConfig &config, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext ) const; - //! Writes a vectorlayer attribute into the XML document + + /** + * Writes a vectorlayer attribute into the XML document + * \param index of attribute to be written + * \param layer The vector layer + * \param fields attribute fields + * \param featureAttributes the feature attributes + * \param doc Feature info XML document + * \param featureElem the feature XML element + * \param renderContext Context to use for feature rendering + */ void writeVectorLayerAttribute( int attributeIndex, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext ) const; //! Appends feature info xml for the layer to the layer element of the dom document diff --git a/src/ui/qgsprojectpropertiesbase.ui b/src/ui/qgsprojectpropertiesbase.ui index 5e2a6f98bda..8689e283044 100644 --- a/src/ui/qgsprojectpropertiesbase.ui +++ b/src/ui/qgsprojectpropertiesbase.ui @@ -269,7 +269,7 @@ - 2 + 0 @@ -297,9 +297,9 @@ 0 - -16 + 0 671 - 695 + 821 @@ -954,8 +954,8 @@ 0 0 - 337 - 74 + 692 + 673 @@ -1007,8 +1007,8 @@ 0 0 - 604 - 105 + 692 + 673 @@ -1067,8 +1067,8 @@ 0 0 - 291 - 563 + 692 + 673 @@ -1643,8 +1643,8 @@ 0 0 - 179 - 56 + 692 + 673 @@ -1705,8 +1705,8 @@ 0 0 - 653 - 3187 + 685 + 3591 @@ -2037,72 +2037,79 @@ projowsserver - - - - Exclude layers + + + + Add geometry to feature response - - true - - - false - - - false - - - true - - - - - - - - - Add layer to exclude - - - - - - - :/images/themes/default/symbologyAdd.svg:/images/themes/default/symbologyAdd.svg - - - - - - - Remove selected layer - - - - - - - :/images/themes/default/symbologyRemove.svg:/images/themes/default/symbologyRemove.svg - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - + + + + + + Quality for JPEG images ( 10 : smaller image - 100 : best quality ) + + + + + + + 10 + + + 100 + + + 5 + + + 90 + + + + + + + + + + + Maximum features for Atlas print requests + + + + + + + 9999999 + + + 1 + + + + + + + + + + + When using tiles set this to the size of the larger symbols to avoid cut symbols at tile boundaries. This works by drawing features that are outside the tile extent. + + + Tile buffer in pixels + + + + + + + + + @@ -2149,241 +2156,6 @@ - - - - CRS restrictions - - - true - - - false - - - false - - - true - - - - - - Remove selected CRS - - - - :/images/themes/default/symbologyRemove.svg:/images/themes/default/symbologyRemove.svg - - - - - - - - - - Fetch all CRS's from layers - - - Used - - - - - - - Add new CRS - - - - :/images/themes/default/symbologyAdd.svg:/images/themes/default/symbologyAdd.svg - - - - - - - - - - - - Maximum features for Atlas print requests - - - - - - - 9999999 - - - 1 - - - - - - - - - Use layer ids as names - - - - - - - - - GetFeatureInfo geometry precision (decimal places) - - - - - - - 1 - - - 17 - - - 8 - - - - - - - - - - - Default map units per mm in legend - - - - - - - - - Ad&vertised extent - - - true - - - false - - - false - - - true - - - - - - - - - - - - - Min. &Y - - - mWMSExtMinY - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Min. &X - - - mWMSExtMinX - - - - - - - - - - - - - - Max. X - - - mWMSExtMaxX - - - - - - - Use Current Canvas Extent - - - - - - - Max. Y - - - mWMSExtMaxY - - - - - - - - - - - - - - - - - - - - - - - - Add geometry to feature response - - - @@ -2516,13 +2288,202 @@ - + + + + CRS restrictions + + + true + + + false + + + false + + + true + + + + + + Remove selected CRS + + + + :/images/themes/default/symbologyRemove.svg:/images/themes/default/symbologyRemove.svg + + + + + + + + + + Fetch all CRS's from layers + + + Used + + + + + + + Add new CRS + + + + :/images/themes/default/symbologyAdd.svg:/images/themes/default/symbologyAdd.svg + + + + + + + + + + Ad&vertised extent + + + true + + + false + + + false + + + true + + + + + + + + + + + + + Min. &Y + + + mWMSExtMinY + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Min. &X + + + mWMSExtMinX + + + + + + + + + + + + + + Max. X + + + mWMSExtMaxX + + + + + + + Use Current Canvas Extent + + + + + + + Max. Y + + + mWMSExtMaxY + + + + + + + + + + + + + + + + + + + + + Segmentize feature info geometry + + + + + + GetFeatureInfo geometry precision (decimal places) + + + + + + + 1 + + + 17 + + + 8 + + + + + @@ -2588,7 +2549,7 @@ - + @@ -2602,49 +2563,95 @@ - - + + + + Use layer ids as names + + + + + - + - Quality for JPEG images ( 10 : smaller image - 100 : best quality ) - - - - - - - 10 - - - 100 - - - 5 - - - 90 + Default map units per mm in legend - - - - - - When using tiles set this to the size of the larger symbols to avoid cut symbols at tile boundaries. This works by drawing features that are outside the tile extent. - - - Tile buffer in pixels - - - - - - - + + + + Exclude layers + + + true + + + false + + + false + + + true + + + + + + + + + Add layer to exclude + + + + + + + :/images/themes/default/symbologyAdd.svg:/images/themes/default/symbologyAdd.svg + + + + + + + Remove selected layer + + + + + + + :/images/themes/default/symbologyRemove.svg:/images/themes/default/symbologyRemove.svg + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + + + Use attribute form settings for GetFeatureInfo response + +