User:Nx/Extensions/pagecss/pagecss.php

From RationalWiki
Jump to navigation Jump to search
<?php

// Extension credits that show up on Special:Version
$wgExtensionCredits['parserhook'][] = array(
        'name' => '<css> tag',
        'author' => '[http://rationalwiki.com/wiki/User:Nx Nx]',
        'url' => 'http://rationalwiki.com/',
        'description' => 'Embed css into a page using the css tag.'
);

//Avoid unstubbing $wgParser on setHook() too early on modern (1.12+) MW versions, as per r35980
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
  $wgHooks['ParserFirstCallInit'][] = 'pagecssinit';
} else { // Otherwise do things the old fashioned way
  $wgExtensionFunctions[] = 'pagecssinit';
}

$wgHooks['OutputPageParserOutput'][] = 'efPageCss_ParserOutput';

function pagecssinit() {
  global $wgParser;
  $wgParser->setHook('css','cssrender');
  return true;    
}

function cssrender($input, $args, $parser)
{
/*  global $wgRequest;
  $nopagecss = $wgRequest->getVal( 'nopagecss', false);
  if (!$nopagecss) {*/
  $parser->mOutput->setProperty('pagecss', $parser->mOutput->getProperty('pagecss') . htmlspecialchars( Sanitizer::checkCss($input) ) );
/*  }  */
  return "";
}

function efPageCss_ParserOutput( &$out, $parseroutput ) 
{
  $cssentry = '<style type="text/css">/*<![CDATA[*/ ' . $parseroutput->getProperty('pagecss') . ' /*]]>*/</style>';
  $out->addScript($cssentry);
  return true;
}