DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:routeplaner

Routeplaner Plugin

Compatible with DokuWiki

No compatibility info given!

plugin Expand contact information with a description of the journey using lycos.de.

Last updated on
2008-10-26
Provides
Syntax

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

By Deshi

Description

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 Lycos.de offer this service even for private homepages.

The plugin uses this service.

(Update see Discussion.)

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.

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

Options:

  • 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. Lycos.de is just supporting the German country names.

Installation

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/“.

DONE!

syntax.php

syntax.php
<?php
 
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'syntax.php');
 
/**
 * 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'  => 'deshi@web.de',
            'date'   => '16/01/2006',
            'name'   => 'Routeplaner Plugin',
            'desc'   => 'plan your route using lycos',
            'url'    => 'http://www.dokuwiki.org/plugin:routeplaner',
        );
    }
 
    /**
     * 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=\"http://www.lycos.de/routenplaner/index.html\">";
        $ret .= "<input type=\"hidden\" name=\"tocountry\" value=\"DEU\" />";//crv:20081026 Not nice to fix it with 'DEU', this is a greater fix, see http://jaloma.ac.googlepages.com/plugin%3Aroutenplaner 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(http://www.lycos.de/i/c/reise/routenplaner/box_partner.gif);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 :
?>

style.css

style.css
.breaker{overflow:hidden;height:1px;clear:both}
 
.columns1{
	text-align:left;
	margin:0px 9px;
	width:autopx;
}
h1{
	font: bold 18px "Trebuchet MS", Tahoma, Geneva, Arial, Helvetica, sans-serif ;color: #000;
	height:19px;
	margin: 0px 0px 0px 0px;
}
div.button{margin:auto}
div.button .btnleft, div.button .btnright{
	height:20px;
	width:5px;
	background-image: url(http://static.lycos-europe.net/de/i_slim/button_left.gif);
	float:left;
}
div.button .btnright{background-image: url(http://static.lycos-europe.net/de/i_slim/button_right.gif)}
div.button .btncenter{
	float:left;
	height:20px;
	background-image: url(http://static.lycos-europe.net/de/i_slim/button_center.gif);
	overflow:hidden;
}
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;
	margin-top:2px;
	height:19px;
	text-align:center;
}
.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 lycos.de 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 lycos.de “Umlaute” (like ß,ä,ö,ü) aren´t displayed correct. I tried utf8_decode()- without success.
  • Firefox makes the loaded GIF disappear on mouse over.

Discussion

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

Spelling

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

Download

Drop the code to googlecode.com jaloma2009-01-03 18:00 CET

plugin/routeplaner.txt · Last modified: 2010-10-17 22:16 by ach