Skip to content

Commit 5473c33

Browse files
committed
[QGIS-Server] Help editing OWS Server general information
Fees and access constraints have a defined list of value by ISO. To help user editing these parameters, edit lines have been remplaced by editable combo box. To enhance general information and has more INSPIRE compatibility, contact position is added to general information.
1 parent 25c68c6 commit 5473c33

5 files changed

Lines changed: 152 additions & 22 deletions

File tree

src/app/qgsprojectproperties.cpp

Lines changed: 97 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
#include "qgsexpressioncontext.h"
5252
#include "qgsmapoverviewcanvas.h"
5353

54+
#include "qgsmessagelog.h"
55+
5456
//qt includes
5557
#include <QInputDialog>
5658
#include <QFileDialog>
@@ -270,10 +272,66 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
270272
mWMSAbstract->setPlainText( QgsProject::instance()->readEntry( "WMSServiceAbstract", "/", "" ) );
271273
mWMSOnlineResourceLineEdit->setText( QgsProject::instance()->readEntry( "WMSOnlineResource", "/", "" ) );
272274
mWMSUrlLineEdit->setText( QgsProject::instance()->readEntry( "WMSUrl", "/", "" ) );
273-
mWMSFees->setText( QgsProject::instance()->readEntry( "WMSFees", "/", "" ) );
274-
mWMSAccessConstraints->setText( QgsProject::instance()->readEntry( "WMSAccessConstraints", "/", "" ) );
275275
mWMSKeywordList->setText( QgsProject::instance()->readListEntry( "WMSKeywordList", "/" ).join( ", " ) );
276276

277+
// WMS Contact Position
278+
QString contactPositionText = QgsProject::instance()->readEntry( "WMSContactPosition", "/", "" );
279+
mWMSContactPositionCb->addItem( "" );
280+
mWMSContactPositionCb->addItem( tr( "Custodian" ), "custodian" );
281+
mWMSContactPositionCb->addItem( tr( "Owner" ), "owner" );
282+
mWMSContactPositionCb->addItem( tr( "User" ), "user" );
283+
mWMSContactPositionCb->addItem( tr( "Distributor" ), "distributor" );
284+
mWMSContactPositionCb->addItem( tr( "Originator" ), "originator" );
285+
mWMSContactPositionCb->addItem( tr( "Point of contact" ), "pointOfContact" );
286+
mWMSContactPositionCb->addItem( tr( "Principal investigator" ), "principalInvestigator" );
287+
mWMSContactPositionCb->addItem( tr( "Processor" ), "processor" );
288+
mWMSContactPositionCb->addItem( tr( "Publisher" ), "publisher" );
289+
mWMSContactPositionCb->addItem( tr( "Author" ), "author" );
290+
int contactPositionIndex = mWMSContactPositionCb->findData( contactPositionText );
291+
if ( contactPositionIndex > 0 )
292+
{
293+
mWMSContactPositionCb->setCurrentIndex( contactPositionIndex );
294+
}
295+
else if ( contactPositionText != "" )
296+
{
297+
mWMSContactPositionCb->setEditText( contactPositionText );
298+
}
299+
300+
// WMS Fees
301+
QString feesText = QgsProject::instance()->readEntry( "WMSFees", "/", "" );
302+
mWMSFeesCb->addItem( tr( "Conditions unknown" ), "conditions unknown" );
303+
mWMSFeesCb->addItem( tr( "No conditions apply" ), "no conditions apply" );
304+
int feesIndex = mWMSFeesCb->findData( feesText );
305+
if ( feesIndex > -1 )
306+
{
307+
mWMSFeesCb->setCurrentIndex( feesIndex );
308+
}
309+
else if ( feesText != "" )
310+
{
311+
mWMSFeesCb->setEditText( feesText );
312+
}
313+
314+
// WMS Access Constraints
315+
QString accessConstraintsText = QgsProject::instance()->readEntry( "WMSAccessConstraints", "/", "" );
316+
mWMSAccessConstraintsCb->addItem( tr( "None" ), "None" );
317+
mWMSAccessConstraintsCb->addItem( tr( "Copyright" ), "copyright" );
318+
mWMSAccessConstraintsCb->addItem( tr( "Patent" ), "patent" );
319+
mWMSAccessConstraintsCb->addItem( tr( "Patent pending" ), "patentPending" );
320+
mWMSAccessConstraintsCb->addItem( tr( "Trademark" ), "trademark" );
321+
mWMSAccessConstraintsCb->addItem( tr( "License" ), "license" );
322+
mWMSAccessConstraintsCb->addItem( tr( "Intellectual property rights" ), "intellectualPropertyRights" );
323+
mWMSAccessConstraintsCb->addItem( tr( "Restricted" ), "restricted" );
324+
mWMSAccessConstraintsCb->addItem( tr( "Other restrictions" ), "otherRestrictions" );
325+
int accessConstraintsIndex = mWMSAccessConstraintsCb->findData( accessConstraintsText );
326+
if ( accessConstraintsIndex > -1 )
327+
{
328+
mWMSAccessConstraintsCb->setCurrentIndex( accessConstraintsIndex );
329+
}
330+
else if ( accessConstraintsText != "" )
331+
{
332+
mWMSAccessConstraintsCb->setEditText( accessConstraintsText );
333+
}
334+
277335
// WMS GetFeatureInfo precision
278336
int WMSprecision = QgsProject::instance()->readNumEntry( "WMSPrecision", "/", -1 );
279337
if ( WMSprecision != -1 )
@@ -737,8 +795,43 @@ void QgsProjectProperties::apply()
737795
QgsProject::instance()->writeEntry( "WMSServiceAbstract", "/", mWMSAbstract->toPlainText() );
738796
QgsProject::instance()->writeEntry( "WMSOnlineResource", "/", mWMSOnlineResourceLineEdit->text() );
739797
QgsProject::instance()->writeEntry( "WMSUrl", "/", mWMSUrlLineEdit->text() );
740-
QgsProject::instance()->writeEntry( "WMSFees", "/", mWMSFees->text() );
741-
QgsProject::instance()->writeEntry( "WMSAccessConstraints", "/", mWMSAccessConstraints->text() );
798+
799+
// WMS Contact Position
800+
int contactPositionIndex = mWMSContactPositionCb->currentIndex();
801+
QString contactPositionText = mWMSContactPositionCb->currentText();
802+
if ( contactPositionText != "" && contactPositionText == mWMSContactPositionCb->itemText( contactPositionIndex ) )
803+
{
804+
QgsProject::instance()->writeEntry( "WMSContactPosition", "/", mWMSContactPositionCb->itemData( contactPositionIndex ).toString() );
805+
}
806+
else
807+
{
808+
QgsProject::instance()->writeEntry( "WMSContactPosition", "/", contactPositionText );
809+
}
810+
811+
// WMS Fees
812+
int feesIndex = mWMSFeesCb->currentIndex();
813+
QString feesText = mWMSFeesCb->currentText();
814+
if ( feesText != "" && feesText == mWMSFeesCb->itemText( feesIndex ) )
815+
{
816+
QgsProject::instance()->writeEntry( "WMSFees", "/", mWMSFeesCb->itemData( feesIndex ).toString() );
817+
}
818+
else
819+
{
820+
QgsProject::instance()->writeEntry( "WMSFees", "/", feesText );
821+
}
822+
823+
// WMS Access Constraints
824+
int accessConstraintsIndex = mWMSAccessConstraintsCb->currentIndex();
825+
QString accessConstraintsText = mWMSAccessConstraintsCb->currentText();
826+
if ( accessConstraintsText != "" && accessConstraintsText == mWMSAccessConstraintsCb->itemText( accessConstraintsIndex ) )
827+
{
828+
QgsProject::instance()->writeEntry( "WMSAccessConstraints", "/", mWMSAccessConstraintsCb->itemData( accessConstraintsIndex ).toString() );
829+
}
830+
else
831+
{
832+
QgsProject::instance()->writeEntry( "WMSAccessConstraints", "/", accessConstraintsText );
833+
}
834+
742835
//WMS keyword list
743836
QStringList keywordStringList = mWMSKeywordList->text().split( ',' );
744837
if ( keywordStringList.size() > 0 )

src/server/qgsserverprojectparser.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,18 @@ void QgsServerProjectParser::serviceCapabilities( QDomElement& parentElement, QD
491491
QDomText contactOrganizationText = doc.createTextNode( contactOrganizationString );
492492
wmsContactOrganizationElem.appendChild( contactOrganizationText );
493493
contactPersonPrimaryElem.appendChild( wmsContactOrganizationElem );
494+
495+
//Contact position
496+
QDomElement contactPositionElem = propertiesElement.firstChildElement( "WMSContactPosition" );
497+
QString contactPositionString;
498+
if ( !contactPositionElem.isNull() )
499+
{
500+
contactPositionString = contactPositionElem.text();
501+
}
502+
QDomElement wmsContactPositionElem = doc.createElement( "ContactPosition" );
503+
QDomText contactPositionText = doc.createTextNode( contactPositionString );
504+
wmsContactPositionElem.appendChild( contactPositionText );
505+
contactPersonPrimaryElem.appendChild( wmsContactPositionElem );
494506
contactInfoElem.appendChild( contactPersonPrimaryElem );
495507

496508
//phone

src/ui/qgsprojectpropertiesbase.ui

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1449,12 +1449,6 @@
14491449
<string notr="true">projowsserver</string>
14501450
</property>
14511451
<layout class="QGridLayout" name="gridLayout_6">
1452-
<item row="7" column="1">
1453-
<widget class="QLineEdit" name="mWMSFees"/>
1454-
</item>
1455-
<item row="8" column="1">
1456-
<widget class="QLineEdit" name="mWMSAccessConstraints"/>
1457-
</item>
14581452
<item row="0" column="0">
14591453
<widget class="QLabel" name="label_10">
14601454
<property name="text">
@@ -1485,13 +1479,13 @@
14851479
</property>
14861480
</widget>
14871481
</item>
1488-
<item row="4" column="1">
1482+
<item row="5" column="1">
14891483
<widget class="QLineEdit" name="mWMSContactMail"/>
14901484
</item>
14911485
<item row="3" column="1">
14921486
<widget class="QLineEdit" name="mWMSContactPerson"/>
14931487
</item>
1494-
<item row="4" column="0">
1488+
<item row="5" column="0">
14951489
<widget class="QLabel" name="label_13">
14961490
<property name="text">
14971491
<string>E-Mail</string>
@@ -1501,7 +1495,7 @@
15011495
<item row="1" column="1">
15021496
<widget class="QLineEdit" name="mWMSContactOrganization"/>
15031497
</item>
1504-
<item row="5" column="0">
1498+
<item row="6" column="0">
15051499
<widget class="QLabel" name="label_12">
15061500
<property name="text">
15071501
<string>Phone</string>
@@ -1514,7 +1508,7 @@
15141508
<item row="0" column="1">
15151509
<widget class="QLineEdit" name="mWMSTitle"/>
15161510
</item>
1517-
<item row="6" column="0">
1511+
<item row="7" column="0">
15181512
<widget class="QLabel" name="label_15">
15191513
<property name="text">
15201514
<string>Abstract</string>
@@ -1524,20 +1518,20 @@
15241518
</property>
15251519
</widget>
15261520
</item>
1527-
<item row="5" column="1">
1521+
<item row="6" column="1">
15281522
<widget class="QLineEdit" name="mWMSContactPhone"/>
15291523
</item>
1530-
<item row="6" column="1">
1524+
<item row="7" column="1">
15311525
<widget class="QTextEdit" name="mWMSAbstract"/>
15321526
</item>
1533-
<item row="9" column="0">
1527+
<item row="10" column="0">
15341528
<widget class="QLabel" name="mWMSKeywordListLabel">
15351529
<property name="text">
15361530
<string>Keyword list</string>
15371531
</property>
15381532
</widget>
15391533
</item>
1540-
<item row="9" column="1">
1534+
<item row="10" column="1">
15411535
<widget class="QLineEdit" name="mWMSKeywordList"/>
15421536
</item>
15431537
<item row="1" column="0">
@@ -1550,20 +1544,48 @@
15501544
</property>
15511545
</widget>
15521546
</item>
1553-
<item row="8" column="0">
1547+
<item row="9" column="0">
15541548
<widget class="QLabel" name="mWMSAccessConstraintsLabel">
15551549
<property name="text">
15561550
<string>Access constraints</string>
15571551
</property>
15581552
</widget>
15591553
</item>
1560-
<item row="7" column="0">
1554+
<item row="8" column="0">
15611555
<widget class="QLabel" name="mWMSFeesLabel">
15621556
<property name="text">
15631557
<string>Fees</string>
15641558
</property>
15651559
</widget>
15661560
</item>
1561+
<item row="8" column="1">
1562+
<widget class="QComboBox" name="mWMSFeesCb">
1563+
<property name="editable">
1564+
<bool>true</bool>
1565+
</property>
1566+
</widget>
1567+
</item>
1568+
<item row="9" column="1">
1569+
<widget class="QComboBox" name="mWMSAccessConstraintsCb">
1570+
<property name="editable">
1571+
<bool>true</bool>
1572+
</property>
1573+
</widget>
1574+
</item>
1575+
<item row="4" column="0">
1576+
<widget class="QLabel" name="label_20">
1577+
<property name="text">
1578+
<string>Position</string>
1579+
</property>
1580+
</widget>
1581+
</item>
1582+
<item row="4" column="1">
1583+
<widget class="QComboBox" name="mWMSContactPositionCb">
1584+
<property name="editable">
1585+
<bool>true</bool>
1586+
</property>
1587+
</widget>
1588+
</item>
15671589
</layout>
15681590
</widget>
15691591
</item>
@@ -2391,9 +2413,10 @@
23912413
<tabstop>mWMSContactPerson</tabstop>
23922414
<tabstop>mWMSContactMail</tabstop>
23932415
<tabstop>mWMSContactPhone</tabstop>
2416+
<tabstop>mWMSContactPositionCb</tabstop>
23942417
<tabstop>mWMSAbstract</tabstop>
2395-
<tabstop>mWMSFees</tabstop>
2396-
<tabstop>mWMSAccessConstraints</tabstop>
2418+
<tabstop>mWMSFeesCb</tabstop>
2419+
<tabstop>mWMSAccessConstraintsCb</tabstop>
23972420
<tabstop>mWMSKeywordList</tabstop>
23982421
<tabstop>grpWMSExt</tabstop>
23992422
<tabstop>mWMSExtMinX</tabstop>

tests/testdata/qgis_server/getcapabilities.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Content-Type: text/xml; charset=utf-8
1515
<ContactPersonPrimary>
1616
<ContactPerson>Alessandro Pasotti</ContactPerson>
1717
<ContactOrganization>QGIS dev team</ContactOrganization>
18+
<ContactPosition></ContactPosition>
1819
</ContactPersonPrimary>
1920
<ContactVoiceTelephone></ContactVoiceTelephone>
2021
<ContactElectronicMailAddress>elpaso@itopen.it</ContactElectronicMailAddress>

tests/testdata/qgis_server/getprojectsettings.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Content-Type: text/xml; charset=utf-8
1515
<ContactPersonPrimary>
1616
<ContactPerson>Alessandro Pasotti</ContactPerson>
1717
<ContactOrganization>QGIS dev team</ContactOrganization>
18+
<ContactPosition></ContactPosition>
1819
</ContactPersonPrimary>
1920
<ContactVoiceTelephone></ContactVoiceTelephone>
2021
<ContactElectronicMailAddress>elpaso@itopen.it</ContactElectronicMailAddress>

0 commit comments

Comments
 (0)