1*fc7056c4SAdrian Lang<?php 2*fc7056c4SAdrian Lang/** 3*fc7056c4SAdrian Lang * DokuWiki Plugin tagging (Syntax Component) 4*fc7056c4SAdrian Lang * 5*fc7056c4SAdrian Lang * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 6*fc7056c4SAdrian Lang * @author Adrian Lang <lang@cosmocode.de> 7*fc7056c4SAdrian Lang */ 8*fc7056c4SAdrian Lang 9*fc7056c4SAdrian Lang// must be run within Dokuwiki 10*fc7056c4SAdrian Langif (!defined('DOKU_INC')) die(); 11*fc7056c4SAdrian Lang 12*fc7056c4SAdrian Langif (!defined('DOKU_LF')) define('DOKU_LF', "\n"); 13*fc7056c4SAdrian Langif (!defined('DOKU_TAB')) define('DOKU_TAB', "\t"); 14*fc7056c4SAdrian Langif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 15*fc7056c4SAdrian Lang 16*fc7056c4SAdrian Langrequire_once DOKU_PLUGIN.'syntax.php'; 17*fc7056c4SAdrian Langrequire_once DOKU_PLUGIN.'tagging/common.php'; 18*fc7056c4SAdrian Lang 19*fc7056c4SAdrian Langclass syntax_plugin_tagging extends DokuWiki_Syntax_Plugin { 20*fc7056c4SAdrian Lang 21*fc7056c4SAdrian Lang function getType() { 22*fc7056c4SAdrian Lang return 'substition'; 23*fc7056c4SAdrian Lang } 24*fc7056c4SAdrian Lang 25*fc7056c4SAdrian Lang function getPType() { 26*fc7056c4SAdrian Lang return 'block'; 27*fc7056c4SAdrian Lang } 28*fc7056c4SAdrian Lang 29*fc7056c4SAdrian Lang function getSort() { 30*fc7056c4SAdrian Lang return 13; 31*fc7056c4SAdrian Lang } 32*fc7056c4SAdrian Lang 33*fc7056c4SAdrian Lang function connectTo($mode) { 34*fc7056c4SAdrian Lang $this->Lexer->addSpecialPattern('{{tagging::\w+(?:>[^}]+)?}}',$mode,'plugin_tagging'); 35*fc7056c4SAdrian Lang } 36*fc7056c4SAdrian Lang 37*fc7056c4SAdrian Lang function handle($match, $state, $pos, &$handler){ 38*fc7056c4SAdrian Lang $data = array(); 39*fc7056c4SAdrian Lang $matches = array(); 40*fc7056c4SAdrian Lang preg_match('/{{tagging::(\w+)(?:>([^}]+))?}}/', $match, $matches); 41*fc7056c4SAdrian Lang $data['cmd'] = $matches[1]; 42*fc7056c4SAdrian Lang 43*fc7056c4SAdrian Lang switch($data['cmd']) { 44*fc7056c4SAdrian Lang case 'user': 45*fc7056c4SAdrian Lang if (count($matches) > 2) { 46*fc7056c4SAdrian Lang $data['user'] = trim($matches[2]); 47*fc7056c4SAdrian Lang } 48*fc7056c4SAdrian Lang break; 49*fc7056c4SAdrian Lang } 50*fc7056c4SAdrian Lang 51*fc7056c4SAdrian Lang return $data; 52*fc7056c4SAdrian Lang } 53*fc7056c4SAdrian Lang 54*fc7056c4SAdrian Lang function render($mode, &$renderer, $data) { 55*fc7056c4SAdrian Lang if ($mode !== 'xhtml') { 56*fc7056c4SAdrian Lang return false; 57*fc7056c4SAdrian Lang } 58*fc7056c4SAdrian Lang 59*fc7056c4SAdrian Lang $pte = tagging_get_pte($this); 60*fc7056c4SAdrian Lang 61*fc7056c4SAdrian Lang switch($data['cmd']) { 62*fc7056c4SAdrian Lang case 'user': 63*fc7056c4SAdrian Lang $renderer->info['cache'] = false; 64*fc7056c4SAdrian Lang if (!isset($data['user'])) { 65*fc7056c4SAdrian Lang $data['user'] = $_SERVER['REMOTE_USER']; 66*fc7056c4SAdrian Lang } 67*fc7056c4SAdrian Lang if (is_null($pte)) return; 68*fc7056c4SAdrian Lang list($min, $max, $data_arr) = $pte->user_tagcloud($data['user'], 10); 69*fc7056c4SAdrian Lang 70*fc7056c4SAdrian Lang cloud_weight($data_arr, $min, $max, 10); 71*fc7056c4SAdrian Lang 72*fc7056c4SAdrian Lang $renderer->doc .= '<ul class="tagcloud" id="tagging_tagcloud">'; 73*fc7056c4SAdrian Lang if (count($data_arr) === 0) { 74*fc7056c4SAdrian Lang // Produce valid XHTML (ul needs a child) 75*fc7056c4SAdrian Lang $this->setupLocale(); 76*fc7056c4SAdrian Lang $renderer->doc .= '<li>' . $this->lang['js']['notags'] . '</li>'; 77*fc7056c4SAdrian Lang } 78*fc7056c4SAdrian Lang foreach ($data_arr as $tag => $size) { 79*fc7056c4SAdrian Lang $renderer->doc .= '<li class="t' . 80*fc7056c4SAdrian Lang $size . '">' . 81*fc7056c4SAdrian Lang '<a href="' . $pte->tag_browse_url($tag) . '">' . 82*fc7056c4SAdrian Lang $tag . '</a>' . '</li> '; 83*fc7056c4SAdrian Lang } 84*fc7056c4SAdrian Lang $renderer->doc .= '</ul>'; 85*fc7056c4SAdrian Lang 86*fc7056c4SAdrian Lang break; 87*fc7056c4SAdrian Lang } 88*fc7056c4SAdrian Lang 89*fc7056c4SAdrian Lang return true; 90*fc7056c4SAdrian Lang } 91*fc7056c4SAdrian Lang} 92*fc7056c4SAdrian Lang 93*fc7056c4SAdrian Lang// vim:ts=4:sw=4:et:enc=utf-8: 94