plugin:class
This is an old revision of the document!
Table of Contents
class plugin
Compatible with DokuWiki
No compatibility info given!
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.
Description
This is a simply plugin to add a class to a content. It prevents to use
<html></p><div class="myStyleClass"><p></html> This is my content. <html></p></div><p></html>
Usage
Just use this syntax and change “myStyleClass” by your class.
<class myStyleClass>This is my content.</class>
Source code and installation
Put the following PHP file in /lib/plugins/class/syntax.php
- syntax.php
<?php /** * Plugin class : add a class to a content * * Syntax: <class myStyleClass>content</class> * * @author Janusz <janusz@ledruide.net> * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) */ 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'); class syntax_plugin_class extends DokuWiki_Syntax_Plugin { /** * Get an associative array with plugin info. */ function getInfo(){ return array( 'author' => 'Janusz', 'email' => 'janusz@ledruide.net', 'date' => '2008-12-15', 'name' => 'class Plugin', 'desc' => 'Simple plugin to add a class to a content', 'url' => 'http://www.dokuwiki.org/plugin:class', ); } function getType(){ return 'container'; } function getPType(){ return 'normal'; } function getAllowedTypes() { return array('container','substition','protected','disabled','formatting','paragraphs'); } // must return a number lower than returned by native 'code' mode (200) function getSort(){ return 158; } /** * Connect pattern to lexer */ function connectTo($mode) { $this->Lexer->addEntryPattern('<class.*?>(?=.*?</class>)',$mode,'plugin_class'); } function postConnect() { $this->Lexer->addExitPattern('</class>','plugin_class'); } /** * Handle the match */ function handle($match, $state, $pos, &$handler){ switch ($state) { case DOKU_LEXER_ENTER: $data = strtolower(trim(substr($match,6,-1))); return array($state, $data); case DOKU_LEXER_UNMATCHED : return array($state, $match); case DOKU_LEXER_EXIT : return array($state, ''); } return false; } /** * output */ function render($mode, &$renderer, $indata) { if($mode == 'xhtml'){ list($state, $match) = $indata; switch ($state) { case DOKU_LEXER_ENTER : $renderer->doc .= '</p><div class="'.htmlspecialchars($match).'"><p>'; break; case DOKU_LEXER_UNMATCHED : $renderer->doc .= $renderer->_xmlEntities($match); break; case DOKU_LEXER_EXIT : $renderer->doc .= "</p></div><p>"; break; } return true; } return false; } } //Setup VIM: ex: et ts=4 enc=utf-8 : ?>
Versions
- 2009-09-16 : Change
$match
tohtmlspecialchars($match)
to prevent some malicious code. - 2008-12-15 : Change the getType() to convert the inside text in HTML code.
- 2008-12-08 : First version.
Discussion
plugin/class.1254821798.txt.gz · Last modified: 2009-10-06 11:36 by laynee