* * Plugin touchtile: display URL in tiles */ 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_tile extends DokuWiki_Syntax_Plugin { // ============================================================ function getType () { return 'substition'; } function getPType () { return 'block';} function getSort () { return 299; } function connectTo ($mode) { $this->Lexer->addEntryPattern (']*>', $mode, 'plugin_tile'); } function postConnect() { $this->Lexer->addExitPattern ('', 'plugin_tile'); } // ============================================================ function handle ($match, $state, $pos, Doku_Handler $handler){ switch ($state) { case DOKU_LEXER_ENTER: return array ($state, trim (substr ($match, 5, -1))); // " 5 ">" => 1 case DOKU_LEXER_UNMATCHED: return array ($state, $match); case DOKU_LEXER_EXIT: return array ($state); } return false; } var $iconSize; var $imgAttr; // ============================================================ function render ($mode, Doku_Renderer $renderer, $indata) { if ($mode != 'xhtml') return false; if (empty ($indata)) return false; list ($instr, $data) = $indata; switch ($instr) { case DOKU_LEXER_ENTER : if (preg_match_all ("#(\"[^\"]*\")*help(\"[^\"]*\")*#", $data, $dumy) > 0) $this->help ($renderer); $this->iconSize = $this->getConf ('iconSize'); if (preg_match_all ("#(\"[^\"]*\")*width=\"(?[^\"]*)\"(\"[^\"]*\")*#", $data, $dumy) > 0) $this->iconSize = $dumy ['width'][0]; $this->imgAttr = ' width="'.$this->iconSize.'"'; $renderer->doc .= '
'; break; case DOKU_LEXER_EXIT : $renderer->doc .= '
'; break; case DOKU_LEXER_UNMATCHED : $data = trim ($data); if (empty ($data)) return false; global $_REQUEST; foreach (explode ("\n", $data) as $line) { $line = trim ($line); if (!$line) continue; $line = preg_replace ("#\s+\|#", "|", $line); $line = preg_replace ("#\|\s+#", "|", $line); $line = trim ($line,'|'); list ($id, $title, $img, $email, $name) = explode ("|", $line); if (!$id) continue; $email = obfuscate ($email); $mailto = $email ? ''.($name ? $name : $email).'' : ""; $renderer->doc .= ' '; } break; } return true; } // ============================================================ function help (Doku_Renderer $renderer) { $url = "http://admin.parlenet.org/plugins/tile/"; $renderer->doc .= '

Tile Help

'.NL. '
    '.NL. '
  • Syntax : <tile [help] [width=pp]>
    '. ' | :dokuwiki:namespace:page | Short Description | :dokuwiki:namespace:icon.png | member.mel@some.where.org | nickname |
    '. ' ...
    '. ' </tile>
  • '.NL. '
  • Info : '.$url.'
  • '.NL. '
'.NL; } // ============================================================ } // syntax_plugin_tile ?>