mediawiki.special: Combine various tiny specialpage style modules
authorTimo Tijhof <krinklemail@gmail.com>
Fri, 11 May 2018 14:33:41 +0000 (15:33 +0100)
committerKrinkle <krinklemail@gmail.com>
Wed, 16 May 2018 22:47:15 +0000 (22:47 +0000)
These stylesheets are sufficiently tiny that it doesn't make sense to
offer them the ability to be loaded separately from each other (saving
bytes in double-digits) at the cost of 1) exporting a dedicated registry
item with meta data shipped on every page view, 2) reduced cache re-use
from increased fragmentation.

Instead, move these to the 'mediawiki.special' style module.
The entries retain their own files to keep them as easy to find
and edit as before.

Where not already, ensure addModuleStyles() is always placed above
any addModules() call in the same method. The load order isn't
affected by the call order, but given blocking style-modules load
before async JS, it helps to order them in a way that visually
matches the effective load order (from top to bottom).

The following 7 modules were remove without deprecation:

1. "mediawiki.special.apisandbox.styles" (1 rule)
2. "mediawiki.special.edittags.styles" (3 rules)
3. "mediawiki.special.movePage.styles" (1 rule)
4. "mediawiki.special.pagesWithProp" (1 rule)
5. "mediawiki.special.upload.styles" (2 rules)
6. "mediawiki.special.watchlist.styles" (3 rules)
7. "mediawiki.special.comparepages.styles" (4 rules)

These module names were only used on the core classes loading them, and
aren't depended on outside core by module name, rather, extensions and
gadgets depend on the styles styles being loaded in a blocking manner on
these pages, which remains unaffected.

Bug: T192623
Change-Id: I6e663dc3c80c7104c9b9abdde44c654543185373

27 files changed:
includes/specials/SpecialApiSandbox.php
includes/specials/SpecialComparePages.php
includes/specials/SpecialEditTags.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialPagesWithProp.php
includes/specials/SpecialUpload.php
includes/specials/SpecialWatchlist.php
includes/specials/forms/UploadForm.php
resources/Resources.php
resources/src/mediawiki.special.apisandbox.styles.css [deleted file]
resources/src/mediawiki.special.comparepages.styles.less [deleted file]
resources/src/mediawiki.special.edittags.styles.css [deleted file]
resources/src/mediawiki.special.movePage.css [deleted file]
resources/src/mediawiki.special.pagesWithProp.css [deleted file]
resources/src/mediawiki.special.upload.styles.css [deleted file]
resources/src/mediawiki.special.watchlist.styles.css [deleted file]
resources/src/mediawiki.special/apisandbox.css [new file with mode: 0644]
resources/src/mediawiki.special/comparepages.less [new file with mode: 0644]
resources/src/mediawiki.special/edittags.css [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.css [deleted file]
resources/src/mediawiki.special/mediawiki.special.userrights.css [deleted file]
resources/src/mediawiki.special/movePage.css [new file with mode: 0644]
resources/src/mediawiki.special/pagesWithProp.css [new file with mode: 0644]
resources/src/mediawiki.special/special.css [new file with mode: 0644]
resources/src/mediawiki.special/upload.css [new file with mode: 0644]
resources/src/mediawiki.special/userrights.css [new file with mode: 0644]
resources/src/mediawiki.special/watchlist.css [new file with mode: 0644]

index c000d54..034e569 100644 (file)
@@ -37,7 +37,7 @@ class SpecialApiSandbox extends SpecialPage {
 
                $out->addJsConfigVars( 'apihighlimits', $this->getUser()->isAllowed( 'apihighlimits' ) );
                $out->addModuleStyles( [
-                       'mediawiki.special.apisandbox.styles',
+                       'mediawiki.special',
                ] );
                $out->addModules( [
                        'mediawiki.special.apisandbox',
index 35cc6b8..28f04fa 100644 (file)
@@ -49,7 +49,7 @@ class SpecialComparePages extends SpecialPage {
        public function execute( $par ) {
                $this->setHeaders();
                $this->outputHeader();
-               $this->getOutput()->addModuleStyles( 'mediawiki.special.comparepages.styles' );
+               $this->getOutput()->addModuleStyles( 'mediawiki.special' );
 
                $form = HTMLForm::factory( 'ooui', [
                        'Page1' => [
index 60d5fd7..3db7eda 100644 (file)
@@ -76,7 +76,7 @@ class SpecialEditTags extends UnlistedSpecialPage {
                $this->outputHeader();
 
                $this->getOutput()->addModules( [ 'mediawiki.special.edittags',
-                       'mediawiki.special.edittags.styles' ] );
+                       'mediawiki.special' ] );
 
                $this->submitClicked = $request->wasPosted() && $request->getBool( 'wpSubmit' );
 
index d30ff43..0069ea1 100644 (file)
@@ -143,8 +143,8 @@ class MovePageForm extends UnlistedSpecialPage {
 
                $out = $this->getOutput();
                $out->setPageTitle( $this->msg( 'move-page', $this->oldTitle->getPrefixedText() ) );
+               $out->addModuleStyles( 'mediawiki.special' );
                $out->addModules( 'mediawiki.special.movePage' );
-               $out->addModuleStyles( 'mediawiki.special.movePage.styles' );
                $this->addHelpLink( 'Help:Moving a page' );
 
                $out->addWikiMsg( $this->getConfig()->get( 'FixDoubleRedirects' ) ?
index 34fcc78..46ad31c 100644 (file)
@@ -60,7 +60,7 @@ class SpecialPagesWithProp extends QueryPage {
        public function execute( $par ) {
                $this->setHeaders();
                $this->outputHeader();
-               $this->getOutput()->addModuleStyles( 'mediawiki.special.pagesWithProp' );
+               $this->getOutput()->addModuleStyles( 'mediawiki.special' );
 
                $request = $this->getRequest();
                $propname = $request->getVal( 'propname', $par );
index f7cb654..2eeafe6 100644 (file)
@@ -387,7 +387,7 @@ class SpecialUpload extends SpecialPage {
                }
 
                // Add styles for the warning, reused from the live preview
-               $this->getOutput()->addModuleStyles( 'mediawiki.special.upload.styles' );
+               $this->getOutput()->addModuleStyles( 'mediawiki.special' );
 
                $linkRenderer = $this->getLinkRenderer();
                $warningHtml = '<h2>' . $this->msg( 'uploadwarning' )->escaped() . "</h2>\n"
index dda1dac..746084e 100644 (file)
@@ -60,11 +60,11 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $output = $this->getOutput();
                $request = $this->getRequest();
                $this->addHelpLink( 'Help:Watching pages' );
+               $output->addModuleStyles( [ 'mediawiki.special' ] );
                $output->addModules( [
                        'mediawiki.special.changeslist.visitedstatus',
                        'mediawiki.special.watchlist',
                ] );
-               $output->addModuleStyles( [ 'mediawiki.special.watchlist.styles' ] );
 
                $mode = SpecialEditWatchlist::getMode( $request, $subpage );
                if ( $mode !== false ) {
index e561fe5..8ab6f29 100644 (file)
@@ -79,7 +79,7 @@ class UploadForm extends HTMLForm {
 
                # Add a link to edit MediaWiki:Licenses
                if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
-                       $this->getOutput()->addModuleStyles( 'mediawiki.special.upload.styles' );
+                       $this->getOutput()->addModuleStyles( 'mediawiki.special' );
                        $licensesLink = $linkRenderer->makeKnownLink(
                                $this->msg( 'licenses' )->inContentLanguage()->getTitle(),
                                $this->msg( 'licenses-edit' )->text(),
index e187ef2..cdd225d 100644 (file)
@@ -1994,15 +1994,18 @@ return [
        ],
        'mediawiki.special' => [
                'styles' => [
-                       'resources/src/mediawiki.special/mediawiki.special.css',
-                       'resources/src/mediawiki.special/mediawiki.special.userrights.css',
+                       'resources/src/mediawiki.special/special.css',
+                       'resources/src/mediawiki.special/apisandbox.css',
+                       'resources/src/mediawiki.special/comparepages.less',
+                       'resources/src/mediawiki.special/edittags.css',
+                       'resources/src/mediawiki.special/movePage.css',
+                       'resources/src/mediawiki.special/pagesWithProp.css',
+                       'resources/src/mediawiki.special/upload.css',
+                       'resources/src/mediawiki.special/userrights.css',
+                       'resources/src/mediawiki.special/watchlist.css',
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
-       'mediawiki.special.apisandbox.styles' => [
-               'targets' => [ 'desktop', 'mobile' ],
-               'styles' => 'resources/src/mediawiki.special.apisandbox.styles.css',
-       ],
        'mediawiki.special.apisandbox' => [
                'styles' => 'resources/src/mediawiki.special.apisandbox/apisandbox.css',
                'scripts' => 'resources/src/mediawiki.special.apisandbox/apisandbox.js',
@@ -2119,9 +2122,6 @@ return [
        'mediawiki.special.changeslist.visitedstatus' => [
                'scripts' => 'resources/src/mediawiki.special.changeslist.visitedstatus.js',
        ],
-       'mediawiki.special.comparepages.styles' => [
-               'styles' => 'resources/src/mediawiki.special.comparepages.styles.less',
-       ],
        'mediawiki.special.contributions' => [
                'scripts' => 'resources/src/mediawiki.special.contributions.js',
                'dependencies' => [
@@ -2140,9 +2140,6 @@ return [
                        'tags-edit-chosen-no-results',
                ],
        ],
-       'mediawiki.special.edittags.styles' => [
-               'styles' => 'resources/src/mediawiki.special.edittags.styles.css',
-       ],
        'mediawiki.special.import' => [
                'scripts' => 'resources/src/mediawiki.special.import.js',
        ],
@@ -2153,18 +2150,12 @@ return [
                        'mediawiki.widgets',
                ],
        ],
-       'mediawiki.special.movePage.styles' => [
-               'styles' => 'resources/src/mediawiki.special.movePage.css',
-       ],
        'mediawiki.special.pageLanguage' => [
                'scripts' => 'resources/src/mediawiki.special.pageLanguage.js',
                'dependencies' => [
                        'oojs-ui-core',
                ],
        ],
-       'mediawiki.special.pagesWithProp' => [
-               'styles' => 'resources/src/mediawiki.special.pagesWithProp.css',
-       ],
        'mediawiki.special.preferences' => [
                'targets' => [ 'desktop', 'mobile' ],
                'scripts' => [
@@ -2311,7 +2302,7 @@ return [
                        'prefs-editing',
                ],
                'dependencies' => [
-                       'mediawiki.special.upload.styles',
+                       'mediawiki.special',
                        'jquery.spinner',
                        'mediawiki.jqueryMsg',
                        'mediawiki.api',
@@ -2323,9 +2314,6 @@ return [
                        'user.options',
                ],
        ],
-       'mediawiki.special.upload.styles' => [
-               'styles' => 'resources/src/mediawiki.special.upload.styles.css',
-       ],
        'mediawiki.special.userlogin.common.styles' => [
                'targets' => [ 'desktop', 'mobile' ],
                'skinStyles' => [
@@ -2384,9 +2372,6 @@ return [
                        'user.options',
                ],
        ],
-       'mediawiki.special.watchlist.styles' => [
-               'styles' => 'resources/src/mediawiki.special.watchlist.styles.css',
-       ],
        'mediawiki.special.version' => [
                'styles' => 'resources/src/mediawiki.special.version.css',
        ],
diff --git a/resources/src/mediawiki.special.apisandbox.styles.css b/resources/src/mediawiki.special.apisandbox.styles.css
deleted file mode 100644 (file)
index 4dc4c27..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-.client-js .mw-apisandbox-nojs {
-       display: none;
-}
diff --git a/resources/src/mediawiki.special.comparepages.styles.less b/resources/src/mediawiki.special.comparepages.styles.less
deleted file mode 100644 (file)
index 87b7a8b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-@import 'mediawiki.mixins';
-
-.mw-special-ComparePages .mw-htmlform-ooui-wrapper {
-       width: 100%;
-}
-
-.mw-special-ComparePages .oo-ui-layout.oo-ui-panelLayout.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed {
-       float: left;
-       width: 49%;
-       .box-sizing( border-box );
-}
-
-.mw-special-ComparePages .oo-ui-layout.oo-ui-panelLayout.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed:nth-of-type( 2 ) {
-       margin-left: 2%;
-}
-
-.mw-special-ComparePages .mw-htmlform-submit-buttons {
-       clear: both;
-}
diff --git a/resources/src/mediawiki.special.edittags.styles.css b/resources/src/mediawiki.special.edittags.styles.css
deleted file mode 100644 (file)
index 204009c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*!
- * Styling for Special:EditTags and action=editchangetags
- */
-#mw-edittags-tags-selector td {
-       vertical-align: top;
-}
-
-#mw-edittags-tags-selector-multi td {
-       vertical-align: top;
-       padding-right: 1.5em;
-}
-
-#mw-edittags-tag-list {
-       min-width: 20em;
-}
diff --git a/resources/src/mediawiki.special.movePage.css b/resources/src/mediawiki.special.movePage.css
deleted file mode 100644 (file)
index 9428fed..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Styles for Special:MovePage
- */
-
-.movepage-wrapper {
-       width: 50em;
-}
diff --git a/resources/src/mediawiki.special.pagesWithProp.css b/resources/src/mediawiki.special.pagesWithProp.css
deleted file mode 100644 (file)
index 7ef75d0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Distinguish actual data from information about it being hidden visually */
-.prop-value-hidden {
-       font-style: italic;
-}
diff --git a/resources/src/mediawiki.special.upload.styles.css b/resources/src/mediawiki.special.upload.styles.css
deleted file mode 100644 (file)
index 626a7e8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*!
- * Styling for Special:Upload
- */
-.mw-destfile-warning {
-       border: 1px solid #fde29b;
-       padding: 0.5em 1em;
-       margin-bottom: 1em;
-       color: #705000;
-       background-color: #fdf1d1;
-}
-
-p.mw-upload-editlicenses {
-       font-size: 90%;
-       text-align: right;
-}
diff --git a/resources/src/mediawiki.special.watchlist.styles.css b/resources/src/mediawiki.special.watchlist.styles.css
deleted file mode 100644 (file)
index c9861c2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*!
- * Styling for elements generated by JavaScript on Special:Watchlist
- */
-.mw-changelist-line-inner-unwatched {
-       text-decoration: line-through;
-       opacity: 0.5;
-}
-
-span.mw-changeslist-line-prefix {
-       display: inline-block;
-}
-/* This can be either a span or a table cell */
-.mw-changeslist-line-prefix {
-       width: 1.25em;
-}
diff --git a/resources/src/mediawiki.special/apisandbox.css b/resources/src/mediawiki.special/apisandbox.css
new file mode 100644 (file)
index 0000000..4dc4c27
--- /dev/null
@@ -0,0 +1,3 @@
+.client-js .mw-apisandbox-nojs {
+       display: none;
+}
diff --git a/resources/src/mediawiki.special/comparepages.less b/resources/src/mediawiki.special/comparepages.less
new file mode 100644 (file)
index 0000000..87b7a8b
--- /dev/null
@@ -0,0 +1,19 @@
+@import 'mediawiki.mixins';
+
+.mw-special-ComparePages .mw-htmlform-ooui-wrapper {
+       width: 100%;
+}
+
+.mw-special-ComparePages .oo-ui-layout.oo-ui-panelLayout.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed {
+       float: left;
+       width: 49%;
+       .box-sizing( border-box );
+}
+
+.mw-special-ComparePages .oo-ui-layout.oo-ui-panelLayout.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed:nth-of-type( 2 ) {
+       margin-left: 2%;
+}
+
+.mw-special-ComparePages .mw-htmlform-submit-buttons {
+       clear: both;
+}
diff --git a/resources/src/mediawiki.special/edittags.css b/resources/src/mediawiki.special/edittags.css
new file mode 100644 (file)
index 0000000..204009c
--- /dev/null
@@ -0,0 +1,15 @@
+/*!
+ * Styling for Special:EditTags and action=editchangetags
+ */
+#mw-edittags-tags-selector td {
+       vertical-align: top;
+}
+
+#mw-edittags-tags-selector-multi td {
+       vertical-align: top;
+       padding-right: 1.5em;
+}
+
+#mw-edittags-tag-list {
+       min-width: 20em;
+}
diff --git a/resources/src/mediawiki.special/mediawiki.special.css b/resources/src/mediawiki.special/mediawiki.special.css
deleted file mode 100644 (file)
index 0676bfc..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Special:AllMessages */
-#mw-allmessagestable .allmessages-customised .am_default {
-       background-color: #fcffc4;
-}
-
-#mw-allmessagestable .allmessages-customised:hover .am_default {
-       background-color: #faff90;
-}
-
-#mw-allmessagestable .am_actual {
-       background-color: #e2ffe2;
-}
-
-#mw-allmessagestable .allmessages-customised:hover + .allmessages-customised .am_actual {
-       background-color: #b1ffb1;
-}
-
-/* Common for Special:Allpages and Special:PrefixIndex */
-.mw-allpages-body,
-.mw-prefixindex-body {
-       columns: 22em 3;
-       -moz-columns: 22em 3;
-       -webkit-columns: 22em 3;
-       break-inside: avoid-column;
-       page-break-inside: avoid;
-       -webkit-column-break-inside: avoid;
-}
-
-.mw-allpages-chunk,
-.mw-prefixindex-list {
-       margin-top: 0;
-       margin-bottom: 0;
-}
-
-.allpagesredirect {
-       font-style: italic;
-}
-
-/* Special:Block */
-.mw-ipb-conveniencelinks {
-       font-size: 90%;
-       text-align: right;
-}
-
-.mw-block-hideuser,
-.mw-block-confirm {
-       font-weight: bold;
-}
-
-#mw-input-wpReason .oo-ui-dropdownInputWidget,
-#mw-input-wpReason .oo-ui-textInputWidget {
-       display: block;
-       max-width: 50em;
-}
-
-#mw-input-wpReason .oo-ui-textInputWidget {
-       margin-top: 0.5em;
-}
-
-/* Special:BlockList */
-.mw-blocklist .mw-usertoollinks,
-.mw-blocklist-actions {
-       white-space: nowrap;
-       font-size: 90%;
-}
-
-/* Special:Contributions */
-.mw-uctop {
-       font-weight: bold;
-}
-.mw-contributions-form select {
-       vertical-align: middle;
-}
-
-/* Special:EditWatchlist */
-.watchlistredir {
-       font-style: italic;
-}
-
-/* Special:EmailUser */
-#mw-emailuser-sender,
-#mw-emailuser-recipient {
-       font-weight: bold;
-}
-
-/* Special:FileDuplicateSearch */
-#mw-fileduplicatesearch-icon {
-       float: right;
-}
-
-/* Special:ListGroupRights */
-.mw-listgrouprights-table tr {
-       vertical-align: top;
-}
-.listgrouprights-revoked {
-       text-decoration: line-through;
-}
-
-/* Special:RevisionDelete */
-.mw-revdel-editreasons {
-       font-size: 90%;
-       text-align: right;
-}
-
-/* Special:Specialpages */
-.mw-specialpagerestricted {
-       font-weight: bold;
-}
-
-.mw-specialpages-list {
-       -webkit-columns: 16em 2;
-       -moz-columns: 16em 2;
-       columns: 16em 2;
-}
-
-.mw-specialpages-list ul {
-       margin-top: 0;
-       margin-bottom: 0;
-}
-
-/* Special:Statistics */
-.mw-statistics-numbers {
-       text-align: right;
-}
-
-/* Special:ProtectedPages */
-.mw-protectedpages .mw-usertoollinks,
-.mw-protectedpages-length,
-.mw-protectedpages-actions {
-       white-space: nowrap;
-       font-size: 90%;
-}
-.mw-protectedpages-unknown {
-       color: #72777d;
-       font-size: 90%;
-}
diff --git a/resources/src/mediawiki.special/mediawiki.special.userrights.css b/resources/src/mediawiki.special/mediawiki.special.userrights.css
deleted file mode 100644 (file)
index 1ffdf70..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*!
- * Styling for Special:UserRights
- */
-.mw-userrights-nested {
-       margin-left: 1.2em;
-}
-
-.mw-userrights-nested span {
-       margin-left: 0.3em;
-       display: inline-block;
-       vertical-align: middle;
-}
-
-.mw-userrights-disabled {
-       color: #72777d;
-}
-.mw-userrights-groups * td,
-.mw-userrights-groups * th {
-       padding-right: 1.5em;
-}
-
-.mw-userrights-groups * th {
-       text-align: left;
-}
-
-/* Dynamically show/hide the expiry selection underneath each checkbox */
-input.mw-userrights-groupcheckbox:not( :checked ) ~ .mw-userrights-nested {
-       display: none;
-}
-
-/* Initial hide the expiry fields to prevent a FOUC on loading */
-/* The input fields gets unhidden by JavaScript when needed */
-.client-js .mw-userrights-expiryfield {
-       display: none;
-}
diff --git a/resources/src/mediawiki.special/movePage.css b/resources/src/mediawiki.special/movePage.css
new file mode 100644 (file)
index 0000000..9428fed
--- /dev/null
@@ -0,0 +1,7 @@
+/*!
+ * Styles for Special:MovePage
+ */
+
+.movepage-wrapper {
+       width: 50em;
+}
diff --git a/resources/src/mediawiki.special/pagesWithProp.css b/resources/src/mediawiki.special/pagesWithProp.css
new file mode 100644 (file)
index 0000000..7ef75d0
--- /dev/null
@@ -0,0 +1,4 @@
+/* Distinguish actual data from information about it being hidden visually */
+.prop-value-hidden {
+       font-style: italic;
+}
diff --git a/resources/src/mediawiki.special/special.css b/resources/src/mediawiki.special/special.css
new file mode 100644 (file)
index 0000000..0676bfc
--- /dev/null
@@ -0,0 +1,136 @@
+/* Special:AllMessages */
+#mw-allmessagestable .allmessages-customised .am_default {
+       background-color: #fcffc4;
+}
+
+#mw-allmessagestable .allmessages-customised:hover .am_default {
+       background-color: #faff90;
+}
+
+#mw-allmessagestable .am_actual {
+       background-color: #e2ffe2;
+}
+
+#mw-allmessagestable .allmessages-customised:hover + .allmessages-customised .am_actual {
+       background-color: #b1ffb1;
+}
+
+/* Common for Special:Allpages and Special:PrefixIndex */
+.mw-allpages-body,
+.mw-prefixindex-body {
+       columns: 22em 3;
+       -moz-columns: 22em 3;
+       -webkit-columns: 22em 3;
+       break-inside: avoid-column;
+       page-break-inside: avoid;
+       -webkit-column-break-inside: avoid;
+}
+
+.mw-allpages-chunk,
+.mw-prefixindex-list {
+       margin-top: 0;
+       margin-bottom: 0;
+}
+
+.allpagesredirect {
+       font-style: italic;
+}
+
+/* Special:Block */
+.mw-ipb-conveniencelinks {
+       font-size: 90%;
+       text-align: right;
+}
+
+.mw-block-hideuser,
+.mw-block-confirm {
+       font-weight: bold;
+}
+
+#mw-input-wpReason .oo-ui-dropdownInputWidget,
+#mw-input-wpReason .oo-ui-textInputWidget {
+       display: block;
+       max-width: 50em;
+}
+
+#mw-input-wpReason .oo-ui-textInputWidget {
+       margin-top: 0.5em;
+}
+
+/* Special:BlockList */
+.mw-blocklist .mw-usertoollinks,
+.mw-blocklist-actions {
+       white-space: nowrap;
+       font-size: 90%;
+}
+
+/* Special:Contributions */
+.mw-uctop {
+       font-weight: bold;
+}
+.mw-contributions-form select {
+       vertical-align: middle;
+}
+
+/* Special:EditWatchlist */
+.watchlistredir {
+       font-style: italic;
+}
+
+/* Special:EmailUser */
+#mw-emailuser-sender,
+#mw-emailuser-recipient {
+       font-weight: bold;
+}
+
+/* Special:FileDuplicateSearch */
+#mw-fileduplicatesearch-icon {
+       float: right;
+}
+
+/* Special:ListGroupRights */
+.mw-listgrouprights-table tr {
+       vertical-align: top;
+}
+.listgrouprights-revoked {
+       text-decoration: line-through;
+}
+
+/* Special:RevisionDelete */
+.mw-revdel-editreasons {
+       font-size: 90%;
+       text-align: right;
+}
+
+/* Special:Specialpages */
+.mw-specialpagerestricted {
+       font-weight: bold;
+}
+
+.mw-specialpages-list {
+       -webkit-columns: 16em 2;
+       -moz-columns: 16em 2;
+       columns: 16em 2;
+}
+
+.mw-specialpages-list ul {
+       margin-top: 0;
+       margin-bottom: 0;
+}
+
+/* Special:Statistics */
+.mw-statistics-numbers {
+       text-align: right;
+}
+
+/* Special:ProtectedPages */
+.mw-protectedpages .mw-usertoollinks,
+.mw-protectedpages-length,
+.mw-protectedpages-actions {
+       white-space: nowrap;
+       font-size: 90%;
+}
+.mw-protectedpages-unknown {
+       color: #72777d;
+       font-size: 90%;
+}
diff --git a/resources/src/mediawiki.special/upload.css b/resources/src/mediawiki.special/upload.css
new file mode 100644 (file)
index 0000000..626a7e8
--- /dev/null
@@ -0,0 +1,15 @@
+/*!
+ * Styling for Special:Upload
+ */
+.mw-destfile-warning {
+       border: 1px solid #fde29b;
+       padding: 0.5em 1em;
+       margin-bottom: 1em;
+       color: #705000;
+       background-color: #fdf1d1;
+}
+
+p.mw-upload-editlicenses {
+       font-size: 90%;
+       text-align: right;
+}
diff --git a/resources/src/mediawiki.special/userrights.css b/resources/src/mediawiki.special/userrights.css
new file mode 100644 (file)
index 0000000..1ffdf70
--- /dev/null
@@ -0,0 +1,35 @@
+/*!
+ * Styling for Special:UserRights
+ */
+.mw-userrights-nested {
+       margin-left: 1.2em;
+}
+
+.mw-userrights-nested span {
+       margin-left: 0.3em;
+       display: inline-block;
+       vertical-align: middle;
+}
+
+.mw-userrights-disabled {
+       color: #72777d;
+}
+.mw-userrights-groups * td,
+.mw-userrights-groups * th {
+       padding-right: 1.5em;
+}
+
+.mw-userrights-groups * th {
+       text-align: left;
+}
+
+/* Dynamically show/hide the expiry selection underneath each checkbox */
+input.mw-userrights-groupcheckbox:not( :checked ) ~ .mw-userrights-nested {
+       display: none;
+}
+
+/* Initial hide the expiry fields to prevent a FOUC on loading */
+/* The input fields gets unhidden by JavaScript when needed */
+.client-js .mw-userrights-expiryfield {
+       display: none;
+}
diff --git a/resources/src/mediawiki.special/watchlist.css b/resources/src/mediawiki.special/watchlist.css
new file mode 100644 (file)
index 0000000..c9861c2
--- /dev/null
@@ -0,0 +1,15 @@
+/*!
+ * Styling for elements generated by JavaScript on Special:Watchlist
+ */
+.mw-changelist-line-inner-unwatched {
+       text-decoration: line-through;
+       opacity: 0.5;
+}
+
+span.mw-changeslist-line-prefix {
+       display: inline-block;
+}
+/* This can be either a span or a table cell */
+.mw-changeslist-line-prefix {
+       width: 1.25em;
+}