mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/Vector.git
synced 2024-09-30 13:47:42 +00:00
4091a6729f
Various skins may extend SkinVector (although none are in production) (https://github.com/search?q=%22extends+SkinVector%22&type=Code) This makes it clear we no longer support that behaviour. Because of the skins that are extending SkinVector currently we have not resorted to using the final keyword at this time. Depends-On: Ie3759c2acbf53c628577f6b05cfed17e0998a6bb Bug: T248399 Change-Id: I2af8b2930c80f888791247bdaa2ae1c80576317e
102 lines
2.9 KiB
PHP
102 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* Vector - Modern version of MonoBook with fresh look and many usability
|
|
* improvements.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @file
|
|
* @ingroup Skins
|
|
*/
|
|
use Vector\Constants;
|
|
|
|
/**
|
|
* Skin subclass for Vector
|
|
* @ingroup Skins
|
|
* @final skins extending SkinVector are not supported
|
|
* @unstable
|
|
*/
|
|
class SkinVector extends SkinTemplate {
|
|
public $skinname = 'vector';
|
|
public $stylename = 'Vector';
|
|
public $template = 'VectorTemplate';
|
|
|
|
private $responsiveMode = false;
|
|
|
|
/**
|
|
* Enables the responsive mode
|
|
*/
|
|
public function enableResponsiveMode() {
|
|
if ( !$this->responsiveMode ) {
|
|
$out = $this->getOutput();
|
|
$out->addMeta( 'viewport', 'width=device-width, initial-scale=1' );
|
|
$out->addModuleStyles( 'skins.vector.styles.responsive' );
|
|
$this->responsiveMode = true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Initializes output page and sets up skin-specific parameters
|
|
* @param OutputPage $out Object to initialize
|
|
*/
|
|
public function initPage( OutputPage $out ) {
|
|
parent::initPage( $out );
|
|
|
|
if ( $this->getConfig()->get( 'VectorResponsive' ) ) {
|
|
$this->enableResponsiveMode();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
* @return array
|
|
*/
|
|
public function getDefaultModules() {
|
|
$modules = parent::getDefaultModules();
|
|
// add vector skin styles and vector module
|
|
$module = $this->getUser()->getOption( Constants::PREF_KEY_SKIN_VERSION )
|
|
=== Constants::SKIN_VERSION_LEGACY ? 'skins.vector.styles.legacy' : 'skins.vector.styles';
|
|
$modules['styles']['skin'][] = $module;
|
|
$modules['core'][] = 'skins.vector.js';
|
|
|
|
return $modules;
|
|
}
|
|
|
|
/**
|
|
* Set up the VectorTemplate. Overrides the default behaviour of SkinTemplate allowing
|
|
* the safe calling of constructor with additional arguments. If dropping this method
|
|
* please ensure that VectorTemplate constructor arguments match those in SkinTemplate.
|
|
*
|
|
* @internal
|
|
* @param string $classname
|
|
* @return VectorTemplate
|
|
*/
|
|
protected function setupTemplate( $classname ) {
|
|
$template = new VectorTemplate( $this->getConfig() );
|
|
$template->setTemplateParser( new TemplateParser( __DIR__ . '/templates' ) );
|
|
return $template;
|
|
}
|
|
|
|
/**
|
|
* Whether the logo should be preloaded with an HTTP link header or not
|
|
* @since 1.29
|
|
* @return bool
|
|
*/
|
|
public function shouldPreloadLogo() {
|
|
return true;
|
|
}
|
|
}
|