Πίνακας Περιεχομένων

Link Way Plugin

Compatible with DokuWiki

No compatibility info given!

plugin Extends the link syntax so you can put the link text before the brackets

Last updated on
2006-06-29
Provides
Syntax

The missing download url means that this extension cannot be installed via the Extension Manager. Please see Publishing a Plugin on dokuwiki.org. Recommended are public repository hosts like GitHub, GitLab or Bitbucket.

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 links

This plugin extends DokuWiki's link syntax. It should not interfere with the built in syntax.

Syntax

Basically, this plugin lets you put the link title text before the bracketed link.

title[[syntax]]

and

"this is a link"[[syntax]]

or

title[wiki:syntax]

and

"this is a link"[wiki:syntax]

Note that you can use single or double brackets. Surround the title text with double quotes if you are using multiple words.

Installation

Search and install the plugin using the Extension Manager. Refer to Plugins on how to install plugins manually.

syntax.php

<?php
/**
* LinkWay Plugin: extends DokuWiki's link syntax.
* 
* @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author     Allen Ormond <aormond [at] gmail>  
*/
 
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_linkway extends DokuWiki_Syntax_Plugin {
 
	/**
	* return some info
	*/
	function getInfo(){
		return array(
			'author' => 'Allen Ormond',
			'email'  => 'aormond at gmaildotcom',
			'date'   => '2006-06-29',
			'name'   => 'Link Way',
			'desc'   => 'Extends DokuWiki\'s link syntax.',
			'url'    => 'http://www.dokuwiki.org/plugin:link_way',
			);
		}
 
		/**
		* Syntax Type
		*
		* Needs to return one of the mode types defined in $PARSER_MODES in parser.php
		*/
		function getType(){
			return('substition');
		}
 
		function connectTo($mode) {
			$this->Lexer->addSpecialPattern('[a-zA-Z0-9]+?\[{1,2}.*?\]{1,2}',$mode,'plugin_linkway');
			$this->Lexer->addSpecialPattern('"[a-zA-Z0-9 ]+?"\[{1,2}.*?\]{1,2}',$mode,'plugin_linkway');
			}
 
			function getSort() {
				return 244;
			}
 
			/**
			* Handler to prepare matched data for the rendering process
			*/
			function handle($match, $state, $pos, &$handler){
				if (preg_match('/"[a-zA-Z0-9 ]+?"\[/',$match)){
					preg_match_all('/"([a-zA-Z0-9 ]+?)"\[{1,2}(.*?)\]{1,2}/',$match, $matches);
					$link = $matches[2][0];
					$text = $matches[1][0];
					return array($link, $text);
				} else {
					preg_match_all('/([a-zA-Z0-9]+?)\[{1,2}(.*?)\]{1,2}/',$match, $matches);
					$link = $matches[2][0];
					$text = $matches[1][0];
					return array($link, $text);					
				}
			}
 
			/**
			* Handles the actual output creation.
			*/
			function render($format, &$renderer, $data) {
				$renderer->internallink($data[0],$data[1]); 
			}
 
		}
		//Setup VIM: ex: et ts=4 enc=utf-8 :
?>

Revision History

Bugs

Discussion

This is my first attempt at a plugin. It's been working fine for me, but please let me know of any suggestions/problems. — Allen Ormond 2006-06-30 07:26

Seems to be useful. Just some notes:

Matthias Watermann 2007-01-18 15:07