Deprecate unconditional loading of mediawiki.ui.button on all pages
authorOri Livneh <ori@wikimedia.org>
Tue, 1 Sep 2015 18:40:27 +0000 (11:40 -0700)
committerOri.livneh <ori@wikimedia.org>
Tue, 1 Sep 2015 19:10:11 +0000 (19:10 +0000)
Formally deprecate the unconditional loading of mediawiki.ui.button on all
pages. During the deprecation period, the styles will be loaded on pages which
contain 'mw-ui-button' in the page HTML. Starting with 1.28, the styles will
only be loaded if explicitly depended upon.

The rationale for the patch was expressed by Spage in a comment on PS4 of
I835f3eb937: "Wikis have too many templates like
[[commons:Template:Clickable_button]] dependent on jquery.ui.button that don't
work if JavaScript isn't enabled.  mediawiki.ui.button is a lighter-weight
piece of CSS that we own and can improve, and transitioning wiki content to it
requires that we provide it." Mattflaschen commented that the added payload was
"justifiable if we announce this widely and make an effort to get wikis to use this."

A year and a half later, [[commons:Template:Clickable_button]] is still not
using mediawiki.ui.button, and usage elsewhere is not sufficiently widespread
to merit loading this stylesheet in the critical path.

Bug: T98395
Change-Id: I290e1db422b7c7b9c1a026aae22e174580cefae9

RELEASE-NOTES-1.26
includes/skins/SkinTemplate.php

index 5b85bbc..6dcf919 100644 (file)
@@ -66,6 +66,10 @@ production.
   for potentially slow POST requests that need to be as atomic as possible.
 * ResourceLoader now loads all scripts asynchronously. The top-queue and
   startup modules are no longer synchronously loaded.
+* 'mediawiki.ui.button' styles are no longer unconditionally loaded on every
+  page. During the deprecation period, the styles will only be loaded on pages
+  which contain 'mw-ui-button' in their HTML. Starting in 1.28, the styles will
+  only be loaded if explicitly required.
 
 ==== External libraries ====
 * Update es5-shim from v4.0.0 to v4.1.5.
index a1844a8..baf9d95 100644 (file)
@@ -54,12 +54,18 @@ class SkinTemplate extends Skin {
                $moduleStyles = array(
                        'mediawiki.legacy.shared',
                        'mediawiki.legacy.commonPrint',
-                       'mediawiki.ui.button',
                        'mediawiki.sectionAnchor'
                );
                if ( $out->isSyndicated() ) {
                        $moduleStyles[] = 'mediawiki.feedlink';
                }
+
+               // Deprecated since 1.26: Unconditional loading of mediawiki.ui.button
+               // on every page is deprecated. Express a dependency instead.
+               if ( strpos( $out->getHTML(), 'mw-ui-button' ) !== false ) {
+                       $moduleStyles[] = 'mediawiki.ui.button';
+               }
+
                $out->addModuleStyles( $moduleStyles );
        }