It's better when it's simple

User Tools

Site Tools


Routeplaner Plugin

Compatible with DokuWiki

No compatibility info given!

plugin Expand contact information with a description of the journey using

Last updated on

This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.

Tagged with address, embed, maps, media


You ever felt like offering an individual description of the journey to your habitat for your visitors - e.g. a company for customers. Some websites like offer this service even for private homepages.

The plugin uses this service.

Syntax / Usage

You have to fill in the destination address, where your visitor should go to. The address where the visitor starts from is filled into a form on the page itself.

{{routeplaner> Tim Taylor, Dreamlane 5, 123456, Hometown, Deutschland}}


  • all information has to be preserved; the name (here: “Tim Taylor”) is actually not needed for calculating the journey.
  • each single information is separated by a “,”
  • countries: actually every country seen in the drop down menu should be supported. is just supporting the German country names.


Create two files: (charset: utf8)

  1. syntax.php
  2. style.css

And copy the shown source code into it.

This files should be copied to “/plugins/routeplaner/“.



if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
 * All DokuWiki plugins to extend the parser/rendering mechanism
 * need to inherit from this class
class syntax_plugin_routeplaner extends DokuWiki_Syntax_Plugin {
     * return some info
    function getInfo(){
        return array(
            'author' => 'routeplaner',
            'email'  => '',
            'date'   => '16/01/2006',
            'name'   => 'Routeplaner Plugin',
            'desc'   => 'plan your route using lycos',
            'url'    => '',
     * Syntax-Beispiel: {{routeplaner> Hubert Meier, Mustergasse 3, 80756, München, Deutschland}}
 * Plugin Type
 	function getType(){ return 'substition'; }
 	function getSort(){ return 314; }
 	function connectTo($mode) { $this->Lexer->addSpecialPattern("\{\{routeplaner>.*?\}\}",$mode,'plugin_routeplaner'); }
 * Handle the match
    function handle($match, $state, $pos, &$handler){
        // strip markup
        $match = substr($match,14,-2);
        // split into pieces
        list($company,$street,$zip, $town, $country) = explode(',',$match,5);
        // beautify strings
        if (trim($company, " \t\n") != '') {
        	$company = trim($company, " \t\n");
        } else {
        	$company = 'Ziel';
        if (trim($street, " \t\n") != '') {
        	$street = trim($street, " \t\n");
        } else {
        	$street = 'missing street';
        if (trim($zip, " \t\n") != '') {
        	$zip = trim($zip, " \t\n");
        } else {
        	$zip = 'missing zip';
        if (trim($town, " \t\n") != '') {
        	$town = trim($town, " \t\n");
        } else {
        	$town = 'missing town';
        if (trim($country, " \t\n") != '') {
        	$country = trim($country, " \t\n");
        } else {
        	$country = 'missing country';
        return array($company,$street,$zip,$town,$country);
 * Create output
    function render($mode, &$renderer, $data) {
        if($mode == 'xhtml'){
            $renderer->doc .= $this->_contact($data);
            return true;
        return false;
 * Does the contact form xhtml creation. Adds some javascript to validate the form
 * and creates the input form.
     * Does the contact form xhtml creation. Adds some javascript to validate the form
     * and creates the input form.
    function _contact($data){
        global $lang;
        global $conf;
        global $ID;
        $ret = '';
        $ret .= "<script type=\"text/javascript\"></script>";
        $ret .= "<div class=\"columns1\">";
        $ret .= "<form name=\"routenplaner2\" method=\"get\" target=\"_blank\" action=\"\">";
        $ret .= "<input type=\"hidden\" name=\"tocountry\" value=\"DEU\" />";//crv:20081026 Not nice to fix it with 'DEU', this is a greater fix, see for an idea
        $ret .= "<input type=\"hidden\" name=\"tostreet\" value=\"".$data[1]."\" />";
        $ret .= "<input type=\"hidden\" name=\"toplz\" value=\"".$data[2]."\" />";
        $ret .= "<input type=\"hidden\" name=\"tocity\" value=\"".$data[3]."\" />";
        $ret .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"background-image:url(;background-repeat:no-repeat;width:379px;height:176px;\"><tr><td><br>";
        $ret .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style='margin-left:15px;padding: 0px 0px 0px 0px;font: 12px \"Trebuchet MS\", Tahoma, Geneva, Arial, Helvetica, sans-serif;color: #000;'>";
        $ret .= "<tr>";
        $ret .= "<td width=\"47%\"> </td>";
        $ret .= "<td width=\"6%\"> </td>";
        $ret .= "<td width=\"47%\"><strong>Ziel:</strong></td>";
        $ret .= "</tr>";
        $ret .= "<tr>";
        $ret .= "<td width=\"47%\"><strong>Start:</strong></td>";
        $ret .= "<td width=\"6%\"> </td>";
        $ret .= "<td width=\"47%\"><input type=\"text\" name=\"toname_\" value=\"".$data[0]."\" disabled=\"disabled\" style=\"width:155px;\" /></td>";
        $ret .= "</tr>";
        $ret .= "<tr>";
        $ret .= "<td><input type=\"TEXT\" name=\"fromstreet\" value=\"Straße\" size=\"12\" style=\"width: 155px;\" tabindex=\"1\" onfocus=\"javascript:if (document.routenplaner.fromstreet.value == 'Straße') document.routenplaner.fromstreet.value = '';\"></td>";
        $ret .= "<td> </td>";
        $ret .= "<td><input type=\"TEXT\" name=\"tostreet_\" value=\"".$data[1]."\" size=\"12\" style=\"width: 155px;\" tabindex=\"5\" disabled=\"disabled\" /></td>";
        $ret .= "</tr>";
        $ret .= "<tr>";
        $ret .= "<td><input type=\"TEXT\" name=\"fromplz\" value=\"PLZ\" size=\"5\" style=\"width: 45px;\"  maxlength=\"10\" tabindex=\"2\" onfocus=\"javascript:if (document.routenplaner.fromplz.value == 'PLZ') document.routenplaner.fromplz.value = '';\"> ";
        $ret .= "<input type=\"TEXT\" name=\"fromcity\" value=\"Ort\" size=\"8\" style=\"width: 101px;\" tabindex=\"3\" onfocus=\"javascript:if (document.routenplaner.fromcity.value == 'Ort') document.routenplaner.fromcity.value = '';\"></td>";
        $ret .= "<td></td>";
        $ret .= "<td><input type=\"TEXT\" name=\"toplz_\" value=\"".$data[2]."\" tabindex=\"6\" size=\"5\" style=\"width: 45px;\"  maxlength=\"10\" disabled=\"disabled\" /> ";
        $ret .= "<input type=\"TEXT\" name=\"tocity_\" value=\"".$data[3]."\" tabindex=\"7\" size=\"8\" style=\"width: 101px;\" disabled=\"disabled\" /></td>";
        $ret .= "</tr>";
        $ret .= "<tr>";
        $ret .= "<td><select name=\"fromcountry\" tabindex=\"4\" style=\"width:155px;\">";
        $ret .= "	<option value=\"---\">Bitte wählen...</option>";
        $ret .= "	<option value=\"BEL\">Belgien</option>";
        $ret .= "	<option value=\"DNK\">Dänemark</option>";
        $ret .= "	<option value=\"DEU\">Deutschland</option>";
        $ret .= "	<option value=\"FRA\">Frankreich</option>";
        $ret .= "	<option value=\"GBR\">Großbritannien</option>";
        $ret .= "	<option value=\"ITA\">Italien</option>";
        $ret .= "	<option value=\"LIE\">Liechtenstein</option>";
        $ret .= "	<option value=\"LUX\">Luxemburg</option>";
        $ret .= "	<option value=\"NLD\">Niederlande</option>";
        $ret .= "	<option value=\"NOR\">Norwegen</option>";
        $ret .= "	<option value=\"AUT\">Österreich</option>";
        $ret .= "	<option value=\"PRT\">Portugal</option>";
        $ret .= "	<option value=\"SWE\">Schweden</option>";
        $ret .= "	<option value=\"CHE\">Schweiz</option>";
        $ret .= "	<option value=\"ESP\">Spanien</option>";
        $ret .= "</select>";
        $ret .= "</td>";
        $ret .= "<td></td>";
        $ret .= "<td><input type=\"text\" name=\"tocountry_\" value=\"".$data[4]."\" disabled=\"disabled\" style=\"width:155px;\" /></td>";
        $ret .= "</tr>";
        $ret .= "<tr>";
        $ret .= "	<td colspan=\"3\" align=\"right\" style=\"float:right;\"><div class=\"button\" style=\"width:110px;text-align:center;float:right;margin-top:5px;\"><div class=\"btnleft\"></div><div class=\"btncenter\" style=\"width:90px;text-align:center;\"><input type=\"Submit\" value=\"Berechnen\"></div><div class=\"btnright\"></div><div class=\"breaker\"></div></div></td>";
        $ret .= "</tr>";
        $ret .= "</table>";
        $ret .= "</td></tr></table></form>";
        $ret .= "<div class=\"breaker\"></div>";
        $ret .= "</div>";
        return $ret;
//Setup VIM: ex: et ts=4 enc=utf-8 :


	margin:0px 9px;
	font: bold 18px "Trebuchet MS", Tahoma, Geneva, Arial, Helvetica, sans-serif ;color: #000;
	margin: 0px 0px 0px 0px;
div.button .btnleft, div.button .btnright{
	background-image: url(;
div.button .btnright{background-image: url(}
div.button .btncenter{
	background-image: url(;
div.button .btncenter a{
	text-decoration: none;
	line-height: 22px;
	padding: 0px 6px;
div.button .btncenter input{
	text-decoration: none;
	border:0px solid #000;
	background: transparent;
	font: 12px "Trebuchet MS", Tahoma, Geneva, Arial, Helvetica, sans-serif;color: #000;
	cursor: pointer;
.resulttable{width:100%;margin:0px 0px;}
.resulttable th {font: 12px "Trebuchet MS", Tahoma, Geneva, Arial, Helvetica, sans-serif;color: #000;}
.resulttable td {text-align:left;padding:3px 9px;font: 12px "Trebuchet MS", Tahoma, Geneva, Arial, Helvetica, sans-serif;color: #000;}

Compatibility with other Plugins

You can use the Plugin with other plugins. E.G. Esthers Folded-Plugin.

  ++++ Test |
  {{routeplaner> Tim Taylor, Dreamlane 5, 123456, Hometown, Deutschland}}

Known Limitations

The following limitations are known:

  • As I´m using only German language names are supported - actually. But when you are forwarded to the lycospage any country different to “Deutschland” is reset to default. Maybe due to the internal code.
  • lycos is using a charset different to utf8, so filled in information is displayed correct on your DokuWiki page. Coming to “Umlaute” (like ß,ä,ö,ü) aren´t displayed correct. I tried utf8_decode()- without success.
  • Firefox makes the loaded GIF disappear on mouse over.


Feel free to modify and improve the code.

Neat idea! Can we see the plugin in action anywhere? — Christopher Smith 2006-01-17 12:26


The plugin name is a misspelling. Unless that's intentional, it should be called “routeplanner”. — Magnus Holmgren 2008-08-12 18:22 CEST

New Version (Implementation)

Well, i did not get a response to a support question, so i fixed something (see history of this page) and implement some new ideas (Well, routenplaner is German and so…) jaloma2008-10-26 21:00 CET

plugin/routeplaner.txt · Last modified: 2018-05-14 18:57 by Aleksandr

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki