Table of Contents

hidetext plugin

hidetext plugin by Dmitry A. Vinogradov
for hiding big text

Last updated on 2009-09-28. Provides Syntax.
Compatible with DokuWiki 2009-02-14b.

Similar to folded, hidden, outliner.

Tagged with collapsible, hide.

    This plug-in allows to hide the big text.

    Usage

    <hidetext [some text]> Bla-bla-bla </hidetext>

    • Example 1
    <hidetext info> This text is hidden </hidetext>

    Result: info

    • Example 2
    <hidetext> This text is hidden </hidetext>  

    Result: > > >

    Installation

    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):

    <?php
    /**
     * Plugin HideText: hiding big text <hidetext></hidetext>
     * 
     * @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'); 
       }   
     
        /**
         * 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, &$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, &$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;
        }
    }
    ?>
     
    plugin/hidetext.txt · Last modified: 2009/09/30 22:51 by ach
     
    Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
    Imprint Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
    WikiForumIRCBugsGitXRefTranslate