1*37748cd8SNickeau<?php 2*37748cd8SNickeau 3*37748cd8SNickeau 4*37748cd8SNickeau// must be run within Dokuwiki 5*37748cd8SNickeauuse ComboStrap\PluginUtility; 6*37748cd8SNickeau 7*37748cd8SNickeauif (!defined('DOKU_INC')) die(); 8*37748cd8SNickeau 9*37748cd8SNickeau/** 10*37748cd8SNickeau * Class syntax_plugin_combo_itext 11*37748cd8SNickeau * Setting text attributes on words 12*37748cd8SNickeau * 13*37748cd8SNickeau */ 14*37748cd8SNickeauclass syntax_plugin_combo_comment extends DokuWiki_Syntax_Plugin 15*37748cd8SNickeau{ 16*37748cd8SNickeau 17*37748cd8SNickeau const TAG = "comment"; 18*37748cd8SNickeau 19*37748cd8SNickeau /** 20*37748cd8SNickeau * If yes, the comment are in the rendering 21*37748cd8SNickeau */ 22*37748cd8SNickeau const CONF_OUTPUT_COMMENT = "outputComment"; 23*37748cd8SNickeau const CANONICAL = "comment"; 24*37748cd8SNickeau 25*37748cd8SNickeau /** 26*37748cd8SNickeau * Syntax Type. 27*37748cd8SNickeau * 28*37748cd8SNickeau * Needs to return one of the mode types defined in {@link $PARSER_MODES} in parser.php 29*37748cd8SNickeau * @see DokuWiki_Syntax_Plugin::getType() 30*37748cd8SNickeau */ 31*37748cd8SNickeau function getType() 32*37748cd8SNickeau { 33*37748cd8SNickeau return 'formatting'; 34*37748cd8SNickeau } 35*37748cd8SNickeau 36*37748cd8SNickeau /** 37*37748cd8SNickeau * How Dokuwiki will add P element 38*37748cd8SNickeau * 39*37748cd8SNickeau * * 'normal' - The plugin can be used inside paragraphs 40*37748cd8SNickeau * * 'block' - Open paragraphs need to be closed before plugin output - block should not be inside paragraphs 41*37748cd8SNickeau * * 'stack' - Special case. Plugin wraps other paragraphs. - Stacks can contain paragraphs 42*37748cd8SNickeau * 43*37748cd8SNickeau * @see DokuWiki_Syntax_Plugin::getPType() 44*37748cd8SNickeau */ 45*37748cd8SNickeau function getPType() 46*37748cd8SNickeau { 47*37748cd8SNickeau return 'normal'; 48*37748cd8SNickeau } 49*37748cd8SNickeau 50*37748cd8SNickeau /** 51*37748cd8SNickeau * @return array 52*37748cd8SNickeau * Allow which kind of plugin inside 53*37748cd8SNickeau * 54*37748cd8SNickeau * No one of array('baseonly','container', 'formatting', 'substition', 'protected', 'disabled', 'paragraphs') 55*37748cd8SNickeau * because we manage self the content and we call self the parser 56*37748cd8SNickeau * 57*37748cd8SNickeau * Return an array of one or more of the mode types {@link $PARSER_MODES} in Parser.php 58*37748cd8SNickeau */ 59*37748cd8SNickeau function getAllowedTypes() 60*37748cd8SNickeau { 61*37748cd8SNickeau return array(); 62*37748cd8SNickeau } 63*37748cd8SNickeau 64*37748cd8SNickeau 65*37748cd8SNickeau function getSort() 66*37748cd8SNickeau { 67*37748cd8SNickeau return 201; 68*37748cd8SNickeau } 69*37748cd8SNickeau 70*37748cd8SNickeau 71*37748cd8SNickeau function connectTo($mode) 72*37748cd8SNickeau { 73*37748cd8SNickeau 74*37748cd8SNickeau 75*37748cd8SNickeau $this->Lexer->addEntryPattern("<!--", $mode, PluginUtility::getModeFromTag($this->getPluginComponent())); 76*37748cd8SNickeau 77*37748cd8SNickeau } 78*37748cd8SNickeau 79*37748cd8SNickeau 80*37748cd8SNickeau function postConnect() 81*37748cd8SNickeau { 82*37748cd8SNickeau 83*37748cd8SNickeau $this->Lexer->addExitPattern("-->", PluginUtility::getModeFromTag($this->getPluginComponent())); 84*37748cd8SNickeau 85*37748cd8SNickeau 86*37748cd8SNickeau } 87*37748cd8SNickeau 88*37748cd8SNickeau function handle($match, $state, $pos, Doku_Handler $handler) 89*37748cd8SNickeau { 90*37748cd8SNickeau 91*37748cd8SNickeau switch ($state) { 92*37748cd8SNickeau 93*37748cd8SNickeau case DOKU_LEXER_ENTER : 94*37748cd8SNickeau case DOKU_LEXER_EXIT : 95*37748cd8SNickeau return array( 96*37748cd8SNickeau PluginUtility::STATE => $state 97*37748cd8SNickeau ); 98*37748cd8SNickeau 99*37748cd8SNickeau case DOKU_LEXER_UNMATCHED : 100*37748cd8SNickeau return PluginUtility::handleAndReturnUnmatchedData(self::TAG, $match, $handler); 101*37748cd8SNickeau 102*37748cd8SNickeau } 103*37748cd8SNickeau return array(); 104*37748cd8SNickeau 105*37748cd8SNickeau } 106*37748cd8SNickeau 107*37748cd8SNickeau /** 108*37748cd8SNickeau * Render the output 109*37748cd8SNickeau * @param string $format 110*37748cd8SNickeau * @param Doku_Renderer $renderer 111*37748cd8SNickeau * @param array $data - what the function handle() return'ed 112*37748cd8SNickeau * @return boolean - rendered correctly? (however, returned value is not used at the moment) 113*37748cd8SNickeau * @see DokuWiki_Syntax_Plugin::render() 114*37748cd8SNickeau * 115*37748cd8SNickeau * 116*37748cd8SNickeau */ 117*37748cd8SNickeau function render($format, Doku_Renderer $renderer, $data) 118*37748cd8SNickeau { 119*37748cd8SNickeau if(PluginUtility::getConfValue(self::CONF_OUTPUT_COMMENT,0)) { 120*37748cd8SNickeau if ($format === "xhtml") { 121*37748cd8SNickeau if ($data[PluginUtility::STATE] === DOKU_LEXER_UNMATCHED) { 122*37748cd8SNickeau $renderer->doc .= "<!-- " . PluginUtility::renderUnmatched($data) . "-->"; 123*37748cd8SNickeau } 124*37748cd8SNickeau } 125*37748cd8SNickeau } 126*37748cd8SNickeau // unsupported $mode 127*37748cd8SNickeau return false; 128*37748cd8SNickeau 129*37748cd8SNickeau } 130*37748cd8SNickeau 131*37748cd8SNickeau 132*37748cd8SNickeau} 133*37748cd8SNickeau 134