From: Magnus Manske Date: Fri, 16 Jul 2004 20:32:44 +0000 (+0000) Subject: GEO mode X-Git-Tag: 1.5.0alpha1~2665 X-Git-Url: http://git.cyclocoop.org/%28?a=commitdiff_plain;h=67bcaab800b5ec0d36b88c0f29023a0ab82d3c96;p=lhc%2Fweb%2Fwiklou.git GEO mode --- diff --git a/includes/Parser.php b/includes/Parser.php index a1e26cfe50..09784db28c 100644 --- a/includes/Parser.php +++ b/includes/Parser.php @@ -802,6 +802,7 @@ class Parser //$text = $this->doTokenizedParser ( $text ); $text = $this->doTableStuff ( $text ) ; $text = $this->magicISBN( $text ); + $text = $this->magicGEO( $text ); $text = $this->magicRFC( $text ); $text = $this->formatHeadings( $text, $isMain ); $sk =& $this->mOptions->getSkin(); @@ -2090,6 +2091,55 @@ class Parser return $text; } + # Return an HTML link for the "GEO ..." text + /* private */ function magicGEO( $text ) { + global $wgLang, $wgUseGeoMode; + if ( !isset ( $wgUseGeoMode ) || !$wgUseGeoMode ) return $text ; + $fname = 'Parser::magicGEO'; + wfProfileIn( $fname ); + + # These next five lines are only for the ~35000 U.S. Census Rambot pages... + $directions = array ( "N" => "North" , "S" => "South" , "E" => "East" , "W" => "West" ) ; + $text = preg_replace ( "/(\d+)°(\d+)'(\d+)\" {$directions['N']}, (\d+)°(\d+)'(\d+)\" {$directions['W']}/" , "(GEO +\$1.\$2.\$3:-\$4.\$5.\$6)" , $text ) ; + $text = preg_replace ( "/(\d+)°(\d+)'(\d+)\" {$directions['N']}, (\d+)°(\d+)'(\d+)\" {$directions['E']}/" , "(GEO +\$1.\$2.\$3:+\$4.\$5.\$6)" , $text ) ; + $text = preg_replace ( "/(\d+)°(\d+)'(\d+)\" {$directions['S']}, (\d+)°(\d+)'(\d+)\" {$directions['W']}/" , "(GEO +\$1.\$2.\$3:-\$4.\$5.\$6)" , $text ) ; + $text = preg_replace ( "/(\d+)°(\d+)'(\d+)\" {$directions['S']}, (\d+)°(\d+)'(\d+)\" {$directions['E']}/" , "(GEO +\$1.\$2.\$3:+\$4.\$5.\$6)" , $text ) ; + + $a = split( 'GEO ', " $text" ); + if ( count ( $a ) < 2 ) { + wfProfileOut( $fname ); + return $text; + } + $text = substr( array_shift( $a ), 1); + $valid = '0123456789.+-:'; + + foreach ( $a as $x ) { + $geo = $blank = '' ; + while ( ' ' == $x{0} ) { + $blank .= ' '; + $x = substr( $x, 1 ); + } + while ( strstr( $valid, $x{0} ) != false ) { + $geo .= $x{0}; + $x = substr( $x, 1 ); + } + $num = str_replace( '+', '', $geo ); + $num = str_replace( ' ', '', $num ); + + if ( '' == $num || count ( explode ( ":" , $num , 3 ) ) < 2 ) { + $text .= "GEO $blank$x"; + } else { + $titleObj = Title::makeTitle( NS_SPECIAL, 'Geo' ); + $text .= 'GEO $geo"; + $text .= $x; + } + } + wfProfileOut( $fname ); + return $text; + } + # Return an HTML link for the "RFC 1234" text /* private */ function magicRFC( $text ) { global $wgLang; diff --git a/includes/SpecialGeo.php b/includes/SpecialGeo.php new file mode 100644 index 0000000000..f57f49a0cc --- /dev/null +++ b/includes/SpecialGeo.php @@ -0,0 +1,71 @@ + +# http://www.mediawiki.org/ +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# http://www.gnu.org/copyleft/gpl.html + +function wfSpecialGeo( $page = "" ) { + global $wgOut, $wgLang; + $coordinates = $_GET['coordinates'] ; + $coordinates = explode ( ":" , $coordinates ) ; + $ns = array_shift ( $coordinates ) ; + $ew = array_shift ( $coordinates ) ; + if ( 0 < count ( $coordinates ) ) $zoom = length ( array_shift ( $coordinates ) ) ; + else $zoom = 6 ; + + $ns = explode ( "." , $ns ) ; + $ew = explode ( "." , $ew ) ; + while ( count ( $ns ) < 3 ) $ns[] = "0" ; + while ( count ( $ew ) < 3 ) $ew[] = "0" ; + + $mapquest = "http://www.mapquest.com/maps/map.adp?latlongtype=decimal&latitude={$ns[0]}.{$ns[1]}&longitude={$ew[0]}.{$ew[1]}&zoom={$zoom}" ; + $mapquest = "Mapquest" ; + + + $wgOut->addHTML( "{$mapquest}" ) ; +/* + if( $wgRequest->getVal( 'action' ) == 'submit') { + $page = $wgRequest->getText( 'pages' ); + $curonly = $wgRequest->getCheck( 'curonly' ); + } else { + # Pre-check the 'current version only' box in the UI + $curonly = true; + } + + if( $page != "" ) { + header( "Content-type: application/xml; charset=utf-8" ); + $pages = explode( "\n", $page ); + $xml = pages2xml( $pages, $curonly ); + echo $xml; + wfAbruptExit(); + } + + $wgOut->addWikiText( wfMsg( "exporttext" ) ); + $titleObj = Title::makeTitle( NS_SPECIAL, "Export" ); + $action = $titleObj->escapeLocalURL(); + $wgOut->addHTML( " +
+ +
+
+ +
+" ); +*/ +} + +?> diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php index c8e97f2311..4dcb7e9b17 100644 --- a/includes/SpecialPage.php +++ b/includes/SpecialPage.php @@ -37,6 +37,7 @@ $wgSpecialPages = array_merge($wgSpecialPages, array ( "Recentchangeslinked" => new UnlistedSpecialPage( "Recentchangeslinked" ), "Movepage" => new UnlistedSpecialPage( "Movepage" ), "Blockme" => new UnlistedSpecialPage( "Blockme" ), + "Geo" => new SpecialPage( "Geo" ), "Booksources" => new SpecialPage( "Booksources" ), "Categories" => new SpecialPage( "Categories" ), "Export" => new SpecialPage( "Export" ), diff --git a/languages/Language.php b/languages/Language.php index 255c22ea4a..feb4487d04 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -885,6 +885,7 @@ That comes to '''$5''' average edits per page, and '''$6''' views per edit.", # Miscellaneous special pages # 'orphans' => 'Orphaned pages', +'geo' => 'GEO coordinates', 'lonelypages' => 'Orphaned pages', 'unusedimages' => 'Unused images', 'popularpages' => 'Popular pages',