mediawiki-extensions-Collap.../includes/Hooks.php

58 行
1.4 KiB
PHP

<?php
namespace MediaWiki\Extension\CollapsibleSidebar;
use MediaWiki\Hook\BeforePageDisplayHook;
use OutputPage;
use Skin;
class Hooks implements
BeforePageDisplayHook
{
/**
* Handler for BeforePageDisplay hook.
*
* @param OutputPage $out
* @param Skin $skin Skin being used.
*/
public function onBeforePageDisplay($out, $skin): void
{
$requiredSkins = ['vector', 'write', 'gongbi', 'timeless', 'citizen'];
if (
in_array($skin->getSkinName(), $requiredSkins)
) {
$out->addModuleStyles('ext.CollapsibleSidebar.styles');
if ($skin->getSkinName() === 'vector') {
$out->addModules('ext.CollapsibleSidebar.vector');
} else {
$out->addModules('ext.CollapsibleSidebar.js');
}
if ($this->isSidebarCollapsed()) {
$out->addHtmlClasses('client-collapsedsidebar');
}
}
}
/**
* Is the sidebar collapsed?
*
* @return bool
*/
private function isSidebarCollapsed(): bool
{
$var = !isset($_GET['usecollapsedsidebar']) ? '' : $_GET['usecollapsedsidebar'];
if ($var === '0' || $var === '1') {
// On usecollapsedsidebar is set, overwrite the cookie.
return (bool)$var;
}
$varCookie = !isset($_COOKIE['usecollapsedsidebar']) ? '' : $_COOKIE['usecollapsedsidebar'];
if ($varCookie === '0' || $varCookie === '1') {
// If usecollapsedsidebar not set, return cookie value.
return (bool)$varCookie;
}
// Otherwise return false
return false;
}
}