Commit | Line | Data |
---|---|---|
6855525e JL |
1 | <?php |
2 | ||
3 | class Text_Wiki_Render_Xhtml_Interwiki extends Text_Wiki_Render { | |
4 | ||
5 | var $conf = array( | |
6 | 'sites' => array( | |
7 | 'MeatBall' => 'http://www.usemod.com/cgi-bin/mb.pl?%s', | |
8 | 'Advogato' => 'http://advogato.org/%s', | |
9 | 'Wiki' => 'http://c2.com/cgi/wiki?%s' | |
10 | ), | |
11 | 'target' => '_blank', | |
12 | 'css' => null | |
13 | ); | |
14 | ||
15 | ||
16 | /** | |
17 | * | |
18 | * Renders a token into text matching the requested format. | |
19 | * | |
20 | * @access public | |
21 | * | |
22 | * @param array $options The "options" portion of the token (second | |
23 | * element). | |
24 | * | |
25 | * @return string The text rendered from the token options. | |
26 | * | |
27 | */ | |
28 | ||
29 | function token($options) | |
30 | { | |
31 | $site = $options['site']; | |
32 | $page = $options['page']; | |
33 | $text = $options['text']; | |
34 | $css = $this->formatConf(' class="%s"', 'css'); | |
35 | ||
36 | if (isset($this->conf['sites'][$site])) { | |
37 | $href = $this->conf['sites'][$site]; | |
38 | } else { | |
39 | return $text; | |
40 | } | |
41 | ||
42 | // old form where page is at end, | |
43 | // or new form with %s placeholder for sprintf()? | |
44 | if (strpos($href, '%s') === false) { | |
45 | // use the old form | |
46 | $href = $href . $page; | |
47 | } else { | |
48 | // use the new form | |
49 | $href = sprintf($href, $page); | |
50 | } | |
51 | ||
52 | // allow for alternative targets | |
53 | $target = $this->getConf('target'); | |
54 | ||
55 | // build base link | |
60181dfb | 56 | $text = htmlspecialchars($text, ENT_COMPAT | ENT_HTML401, "ISO-8859-1"); |
6855525e JL |
57 | $output = "<a$css href=\"$href\""; |
58 | ||
59 | // are we targeting a specific window? | |
60 | if ($target) { | |
61 | // this is XHTML compliant, suggested by Aaron Kalin. | |
62 | // code tip is actually from youngpup.net, and it | |
63 | // uses the $target as the new window name. | |
60181dfb | 64 | $target = htmlspecialchars($target, ENT_COMPAT | ENT_HTML401, "ISO-8859-1"); |
6855525e JL |
65 | $output .= " onClick=\"window.open(this.href, '$target');"; |
66 | $output .= " return false;\""; | |
67 | } | |
68 | ||
69 | $output .= ">$text</a>"; | |
70 | ||
71 | return $output; | |
72 | } | |
73 | } | |
60181dfb | 74 | ?> |