http://www.mediawiki.org/wiki/Special:Code/MediaWiki/72815
Revision: 72815
Author: jeroendedauw
Date: 2010-09-11 15:42:32 +0000 (Sat, 11 Sep 2010)
Log Message:
-----------
Changes for 0.7 - work on parameter validation with Validator 0.4
Modified Paths:
--------------
trunk/extensions/Maps/Maps.i18n.php
trunk/extensions/Maps/Maps.php
trunk/extensions/Maps/includes/Maps_Geocoders.php
trunk/extensions/Maps/includes/parserHooks/Maps_Coordinates.php
trunk/extensions/Maps/includes/parserHooks/Maps_Geocode.php
Added Paths:
-----------
trunk/extensions/Maps/includes/criteria/CriterionIsLocation.php
Removed Paths:
-------------
trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php
Modified: trunk/extensions/Maps/Maps.i18n.php
===================================================================
--- trunk/extensions/Maps/Maps.i18n.php 2010-09-11 15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/Maps.i18n.php 2010-09-11 15:42:32 UTC (rev 72815)
@@ -23,6 +23,7 @@
'maps_map' => 'Map',
'maps-loading-map' => 'Loading map...',
'maps-markers' => 'Markers',
+ 'validation-error-invalid-location' => 'Parameter $1 must be a valid
location.',
// Coordinate handling
'maps-abb-north' => 'N',
Modified: trunk/extensions/Maps/Maps.php
===================================================================
--- trunk/extensions/Maps/Maps.php 2010-09-11 15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/Maps.php 2010-09-11 15:42:32 UTC (rev 72815)
@@ -103,7 +103,7 @@
// Autoload the "includes/criteria/" classes.
$criDir = $incDir . 'criteria/';
- $wgAutoloadClasses['CriterionAreLocations'] = $criDir .
'CriterionAreLocations.php';
+ $wgAutoloadClasses['CriterionIsLocation'] = $criDir .
'CriterionIsLocation.php';
$wgAutoloadClasses['CriterionMapDimension'] = $criDir .
'CriterionMapDimension.php';
// Autoload the "includes/features/" classes.
Modified: trunk/extensions/Maps/includes/Maps_Geocoders.php
===================================================================
--- trunk/extensions/Maps/includes/Maps_Geocoders.php 2010-09-11 15:42:01 UTC
(rev 72814)
+++ trunk/extensions/Maps/includes/Maps_Geocoders.php 2010-09-11 15:42:32 UTC
(rev 72815)
@@ -146,7 +146,7 @@
}
$geocoder = self::getValidGeocoderInstance( $geoService,
$mappingService );
-
+
// This means there was no suitable geocoder found, so return
false.
if ( $geocoder === false ) {
return false;
Deleted: trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php
===================================================================
--- trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php
2010-09-11 15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php
2010-09-11 15:42:32 UTC (rev 72815)
@@ -1,73 +0,0 @@
-<?php
-
-/**
- * Parameter criterion stating that the value must be a set of coordinates or
an address.
- *
- * @since 0.7
- *
- * @file CriterionAreLocations.php
- * @ingroup Maps
- * @ingroup Criteria
- *
- * @author Jeroen De Dauw
- */
-class CriterionAreLocations extends ItemParameterCriterion {
-
- /**
- * In some usecases, the parameter values will contain extra location
- * metadata, which should be ignored here. This field holds the
delimiter
- * used to seperata this data from the actual location.
- *
- * @since 0.7
- *
- * @var string
- */
- protected $metaDataSeparator;
-
- /**
- * Constructor.
- *
- * @since 0.7
- */
- public function __construct( $metaDataSeparator = false ) {
- parent::__construct();
-
- $this->metaDataSeparator = $metaDataSeparator;
- }
-
- /**
- * @see ItemParameterCriterion::validate
- */
- protected function doValidation( $value ) {
- if ( $this->metaDataSeparator !== false ) {
- $parts = explode( $this->metaDataSeparator, $value );
- $value = $parts[0];
- }
-
- if ( MapsGeocoders::canGeocode() ) {
- // TODO
- //$geoService = array_key_exists( 'geoservice',
$parameters ) ? $parameters['geoservice']['value'] : '';
- //$mappingService = array_key_exists( 'mappingservice',
$parameters ) ? $parameters['mappingservice']['value'] : false;
-
- return MapsGeocoders::isLocation( $value/*,
$geoService, $mappingService */ );
- } else {
- return MapsCoordinateParser::areCoordinates( $value );
- }
- }
-
- /**
- * @see ItemParameterCriterion::getItemErrorMessage
- */
- protected function getItemErrorMessage( Parameter $parameter ) {
- return wfMsgExt( '', 'parsemag', $parameter->value );
- }
-
- /**
- * @see ItemParameterCriterion::getListErrorMessage
- */
- protected function getListErrorMessage( Parameter $parameter, array
$invalidItems ) {
- global $wgLang;
- return wfMsgExt( '', 'parsemag', $wgLang->listToText(
$invalidItems ), count( $invalidItems ) );
- }
-
-}
\ No newline at end of file
Copied: trunk/extensions/Maps/includes/criteria/CriterionIsLocation.php (from
rev 72801, trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php)
===================================================================
--- trunk/extensions/Maps/includes/criteria/CriterionIsLocation.php
(rev 0)
+++ trunk/extensions/Maps/includes/criteria/CriterionIsLocation.php
2010-09-11 15:42:32 UTC (rev 72815)
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * Parameter criterion stating that the value must be a set of coordinates or
an address.
+ *
+ * @since 0.7
+ *
+ * @file CriterionIsLocation.php
+ * @ingroup Maps
+ * @ingroup Criteria
+ *
+ * @author Jeroen De Dauw
+ */
+class CriterionIsLocation extends ItemParameterCriterion {
+
+ /**
+ * In some usecases, the parameter values will contain extra location
+ * metadata, which should be ignored here. This field holds the
delimiter
+ * used to seperata this data from the actual location.
+ *
+ * @since 0.7
+ *
+ * @var string
+ */
+ protected $metaDataSeparator;
+
+ /**
+ * Constructor.
+ *
+ * @since 0.7
+ */
+ public function __construct( $metaDataSeparator = false ) {
+ parent::__construct();
+
+ $this->metaDataSeparator = $metaDataSeparator;
+ }
+
+ /**
+ * @see ItemParameterCriterion::validate
+ */
+ protected function doValidation( $value ) {
+ if ( $this->metaDataSeparator !== false ) {
+ $parts = explode( $this->metaDataSeparator, $value );
+ $value = $parts[0];
+ }
+
+ if ( MapsGeocoders::canGeocode() ) {
+ // TODO
+ //$geoService = array_key_exists( 'geoservice',
$parameters ) ? $parameters['geoservice']['value'] : '';
+ //$mappingService = array_key_exists( 'mappingservice',
$parameters ) ? $parameters['mappingservice']['value'] : false;
+ return MapsGeocoders::isLocation( $value/*,
$geoService, $mappingService */ );
+ } else {
+ return MapsCoordinateParser::areCoordinates( $value );
+ }
+ }
+
+ /**
+ * @see ItemParameterCriterion::getItemErrorMessage
+ */
+ protected function getItemErrorMessage( Parameter $parameter ) {
+ return wfMsgExt( 'validation-error-invalid-location',
'parsemag', $parameter->getOriginalName() );
+ }
+
+ /**
+ * @see ItemParameterCriterion::getListErrorMessage
+ */
+ protected function getListErrorMessage( Parameter $parameter, array
$invalidItems ) {
+ global $wgLang;
+ return wfMsgExt( '', 'parsemag', $wgLang->listToText(
$invalidItems ), count( $invalidItems ) );
+ }
+
+}
\ No newline at end of file
Modified: trunk/extensions/Maps/includes/parserHooks/Maps_Coordinates.php
===================================================================
--- trunk/extensions/Maps/includes/parserHooks/Maps_Coordinates.php
2010-09-11 15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/includes/parserHooks/Maps_Coordinates.php
2010-09-11 15:42:32 UTC (rev 72815)
@@ -57,26 +57,38 @@
global $egMapsAvailableServices, $egMapsAvailableCoordNotations;
global $egMapsDefaultServices, $egMapsDefaultGeoService,
$egMapsCoordinateNotation;
global $egMapsAllowCoordsGeocoding,
$egMapsCoordinateDirectional;
-
- return array(
- 'location' => array(
- 'required' => true,
- 'tolower' => false
- ),
- 'format' => array(
- 'criteria' => array(
- 'in_array' =>
$egMapsAvailableCoordNotations
- ),
- 'aliases' => array(
- 'notation'
- ),
- 'default' => $egMapsCoordinateNotation
- ),
- 'directional' => array(
- 'type' => 'boolean',
- 'default' => $egMapsCoordinateDirectional
- )
+
+ $params = array();
+
+ $params['location'] = new Parameter(
+ 'location',
+ Parameter::TYPE_STRING,
+ null,
+ array(),
+ array(
+ new CriterionIsLocation(),
+ )
);
+
+ $params['location']->lowerCaseValue = false;
+
+ $params['format'] = new Parameter(
+ 'format',
+ Parameter::TYPE_STRING,
+ $egMapsCoordinateNotation,
+ array( 'notation' ),
+ array(
+ new CriterionInArray(
$egMapsAvailableCoordNotations ),
+ )
+ );
+
+ $params['directional'] = new Parameter(
+ 'directional',
+ Parameter::TYPE_BOOLEAN,
+ $egMapsCoordinateDirectional
+ );
+
+ return $params;
}
/**
Modified: trunk/extensions/Maps/includes/parserHooks/Maps_Geocode.php
===================================================================
--- trunk/extensions/Maps/includes/parserHooks/Maps_Geocode.php 2010-09-11
15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/includes/parserHooks/Maps_Geocode.php 2010-09-11
15:42:32 UTC (rev 72815)
@@ -118,6 +118,7 @@
* @return string
*/
public function render( array $parameters ) {
+ var_dump($parameters);exit;
if ( MapsGeocoders::canGeocode() ) {
$geovalues = MapsGeocoders::attemptToGeocodeToString(
$parameters['location'],
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs