DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:hidetext

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
plugin:hidetext [2019-08-17 15:01]
Aleksandr
plugin:hidetext [2019-09-02 02:26] (current)
florious
Line 6: Line 6:
 email      : vshekun@gmail.com email      : vshekun@gmail.com
 type       : Syntax type       : Syntax
-lastupdate : 2009-09-28+lastupdate : 2019-09-02
 compatible : 2009-02-14b compatible : 2009-02-14b
 depends ​   :  depends ​   : 
Line 34: Line 34:
 Create a new directory hidetext inside your lib/​plugins/​ directory, and then copy the following source into syntax.php in that directory (/​lib/​plugins/​hidetext/​syntax.php): ​ Create a new directory hidetext inside your lib/​plugins/​ directory, and then copy the following source into syntax.php in that directory (/​lib/​plugins/​hidetext/​syntax.php): ​
  
 +
 +**For PHP 7:**
 +<code php /​hidetext/​syntax.php>​
 +<?php
 +/**
 + * Plugin HideText: hiding big text <​hidetext></​hidetext>​
 + * Updated ​    by Florin Chitiul, 2019-09-02
 + * @license ​   GPL2 (http://​www.gnu.org/​licenses/​gpl.html)
 + * @author ​    ​Dmitry A. Vinogradov <​vshekun@gmail.com>​
 + ​* ​
 + * Format: <​hidetext [some text]> Bla-bla-bla </​hidetext>​
 + * Examples: <​hidetext info> This text is hidden </​hidetext>​
 + ​* ​          <​hidetext>​ This text is hidden </​hidetext> ​
 + */
 + 
 +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_hidetext extends DokuWiki_Syntax_Plugin {
 + 
 +    /**
 +     * return some info
 +     */
 +    function getInfo(){
 +        return array(
 +            '​author'​ => '​Dmitry A. Vinogradov',​
 +            '​email' ​ => '​vshekun@gmail.com',​
 +            '​date' ​  => '​2009-09-28',​
 +            '​name' ​  => '​HideText',​
 +            '​desc' ​  => 'for hiding big text',
 +            '​url' ​   => '​http://​www.dokuwiki.org/​plugin:​hidetext',​
 +        );
 +    }
 + 
 +    /**
 +     * What kind of syntax are we?
 +     */
 +    function getType(){
 +        return '​formatting';​
 +    }
 +   ​function getAllowedTypes() { 
 +      return array('​container',​ '​formatting',​ '​substition',​ '​disabled',​ '​protected'​); ​
 +   ​} ​  
 + 
 +    /**
 +     * Where to sort in?
 +     ​*/ ​
 +    function getSort(){
 +        return 201;
 +    }
 + 
 +    /**
 +     * Connect pattern to lexer
 +     */
 +    function connectTo($mode) {
 +        $this->​Lexer->​addEntryPattern('<​hidetext *[^>​]*>',​$mode,'​plugin_hidetext'​);​
 +    }
 + 
 +    function postConnect() {
 +        $this->​Lexer->​addExitPattern('</​hidetext>','​plugin_hidetext'​);​
 +    }
 + 
 +    /**
 +     * Handle the match
 +     */
 +    function handle($match,​ $state, $pos, Doku_Handler $handler){
 +        switch ($state) {
 +            case DOKU_LEXER_ENTER : 
 +            return array($state,​ substr($match,​ 9, -1) );
 +            break;
 +            case DOKU_LEXER_UNMATCHED :
 +                return array($state,​ $match);
 +            break;
 +            case DOKU_LEXER_EXIT :
 +                return array($state,​ ''​);​
 +            break;
 +        }
 +        return array();
 +    }
 + 
 +    /**
 +     * Create output
 +     */
 +    function render($mode,​ Doku_Renderer $renderer, $data) {
 +        if($mode == '​xhtml'​){
 + 
 +           ​list($state,​ $match) = $data;
 +            switch ($state) {
 +                case DOKU_LEXER_ENTER :    ​
 +                    if ( $match == ""​ ) $match = '>>>';​
 +                    $id = "​hidetext"​.rand(100,​500);​
 +                    $renderer->​doc .= "<​span style=\"​cursor:​pointer;​text-decoration:​ underline;​\"​ onClick=\"​with( document.getElementById('​$id'​).style ){if ( display == '​block'​ ){ display = '​none'​ } else { display = '​block'​ };​}\">";​
 +                    $renderer->​doc .= $match;
 +                    $renderer->​doc .= "</​span>";​
 +                    $renderer->​doc .= "<​div id='​$id'​ style=\"​display:​ hide;​\">";​
 +                    $renderer->​doc .= "<​script type=\"​text/​javascript\">​document.getElementById('​$id'​).style.display='​none';</​script>";​
 +                    break;
 +                case DOKU_LEXER_UNMATCHED :
 +                    $renderer->​doc .= $renderer->​_xmlEntities($match);​
 +                    break;
 +                case DOKU_LEXER_EXIT :
 +                    $renderer->​doc .= "</​div>";​
 +                    break;
 +            }
 +            return true;
 +        }
 +        return false;
 +    }
 +}
 +?>
 +</​code>​
 +
 +\\
 +\\
 +
 +**For PHP 5 and 6:**
 <code php /​hidetext/​syntax.php>​ <code php /​hidetext/​syntax.php>​
 <?php <?php
plugin/hidetext.txt ยท Last modified: 2019-09-02 02:26 by florious