forked from zioth/dokuwiki-autotooltip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
renderer.php
65 lines (56 loc) · 1.72 KB
/
renderer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
if (!defined('DOKU_INC')) die();
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once DOKU_INC . 'inc/parser/xhtml.php';
/**
* Auto-Tooltip DokuWiki renderer plugin. If the current renderer is ActionRenderer, the action
* plugin will be used instead.
*
* @license MIT
* @author Eli Fenton
*/
class renderer_plugin_autotooltip extends Doku_Renderer_xhtml {
/** @type helper_plugin_autotooltip m_helper */
private $m_helper;
private $m_exclude;
public function __construct() {
global $ID;
$this->m_helper = plugin_load('helper', 'autotooltip');
$this->m_exclude = $this->m_helper->isExcluded($ID);
}
/**
* @param $format
* @return bool
*/
function canRender($format) {
return $format == 'xhtml';
}
/**
* Intercept Doku_Renderer_xhtml:internallink to give every wikilink a tooltip!
*
* @param string $id
* @param null $name
* @param null $search
* @param bool $returnonly
* @param string $linktype
* @return string
*/
function internallink($id, $name = null, $search = null, $returnonly = false, $linktype = 'content') {
global $ID;
$fullId = $id;
$id = preg_replace('/(\#|\?).*$/', '', $id);
resolve_pageid(getNS($ID), $id, $exists, $this->date_at, true);
if (!$this->m_exclude && $exists && $id != $ID) {
$link = parent::internallink($fullId, $name, $search, true, $linktype);
$meta = $this->m_helper->read_meta_fast($id);
$abstract = $meta['abstract'];
$link = $this->m_helper->stripNativeTooltip($link);
$link = $this->m_helper->forText($link, $abstract, $meta['title']);
if (!$returnonly) {
$this->doc .= $link;
}
return $link;
}
return parent::internallink($fullId, $name, $search, $returnonly, $linktype);
}
}