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

Reply via email to