http://www.mediawiki.org/wiki/Special:Code/MediaWiki/73708
Revision: 73708
Author: jeroendedauw
Date: 2010-09-25 03:47:22 +0000 (Sat, 25 Sep 2010)
Log Message:
-----------
Addded distance criterion
Modified Paths:
--------------
trunk/extensions/Maps/Maps.i18n.php
trunk/extensions/Maps/Maps.php
trunk/extensions/Maps/includes/manipulations/Maps_ParamService.php
trunk/extensions/Maps/includes/parserHooks/Maps_Distance.php
Added Paths:
-----------
trunk/extensions/Maps/includes/criteria/CriterionIsDistance.php
Modified: trunk/extensions/Maps/Maps.i18n.php
===================================================================
--- trunk/extensions/Maps/Maps.i18n.php 2010-09-25 02:46:36 UTC (rev 73707)
+++ trunk/extensions/Maps/Maps.i18n.php 2010-09-25 03:47:22 UTC (rev 73708)
@@ -49,7 +49,7 @@
'maps_map_cannot_be_displayed' => 'The map cannot be displayed.',
// Distance
- 'maps_invalid_distance' => 'The value $1 is not a valid distance.',
+ 'validation-error-invalid-distance' => 'The value $1 is not a valid
distance.',
// Geocoding
'maps-geocoder-not-available' => 'The geocoding feature of Maps is not
available. Your location can not be geocoded.',
Modified: trunk/extensions/Maps/Maps.php
===================================================================
--- trunk/extensions/Maps/Maps.php 2010-09-25 02:46:36 UTC (rev 73707)
+++ trunk/extensions/Maps/Maps.php 2010-09-25 03:47:22 UTC (rev 73708)
@@ -103,6 +103,7 @@
// Autoload the "includes/criteria/" classes.
$criDir = $incDir . 'criteria/';
+ $wgAutoloadClasses['CriterionIsDistance'] = $criDir .
'CriterionIsDistance.php';
$wgAutoloadClasses['CriterionIsLocation'] = $criDir .
'CriterionIsLocation.php';
$wgAutoloadClasses['CriterionMapDimension'] = $criDir .
'CriterionMapDimension.php';
Added: trunk/extensions/Maps/includes/criteria/CriterionIsDistance.php
===================================================================
--- trunk/extensions/Maps/includes/criteria/CriterionIsDistance.php
(rev 0)
+++ trunk/extensions/Maps/includes/criteria/CriterionIsDistance.php
2010-09-25 03:47:22 UTC (rev 73708)
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * Parameter criterion stating that the value must be a distance.
+ *
+ * @since 0.7
+ *
+ * @file CriterionIsDistance.php
+ * @ingroup Maps
+ * @ingroup Criteria
+ *
+ * @author Jeroen De Dauw
+ */
+class CriterionIsDistance extends ItemParameterCriterion {
+
+ /**
+ * Constructor.
+ *
+ * @since 0.7
+ */
+ public function __construct() {
+ parent::__construct();
+ }
+
+ /**
+ * @see ItemParameterCriterion::validate
+ */
+ protected function doValidation( $value ) {
+ return MapsDistanceParser::isDistance( $value );
+ }
+
+ /**
+ * @see ItemParameterCriterion::getItemErrorMessage
+ */
+ protected function getItemErrorMessage( Parameter $parameter ) {
+ return wfMsgExt( 'validation-error-invalid-distance',
'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
Property changes on:
trunk/extensions/Maps/includes/criteria/CriterionIsDistance.php
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/extensions/Maps/includes/manipulations/Maps_ParamService.php
===================================================================
--- trunk/extensions/Maps/includes/manipulations/Maps_ParamService.php
2010-09-25 02:46:36 UTC (rev 73707)
+++ trunk/extensions/Maps/includes/manipulations/Maps_ParamService.php
2010-09-25 03:47:22 UTC (rev 73708)
@@ -41,7 +41,7 @@
$this->feature = $feature;
$this->serviceParams = $serviceParams;
- }
+ }
/**
* @see ItemParameterManipulation::doManipulation
Modified: trunk/extensions/Maps/includes/parserHooks/Maps_Distance.php
===================================================================
--- trunk/extensions/Maps/includes/parserHooks/Maps_Distance.php
2010-09-25 02:46:36 UTC (rev 73707)
+++ trunk/extensions/Maps/includes/parserHooks/Maps_Distance.php
2010-09-25 03:47:22 UTC (rev 73708)
@@ -58,10 +58,8 @@
$params = array();
- $params['distance'] = new Parameter(
- 'distance'
- // TODO: add distance criterion
- );
+ $params['distance'] = new Parameter( 'distance' );
+ $params['distance']->addCriteria( new CriterionIsDistance() );
$params['unit'] = new Parameter(
'unit',
@@ -106,15 +104,7 @@
*/
public function render( array $parameters ) {
$distanceInMeters = MapsDistanceParser::parseDistance(
$parameters['distance'] );
-
- if ( $distanceInMeters ) {
- $output = MapsDistanceParser::formatDistance(
$distanceInMeters, $parameters['unit'], $parameters['decimals'] );
- } else {
- // TODO: use ParserHook class methods to handle errors
- $output = wfMsgExt( 'maps_invalid_distance',
'parsemag', '<b>' . $parameters['distance'] . '</b>' );
- }
-
- return $output;
+ return MapsDistanceParser::formatDistance( $distanceInMeters,
$parameters['unit'], $parameters['decimals'] );
}
}
\ No newline at end of file
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs