/** @var array Array of elements in "<head>". Parser might add its own headers! */
protected $mHeadItems = [];
+ /** @var array Additional <body> classes; there are also <body> classes from other sources */
+ protected $mAdditionalBodyClasses = [];
+
/** @var array */
protected $mModules = [];
private $mEnableSectionEditLinks = true;
/**
- * @var string|null The URL to send in a <link> element with rel=copyright
+ * @var string|null The URL to send in a <link> element with rel=license
*/
private $copyrightUrl;
* @param bool $filter Whether to filter out insufficiently trustworthy modules
* @param string|null $position If not null, only return modules with this position
* @param string $param
+ * @param string $type
* @return array Array of module names
*/
public function getModules( $filter = false, $position = null, $param = 'mModules',
* Add one or more head items to the output
*
* @since 1.28
- * @param string|string[] $value Raw HTML
+ * @param string|string[] $values Raw HTML
*/
public function addHeadItems( $values ) {
$this->mHeadItems = array_merge( $this->mHeadItems, (array)$values );
return isset( $this->mHeadItems[$name] );
}
+ /**
+ * Add a class to the <body> element
+ *
+ * @since 1.30
+ * @param string|string[] $classes One or more classes to add
+ */
+ public function addBodyClasses( $classes ) {
+ $this->mAdditionalBodyClasses = array_merge( $this->mAdditionalBodyClasses, (array)$classes );
+ }
+
/**
* @deprecated since 1.28 Obsolete - wgUseETag experiment was removed.
* @param string $tag
* Add wikitext with a custom Title object
*
* @param string $text Wikitext
- * @param Title $title
+ * @param Title &$title
* @param bool $linestart Is this the start of a line?
*/
public function addWikiTextWithTitle( $text, &$title, $linestart = true ) {
* Add wikitext with a custom Title object and tidy enabled.
*
* @param string $text Wikitext
- * @param Title $title
+ * @param Title &$title
* @param bool $linestart Is this the start of a line?
*/
function addWikiTextTitleTidy( $text, &$title, $linestart = true ) {
/**
* Add the output of a QuickTemplate to the output buffer
*
- * @param QuickTemplate $template
+ * @param QuickTemplate &$template
*/
public function addTemplate( &$template ) {
$this->addHTML( $template->getHTML() );
}
/**
- * @param $maxage
+ * @param int $maxage
* @deprecated since 1.27 Use setCdnMaxage() instead
*/
public function setSquidMaxage( $maxage ) {
* the TTL is higher the older the $mtime timestamp is. Essentially, the
* TTL is 90% of the age of the object, subject to the min and max.
*
- * @param string|integer|float|bool|null $mtime Last-Modified timestamp
- * @param integer $minTTL Mimimum TTL in seconds [default: 1 minute]
- * @param integer $maxTTL Maximum TTL in seconds [default: $wgSquidMaxage]
- * @return integer TTL in seconds
+ * @param string|int|float|bool|null $mtime Last-Modified timestamp
+ * @param int $minTTL Mimimum TTL in seconds [default: 1 minute]
+ * @param int $maxTTL Maximum TTL in seconds [default: $wgSquidMaxage]
+ * @return int TTL in seconds
* @since 1.28
*/
public function adaptCdnTTL( $mtime, $minTTL = 0, $maxTTL = 0 ) {
}
$age = time() - wfTimestamp( TS_UNIX, $mtime );
- $adaptiveTTL = max( .9 * $age, $minTTL );
+ $adaptiveTTL = max( 0.9 * $age, $minTTL );
$adaptiveTTL = min( $adaptiveTTL, $maxTTL );
$this->lowerCdnMaxage( (int)$adaptiveTTL );
$pieces[] = $this->buildExemptModules();
$pieces = array_merge( $pieces, array_values( $this->getHeadLinksArray() ) );
$pieces = array_merge( $pieces, array_values( $this->mHeadItems ) );
+
+ $min = ResourceLoader::inDebugMode() ? '' : '.min';
+ // Use an IE conditional comment to serve the script only to old IE
+ $pieces[] = '<!--[if lt IE 9]>' .
+ Html::element( 'script', [
+ 'src' => self::transformResourcePath(
+ $this->getConfig(),
+ "/resources/lib/html5shiv/html5shiv{$min}.js"
+ ),
+ ] ) .
+ '<![endif]-->';
+
$pieces[] = Html::closeElement( 'head' );
- $bodyClasses = [];
+ $bodyClasses = $this->mAdditionalBodyClasses;
$bodyClasses[] = 'mediawiki';
# Classes for LTR/RTL directionality support
if ( $copyright ) {
$tags['copyright'] = Html::element( 'link', [
- 'rel' => 'copyright',
+ 'rel' => 'license',
'href' => $copyright ]
);
}
* Caller is responsible for ensuring the file exists. Emits a PHP warning otherwise.
*
* @since 1.27
- * @param string $remotePath URL path prefix that points to $localPath
+ * @param string $remotePathPrefix URL path prefix that points to $localPath
* @param string $localPath File directory exposed at $remotePath
* @param string $file Path to target file relative to $localPath
* @return string URL