Index: trunk/extensions/CSS/CSS.php |
— | — | @@ -15,8 +15,8 @@ |
16 | 16 | |
17 | 17 | define( 'CSS_VERSION', '1.0.7, 2010-10-20' ); |
18 | 18 | |
19 | | -$wgCSSMagic = "css"; |
20 | | -$wgExtensionFunctions[] = 'wfSetupCSS'; |
| 19 | +$wgCSSMagic = "css"; |
| 20 | +$wgHooks['ParserFirstCallInit'][] = 'wfCSSParserFirstCallInit'; |
21 | 21 | $wgHooks['LanguageGetMagic'][] = 'wfCSSLanguageGetMagic'; |
22 | 22 | |
23 | 23 | $wgExtensionCredits['parserhook'][] = array( |
— | — | @@ -31,56 +31,46 @@ |
32 | 32 | $dir = dirname( __FILE__ ) . '/'; |
33 | 33 | $wgExtensionMessagesFiles['CSS'] = $dir . 'CSS.i18n.php'; |
34 | 34 | |
35 | | -class CSS { |
| 35 | +function wfCSSRender( &$parser, $css ) { |
| 36 | + global $wgOut, $wgRequest; |
36 | 37 | |
37 | | - function __construct() { |
38 | | - global $wgParser, $wgCSSMagic; |
39 | | - $wgParser->setFunctionHook( $wgCSSMagic, array( $this, 'magicCss' ) ); |
40 | | - } |
| 38 | + $parser->mOutput->mCacheTime = -1; |
| 39 | + $url = false; |
| 40 | + if( preg_match( '|\\{|', $css ) ) { |
41 | 41 | |
42 | | - function magicCss( &$parser, $css ) { |
43 | | - global $wgOut, $wgRequest; |
44 | | - $parser->mOutput->mCacheTime = -1; |
45 | | - $url = false; |
46 | | - if( preg_match( '|\\{|', $css ) ) { |
47 | | - |
48 | | - # Inline CSS |
49 | | - $css = htmlspecialchars( trim( Sanitizer::checkCss( $css ) ) ); |
50 | | - $parser->mOutput->addHeadItem( <<<EOT |
| 42 | + # Inline CSS |
| 43 | + $css = htmlspecialchars( trim( Sanitizer::checkCss( $css ) ) ); |
| 44 | + $parser->mOutput->addHeadItem( <<<EOT |
51 | 45 | <style type="text/css"> |
52 | 46 | /*<![CDATA[*/ |
53 | 47 | {$css} |
54 | 48 | /*]]>*/ |
55 | 49 | </style> |
56 | 50 | EOT |
57 | | - ); |
58 | | - } elseif ( $css{0} == '/' ) { |
| 51 | + ); |
| 52 | + } elseif ( $css{0} == '/' ) { |
59 | 53 | |
60 | | - # File |
61 | | - $url = $css; |
| 54 | + # File |
| 55 | + $url = $css; |
62 | 56 | |
63 | | - } else { |
| 57 | + } else { |
64 | 58 | |
65 | | - # Article? |
66 | | - $title = Title::newFromText( $css ); |
67 | | - if( is_object( $title ) ) { |
68 | | - $url = $title->getLocalURL( 'action=raw&ctype=text/css' ); |
69 | | - $url = str_replace( "&", "&", $url ); |
70 | | - } |
| 59 | + # Article? |
| 60 | + $title = Title::newFromText( $css ); |
| 61 | + if( is_object( $title ) ) { |
| 62 | + $url = $title->getLocalURL( 'action=raw&ctype=text/css' ); |
| 63 | + $url = str_replace( "&", "&", $url ); |
71 | 64 | } |
72 | | - |
73 | | - if( $url ) $wgOut->addScript( "<link rel=\"stylesheet\" type=\"text/css\" href=\"$url\" />" ); |
74 | | - return ''; |
75 | 65 | } |
76 | 66 | |
| 67 | + if( $url ) $wgOut->addScript( "<link rel=\"stylesheet\" type=\"text/css\" href=\"$url\" />" ); |
| 68 | + return ''; |
77 | 69 | } |
78 | 70 | |
79 | | -/** |
80 | | - * Called from $wgExtensionFunctions array when initialising extensions |
81 | | - */ |
82 | | -function wfSetupCSS() { |
83 | | - global $wgCSS; |
84 | | - $wgCSS = new CSS(); |
| 71 | +function wfCSSParserFirstCallInit( $parser ) { |
| 72 | + global $wgCSSMagic; |
| 73 | + $parser->setFunctionHook( $wgCSSMagic, 'wfCSSRender' ); |
| 74 | + return true; |
85 | 75 | } |
86 | 76 | |
87 | 77 | function wfCSSLanguageGetMagic( &$magicWords, $langCode = 0 ) { |