This is an old revision of the document!
Table of Contents
DokuWiki Plugin: label
Compatible with DokuWiki
2008-05-05, 2006-11-06, 2007-05-24, 2007-06-26b
Allows to mark parts of the wikipage with labels in order to be qualified for special use with the embed plugin.
This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.
Needed for reproduce
Requirements
I've developed the plugin under the DokuWiki version of 2006-11-06 and seems to work with version 2007-06-26 as well.
Download / Installation
Download the plugin here (manually or via Plugin Manager): http://pb.wh4f.de/dokuwiki/label.zip
Syntax and Use
The wiki-portion to mark has to be included in <label theLabel>wikicode</label>, whereas wikicode is arbitrary wikicode and theLabel is an identifier consisting of letters (a-z, A-Z), number (0-9) and underscore (_).
Example:
Here is a sample phrase: <label example> The quick brown fox jumps over the lazy dog. </label>
The example is labeled and can be processed by another plugin, e.g. the embed-plugin.
Labels and Lists
In order to be recognized as a list, a line in DokuWiki has to start with spaces before the leading *
. Therefore, you are required to start a label after the *, like here:
* <label element1>Element 1</label> * <label element2>Element 2</label> * <label element3>Element 3</label>
Code
(sorry, will be properly indented when I have some time)
<?php /** * Plugin Label: Allows to mark parts of the wikipage with labels in order to * be qualified for special use in other plugins * * Sytnax: <label [a-zA-Z0-9_]+>...</label> * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Pascal Bihler <bihler@iai.uni-bonn.de> */ // must be run within DokuWiki if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'syntax.php'); class syntax_plugin_label extends DokuWiki_Syntax_Plugin { var $last_label = array(); var $LABEL_PATTERN = "[a-zA-Z0-9_]+"; /** * return some info */ function getInfo(){ return array( 'author' => 'Pascal Bihler', 'email' => 'bihler@iai.uni-bonn.de', 'date' => '2007-05-14', 'name' => 'Label Plugin', 'desc' => 'Allows to mark parts of the wikipage with labels', 'url' => 'http://www.dokuwiki.org/plugin:label', ); } function getType(){ return 'substition'; } function getPType(){ return 'normal'; } function getSort(){ return 100; } function connectTo($mode) { $this->Lexer->addSpecialPattern('</label>',$mode,'plugin_label'); $this->Lexer->addSpecialPattern('<label\s+' . $this->LABEL_PATTERN . '\s*>',$mode,'plugin_label'); } /** * Handle the match */ function handle($match, $state, $pos, &$handler){ switch ($state) { case DOKU_LEXER_SPECIAL : if (preg_match('/<label\s+(' . $this->LABEL_PATTERN . ')\s*>/',$match,$matches)) { $labek = $matches[1]; array_push($this->last_label,$label); return array("start", $label); } else if ($match == "</label>") { $label = array_pop($this->last_label); return array("end", $label); } } return array(); } /** * Create output */ function render($mode, &$renderer, $data) { //doesn't do much, since label is something internal return true; } } //Setup VIM: ex: et ts=4 enc=utf-8 :