Skip to content

Commit 46d40c4

Browse files
committed
Merge branch 'wms_address'
2 parents ec87f7f + dbad873 commit 46d40c4

File tree

7 files changed

+169
-123
lines changed

7 files changed

+169
-123
lines changed

src/app/qgsprojectproperties.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
207207
mWMSContactPhone->setText( QgsProject::instance()->readEntry( "WMSContactPhone", "/", "" ) );
208208
mWMSAbstract->setPlainText( QgsProject::instance()->readEntry( "WMSServiceAbstract", "/", "" ) );
209209
mWMSOnlineResourceLineEdit->setText( QgsProject::instance()->readEntry( "WMSOnlineResource", "/", "" ) );
210+
mWMSUrlLineEdit->setText( QgsProject::instance()->readEntry( "WMSUrl", "/", "" ) );
210211

211212
bool ok;
212213
QStringList values;
@@ -489,6 +490,7 @@ void QgsProjectProperties::apply()
489490
QgsProject::instance()->writeEntry( "WMSContactPhone", "/", mWMSContactPhone->text() );
490491
QgsProject::instance()->writeEntry( "WMSServiceAbstract", "/", mWMSAbstract->toPlainText() );
491492
QgsProject::instance()->writeEntry( "WMSOnlineResource", "/", mWMSOnlineResourceLineEdit->text() );
493+
QgsProject::instance()->writeEntry( "WMSUrl", "/", mWMSUrlLineEdit->text() );
492494

493495
if ( grpWMSExt->isChecked() )
494496
{

src/mapserver/qgsconfigparser.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ class QgsConfigParser
118118
/**Appends service metadata to the capabilities document*/
119119
virtual void serviceCapabilities( QDomElement& parentElement, QDomDocument& doc ) const;
120120

121+
/**Returns service Adress (or empty string if not defined in the configuration*/
122+
virtual QString serviceUrl() const { return QString(); }
123+
121124
QColor selectionColor() const { return mSelectionColor; }
122125
void setSelectionColor( const QColor& c ) { mSelectionColor = c; }
123126

src/mapserver/qgsprojectparser.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,6 +1479,27 @@ void QgsProjectParser::serviceCapabilities( QDomElement& parentElement, QDomDocu
14791479
parentElement.appendChild( serviceElem );
14801480
}
14811481

1482+
QString QgsProjectParser::serviceUrl() const
1483+
{
1484+
QString url;
1485+
1486+
if( !mXMLDoc )
1487+
{
1488+
return url;
1489+
}
1490+
1491+
QDomElement propertiesElem = mXMLDoc->documentElement().firstChildElement( "properties" );
1492+
if ( !propertiesElem.isNull() )
1493+
{
1494+
QDomElement wmsUrlElem = propertiesElem.firstChildElement( "WMSUrl" );
1495+
if ( !wmsUrlElem.isNull() )
1496+
{
1497+
url = wmsUrlElem.text();
1498+
}
1499+
}
1500+
return url;
1501+
}
1502+
14821503
QString QgsProjectParser::convertToAbsolutePath( const QString& file ) const
14831504
{
14841505
if ( !file.startsWith( "./" ) && !file.startsWith( "../" ) )

src/mapserver/qgsprojectparser.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ class QgsProjectParser: public QgsConfigParser
106106
/**Reads service metadata from projectfile or falls back to parent class method if not there*/
107107
void serviceCapabilities( QDomElement& parentElement, QDomDocument& doc ) const;
108108

109+
QString serviceUrl() const;
110+
109111
private:
110112

111113
//forbidden

src/mapserver/qgswmsserver.cpp

Lines changed: 56 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -127,58 +127,11 @@ QDomDocument QgsWMSServer::getCapabilities( QString version )
127127
requestElement.appendChild( elem );
128128

129129
//Prepare url
130-
//Some client requests already have http://<SERVER_NAME> in the REQUEST_URI variable
131-
QString hrefString;
132-
QString requestUrl = getenv( "REQUEST_URI" );
133-
QUrl mapUrl( requestUrl );
134-
mapUrl.setHost( getenv( "SERVER_NAME" ) );
135-
136-
//Add non-default ports to url
137-
QString portString = getenv( "SERVER_PORT" );
138-
if ( !portString.isEmpty() )
139-
{
140-
bool portOk;
141-
int portNumber = portString.toInt( &portOk );
142-
if ( portOk )
143-
{
144-
if ( portNumber != 80 )
145-
{
146-
mapUrl.setPort( portNumber );
147-
}
148-
}
149-
}
150-
151-
if ( QString( getenv( "HTTPS" ) ).compare( "on", Qt::CaseInsensitive ) == 0 )
152-
{
153-
mapUrl.setScheme( "https" );
154-
}
155-
else
156-
{
157-
mapUrl.setScheme( "http" );
158-
}
159-
160-
QList<QPair<QString, QString> > queryItems = mapUrl.queryItems();
161-
QList<QPair<QString, QString> >::const_iterator queryIt = queryItems.constBegin();
162-
for ( ; queryIt != queryItems.constEnd(); ++queryIt )
130+
QString hrefString = mConfigParser->serviceUrl();
131+
if ( hrefString.isEmpty() )
163132
{
164-
if ( queryIt->first.compare( "REQUEST", Qt::CaseInsensitive ) == 0 )
165-
{
166-
mapUrl.removeQueryItem( queryIt->first );
167-
}
168-
else if ( queryIt->first.compare( "VERSION", Qt::CaseInsensitive ) == 0 )
169-
{
170-
mapUrl.removeQueryItem( queryIt->first );
171-
}
172-
else if ( queryIt->first.compare( "SERVICE", Qt::CaseInsensitive ) == 0 )
173-
{
174-
mapUrl.removeQueryItem( queryIt->first );
175-
}
176-
else if ( queryIt->first.compare( "_DC", Qt::CaseInsensitive ) == 0 )
177-
{
178-
mapUrl.removeQueryItem( queryIt->first );
179-
}
133+
hrefString = serviceUrl();
180134
}
181-
hrefString = mapUrl.toString();
182135

183136

184137
// SOAP platform
@@ -201,7 +154,6 @@ QDomDocument QgsWMSServer::getCapabilities( QString version )
201154
QDomElement olResourceElement = doc.createElement( "OnlineResource"/*wms:OnlineResource*/ );
202155
olResourceElement.setAttribute( "xmlns:xlink", "http://www.w3.org/1999/xlink" );
203156
olResourceElement.setAttribute( "xlink:type", "simple" );
204-
requestUrl.truncate( requestUrl.indexOf( "?" ) + 1 );
205157
olResourceElement.setAttribute( "xlink:href", hrefString );
206158
getElement.appendChild( olResourceElement );
207159

@@ -1993,3 +1945,56 @@ bool QgsWMSServer::checkMaximumWidthHeight() const
19931945
}
19941946
return true;
19951947
}
1948+
1949+
QString QgsWMSServer::serviceUrl() const
1950+
{
1951+
QUrl mapUrl( getenv( "REQUEST_URI" ) );
1952+
mapUrl.setHost( getenv( "SERVER_NAME" ) );
1953+
1954+
//Add non-default ports to url
1955+
QString portString = getenv( "SERVER_PORT" );
1956+
if ( !portString.isEmpty() )
1957+
{
1958+
bool portOk;
1959+
int portNumber = portString.toInt( &portOk );
1960+
if ( portOk )
1961+
{
1962+
if ( portNumber != 80 )
1963+
{
1964+
mapUrl.setPort( portNumber );
1965+
}
1966+
}
1967+
}
1968+
1969+
if ( QString( getenv( "HTTPS" ) ).compare( "on", Qt::CaseInsensitive ) == 0 )
1970+
{
1971+
mapUrl.setScheme( "https" );
1972+
}
1973+
else
1974+
{
1975+
mapUrl.setScheme( "http" );
1976+
}
1977+
1978+
QList<QPair<QString, QString> > queryItems = mapUrl.queryItems();
1979+
QList<QPair<QString, QString> >::const_iterator queryIt = queryItems.constBegin();
1980+
for ( ; queryIt != queryItems.constEnd(); ++queryIt )
1981+
{
1982+
if ( queryIt->first.compare( "REQUEST", Qt::CaseInsensitive ) == 0 )
1983+
{
1984+
mapUrl.removeQueryItem( queryIt->first );
1985+
}
1986+
else if ( queryIt->first.compare( "VERSION", Qt::CaseInsensitive ) == 0 )
1987+
{
1988+
mapUrl.removeQueryItem( queryIt->first );
1989+
}
1990+
else if ( queryIt->first.compare( "SERVICE", Qt::CaseInsensitive ) == 0 )
1991+
{
1992+
mapUrl.removeQueryItem( queryIt->first );
1993+
}
1994+
else if ( queryIt->first.compare( "_DC", Qt::CaseInsensitive ) == 0 )
1995+
{
1996+
mapUrl.removeQueryItem( queryIt->first );
1997+
}
1998+
}
1999+
return mapUrl.toString();
2000+
}

src/mapserver/qgswmsserver.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ class QgsWMSServer
168168
@return true if width/height values are okay*/
169169
bool checkMaximumWidthHeight() const;
170170

171+
/**Get service address from REQUEST_URI if not specified in the configuration*/
172+
QString serviceUrl() const;
173+
171174
/**Map containing the WMS parameters*/
172175
QMap<QString, QString> mParameterMap;
173176
QgsConfigParser* mConfigParser;

src/ui/qgsprojectpropertiesbase.ui

Lines changed: 82 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>604</width>
10-
<height>588</height>
9+
<width>644</width>
10+
<height>530</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
@@ -756,9 +756,9 @@
756756
<property name="geometry">
757757
<rect>
758758
<x>0</x>
759-
<y>0</y>
760-
<width>637</width>
761-
<height>808</height>
759+
<y>-228</y>
760+
<width>599</width>
761+
<height>696</height>
762762
</rect>
763763
</property>
764764
<layout class="QGridLayout" name="gridLayout">
@@ -868,6 +868,52 @@
868868
<string>WMS Capabilitities</string>
869869
</property>
870870
<layout class="QGridLayout" name="gridLayout_10">
871+
<item row="2" column="0">
872+
<widget class="QCheckBox" name="mAddWktGeometryCheckBox">
873+
<property name="text">
874+
<string>Add WKT geometry to feature info response</string>
875+
</property>
876+
</widget>
877+
</item>
878+
<item row="1" column="1">
879+
<widget class="QGroupBox" name="grpWMSList">
880+
<property name="title">
881+
<string>Coordinate Systems Restrictions</string>
882+
</property>
883+
<property name="checkable">
884+
<bool>true</bool>
885+
</property>
886+
<property name="checked">
887+
<bool>false</bool>
888+
</property>
889+
<layout class="QGridLayout" name="gridLayout_5">
890+
<item row="0" column="0" colspan="3">
891+
<widget class="QListWidget" name="mWMSList"/>
892+
</item>
893+
<item row="1" column="0">
894+
<widget class="QPushButton" name="pbnWMSAddSRS">
895+
<property name="text">
896+
<string>Add</string>
897+
</property>
898+
</widget>
899+
</item>
900+
<item row="1" column="2">
901+
<widget class="QPushButton" name="pbnWMSRemoveSRS">
902+
<property name="text">
903+
<string>Remove</string>
904+
</property>
905+
</widget>
906+
</item>
907+
<item row="1" column="1">
908+
<widget class="QPushButton" name="pbnWMSSetUsedSRS">
909+
<property name="text">
910+
<string>Used</string>
911+
</property>
912+
</widget>
913+
</item>
914+
</layout>
915+
</widget>
916+
</item>
871917
<item row="1" column="0">
872918
<widget class="QGroupBox" name="grpWMSExt">
873919
<property name="title">
@@ -971,80 +1017,44 @@
9711017
</layout>
9721018
</widget>
9731019
</item>
974-
<item row="1" column="1">
975-
<widget class="QGroupBox" name="grpWMSList">
976-
<property name="title">
977-
<string>Coordinate Systems Restrictions</string>
978-
</property>
979-
<property name="checkable">
980-
<bool>true</bool>
981-
</property>
982-
<property name="checked">
983-
<bool>false</bool>
984-
</property>
985-
<layout class="QGridLayout" name="gridLayout_5">
986-
<item row="0" column="0" colspan="3">
987-
<widget class="QListWidget" name="mWMSList"/>
988-
</item>
989-
<item row="1" column="0">
990-
<widget class="QPushButton" name="pbnWMSAddSRS">
991-
<property name="text">
992-
<string>Add</string>
993-
</property>
994-
</widget>
995-
</item>
996-
<item row="1" column="2">
997-
<widget class="QPushButton" name="pbnWMSRemoveSRS">
998-
<property name="text">
999-
<string>Remove</string>
1000-
</property>
1001-
</widget>
1002-
</item>
1003-
<item row="1" column="1">
1004-
<widget class="QPushButton" name="pbnWMSSetUsedSRS">
1005-
<property name="text">
1006-
<string>Used</string>
1007-
</property>
1008-
</widget>
1009-
</item>
1010-
</layout>
1011-
</widget>
1012-
</item>
1013-
<item row="2" column="0">
1014-
<widget class="QCheckBox" name="mAddWktGeometryCheckBox">
1020+
<item row="3" column="0">
1021+
<widget class="QLabel" name="mWMSUrlLabel">
10151022
<property name="text">
1016-
<string>Add WKT geometry to feature info response</string>
1023+
<string>Advertised WMS url</string>
10171024
</property>
10181025
</widget>
10191026
</item>
1027+
<item row="5" column="0" colspan="2">
1028+
<layout class="QHBoxLayout" name="horizontalLayout_2">
1029+
<item>
1030+
<widget class="QLabel" name="mMaxWidthLabel">
1031+
<property name="text">
1032+
<string>Maximum width</string>
1033+
</property>
1034+
</widget>
1035+
</item>
1036+
<item>
1037+
<widget class="QLineEdit" name="mMaxWidthLineEdit"/>
1038+
</item>
1039+
<item>
1040+
<widget class="QLabel" name="mMaxHeightLabel">
1041+
<property name="text">
1042+
<string>Maximum height</string>
1043+
</property>
1044+
</widget>
1045+
</item>
1046+
<item>
1047+
<widget class="QLineEdit" name="mMaxHeightLineEdit"/>
1048+
</item>
1049+
</layout>
1050+
</item>
1051+
<item row="4" column="0" colspan="2">
1052+
<widget class="QLineEdit" name="mWMSUrlLineEdit"/>
1053+
</item>
10201054
</layout>
10211055
</widget>
10221056
</item>
1023-
<item row="2" column="0">
1024-
<layout class="QHBoxLayout" name="horizontalLayout_2">
1025-
<item>
1026-
<widget class="QLabel" name="mMaxWidthLabel">
1027-
<property name="text">
1028-
<string>Maximum width</string>
1029-
</property>
1030-
</widget>
1031-
</item>
1032-
<item>
1033-
<widget class="QLineEdit" name="mMaxWidthLineEdit"/>
1034-
</item>
1035-
<item>
1036-
<widget class="QLabel" name="mMaxHeightLabel">
1037-
<property name="text">
1038-
<string>Maximum height</string>
1039-
</property>
1040-
</widget>
1041-
</item>
1042-
<item>
1043-
<widget class="QLineEdit" name="mMaxHeightLineEdit"/>
1044-
</item>
1045-
</layout>
1046-
</item>
1047-
<item row="3" column="0">
1057+
<item row="7" column="0">
10481058
<widget class="QGroupBox" name="grpWFSCapabilities">
10491059
<property name="title">
10501060
<string>WFS Capabilitities</string>

0 commit comments

Comments
 (0)