X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fskins%2FSkin.php;h=3e8b3f23a052abbb4cc8e31c9793e9125f7690e5;hp=7f00767e07d84b403ce68c3445d21bd2a8b90987;hb=83b50484e0023ec16f24f65c29009dcb2e7b5fd5;hpb=853b17ef5788be25045855ab340c9e0d8b443218 diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php index 7f00767e07..3e8b3f23a0 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -20,6 +20,8 @@ * @file */ +use MediaWiki\MediaWikiServices; + /** * @defgroup Skins Skins */ @@ -158,8 +160,17 @@ abstract class Skin extends ContextSource { global $wgUseAjax, $wgEnableAPI, $wgEnableWriteAPI; $out = $this->getOutput(); + $config = $this->getConfig(); $user = $out->getUser(); $modules = [ + // modules not specific to any specific skin or page + 'core' => [ + // Enforce various default modules for all pages and all skins + // Keep this list as small as possible + 'site', + 'mediawiki.page.startup', + 'mediawiki.user', + ], // modules that enhance the page content in some way 'content' => [ 'mediawiki.page.ready', @@ -172,6 +183,11 @@ abstract class Skin extends ContextSource { 'user' => [], ]; + // Support for high-density display images if enabled + if ( $config->get( 'ResponsiveImages' ) ) { + $modules['core'][] = 'mediawiki.hidpi'; + } + // Preload jquery.tablesorter for mediawiki.page.ready if ( strpos( $out->getHTML(), 'sortable' ) !== false ) { $modules['content'][] = 'jquery.tablesorter'; @@ -182,6 +198,10 @@ abstract class Skin extends ContextSource { $modules['content'][] = 'jquery.makeCollapsible'; } + if ( $out->isTOCEnabled() ) { + $modules['content'][] = 'mediawiki.toc'; + } + // Add various resources if required if ( $wgUseAjax && $wgEnableAPI ) { if ( $wgEnableWriteAPI && $user->isLoggedIn() @@ -1241,7 +1261,7 @@ abstract class Skin extends ContextSource { }; if ( $wgEnableSidebarCache ) { - $cache = ObjectCache::getMainWANInstance(); + $cache = MediaWikiServices::getInstance()->getMainWANObjectCache(); $sidebar = $cache->getWithSetCallback( $cache->makeKey( 'sidebar', $this->getLanguage()->getCode() ), MessageCache::singleton()->isDisabled() @@ -1467,7 +1487,7 @@ abstract class Skin extends ContextSource { * should fall back to the next notice in its sequence */ private function getCachedNotice( $name ) { - global $wgRenderHashAppend, $parserMemc, $wgContLang; + global $wgRenderHashAppend, $wgContLang; $needParse = false; @@ -1488,28 +1508,27 @@ abstract class Skin extends ContextSource { $notice = $msg->plain(); } - // Use the extra hash appender to let eg SSL variants separately cache. - $key = wfMemcKey( $name . $wgRenderHashAppend ); - $cachedNotice = $parserMemc->get( $key ); - if ( is_array( $cachedNotice ) ) { - if ( md5( $notice ) == $cachedNotice['hash'] ) { - $notice = $cachedNotice['html']; - } else { - $needParse = true; + $cache = MediaWikiServices::getInstance()->getMainWANObjectCache(); + $parsed = $cache->getWithSetCallback( + // Use the extra hash appender to let eg SSL variants separately cache + // Key is verified with md5 hash of unparsed wikitext + $cache->makeKey( $name, $wgRenderHashAppend, md5( $notice ) ), + // TTL in seconds + 600, + function () use ( $notice ) { + return $this->getOutput()->parse( $notice ); } - } else { - $needParse = true; - } - - if ( $needParse ) { - $parsed = $this->getOutput()->parse( $notice ); - $parserMemc->set( $key, [ 'html' => $parsed, 'hash' => md5( $notice ) ], 600 ); - $notice = $parsed; - } + ); - $notice = Html::rawElement( 'div', [ 'id' => 'localNotice', - 'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ], $notice ); - return $notice; + return Html::rawElement( + 'div', + [ + 'id' => 'localNotice', + 'lang' => $wgContLang->getHtmlCode(), + 'dir' => $wgContLang->getDir() + ], + $parsed + ); } /**