http://www.mediawiki.org/wiki/Special:Code/MediaWiki/73714

Revision: 73714
Author:   jeroendedauw
Date:     2010-09-25 05:03:58 +0000 (Sat, 25 Sep 2010)

Log Message:
-----------
Changes for 0.7 - work on location parameter handling

Modified Paths:
--------------
    trunk/extensions/Maps/includes/manipulations/Maps_ParamCoordSet.php
    trunk/extensions/Maps/includes/parserHooks/Maps_DisplayPoint.php

Modified: trunk/extensions/Maps/includes/manipulations/Maps_ParamCoordSet.php
===================================================================
--- trunk/extensions/Maps/includes/manipulations/Maps_ParamCoordSet.php 
2010-09-25 04:51:04 UTC (rev 73713)
+++ trunk/extensions/Maps/includes/manipulations/Maps_ParamCoordSet.php 
2010-09-25 05:03:58 UTC (rev 73714)
@@ -14,12 +14,25 @@
 class MapsParamCoordSet extends ItemParameterManipulation {
        
        /**
+        * 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() {
+       public function __construct( $metaDataSeparator = false ) {
                parent::__construct();
+               
+               $this->metaDataSeparator = $metaDataSeparator;          
        }
        
        /**
@@ -28,12 +41,20 @@
         * @since 0.7
         */     
        public function doManipulation( &$value, array &$parameters ) {
+               if ( $this->metaDataSeparator !== false ) {
+                       $parts = explode( $this->metaDataSeparator, $value );
+                       $value = array_shift( $parts );
+               }
+               
                if ( MapsGeocoders::canGeocode() ) {
-                       // TODO
                        $value = MapsGeocoders::attemptToGeocodeToString( 
$value/*, $geoService, $mappingService*/ );
                } else {
                        $value = MapsCoordinateParser::parseAndFormat( $value );
                }
+               
+               if ( $this->metaDataSeparator !== false ) {
+                       $value = array_merge( array( $value ), $parts );
+               }
        }
        
 }
\ No newline at end of file

Modified: trunk/extensions/Maps/includes/parserHooks/Maps_DisplayPoint.php
===================================================================
--- trunk/extensions/Maps/includes/parserHooks/Maps_DisplayPoint.php    
2010-09-25 04:51:04 UTC (rev 73713)
+++ trunk/extensions/Maps/includes/parserHooks/Maps_DisplayPoint.php    
2010-09-25 05:03:58 UTC (rev 73714)
@@ -93,21 +93,12 @@
                
                $params['mappingservice']->default = 
$egMapsDefaultServices['display_point'];
                
-               $params['coordinates'] = new Parameter(
-                       'coordinates', 
-                       Parameter::TYPE_STRING,
-                       null,
-                       array( 'coords', 'location', 'locations', 'address', 
'addresses' ),
-                       array(
-                               new CriterionIsLocation(),
-                       )
-               );
+               $params['coordinates'] = new Parameter( 'coordinates' );
+               $params['coordinates']->addAliases( 'coords', 'location', 
'address', 'addresses', 'locations' );
+               $params['coordinates']->addCriteria( new CriterionIsLocation( 
'~' ) );
+               $params['coordinates']->addManipulations( new 
MapsParamCoordSet( '~' ) );               
+               $params['coordinates']->lowerCaseValue = false;         
                
-               $params['coordinates']->lowerCaseValue = false;
-               
-               // TODO
-               $params['coordinates']->outputTypes = array( 'coordinateSet' => 
array( 'coordinateSet', '~' ) );        
-
                $params['centre'] = new Parameter(
                        'centre',
                        Parameter::TYPE_STRING,



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to