Table of Contents
Label Plugin
Compatible with DokuWiki
Anteater, Rincewind, Angua
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 :