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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
<?php
class Ribbon {
static $content;
function onParserInit( Parser $parser ) {
$parser->setHook( 'ribbon', array( __CLASS__, 'renderRibbon' ) );
return true;
}
static function onBeforePageDisplay( OutputPage &$out, Skin &$skin ) {
$out->addModuleStyles( array (
'ext.ribbon'
) );
}
static function renderRibbon( $input, array $args, Parser $parser, PPFrame $frame ) {
$text = str_replace( "\n", '<br>', htmlspecialchars( $input ));
if (array_key_exists( 'square', $args ))
$square = intval($args['']);
else
$square = 369;
if (array_key_exists( 'height', $args ))
$height = intval($args['height']);
else
$height = 35;
if (array_key_exists( 'fsize', $args ))
$fsize = intval($args['fsize']);
else
$fsize = 15;
$sign = '';
$middle = $square / 2;
$top = $middle - intval($middle * sin(deg2rad(45)));
$right = intval($middle * cos(deg2rad(45))) - $middle - $height;
$html = ''
. '<div class="corner-ribbon-wrapper right" style="'
. 'width: ' . $square . 'px; '
. 'height: ' . $square . 'px;">'
. '<div class="corner-ribbon" style="'
. 'top: ' . $top . 'px; '
. 'right: ' . $right . 'px; '
. '-webkit-transform: rotate(' . $sign . '45deg);'
. '-moz-transform: rotate(' . $sign . '45deg);'
. '-ms-transform: rotate(' . $sign . '45deg);'
. '-o-transform: rotate(' . $sign . '45deg);'
. 'transform: rotate(' . $sign . '45deg);'
. 'font-size: ' . $fsize . 'px;">'
. '<a class="ribbon-link" style="'
. 'width: ' . $square . 'px; '
. 'line-height: ' . $height . 'px;"'
. 'href="#">' . $text
. '</a></div></div>';
$javascript = ''
. '<script type="text/javascript">'
. '(function () {'
. 'document.body.insertAdjacentHTML( "afterbegin", \'' . $html . '\' );'
. '}());'
. '</script>';
return array( $javascript, "markerType" => 'nowiki' );
}
}
?>
|