2 years agoresourceloader: Add version to ResourceLoaderImage urls for long-cache
Timo Tijhof [Thu, 26 Sep 2019 16:26:52 +0000 (17:26 +0100)]
resourceloader: Add version to ResourceLoaderImage urls for long-cache

The code previously here did not work well as it merely forwarded the
hash from the current web request. This had numerous issues:

1. It was often null because requests for stylesheets do not cary
   a version hash.
2. When requested by JavaScript, the version hash would be a
   combination-hash of many unrelated modules, thus when requested as
   part of different batches, it would produce different urls which
   is not ideal.

The impact of this is minimal currently because we basically never use
these urls, as SVGs are almost always embedded instead of ref'ed by url.
PNG urls are only generated for non-JS modules and then only used in older
browsers not supporting SVG. And, even after all that, for the edge case
of an SVG being ref'ed by url, they would be stored in LocalStorage by
mw.loader with the name+version of the module the image belonged to, not
the version hash of the batch request it came with.

Which means that, yes, localstorage key for "somemodule+someversion" would
have different values for different users, based on which batch the value
came with, because the image urls were using the version hash of the batch
request from ResourceLoaderContext. This is weird, but didn't cause bugs
or inefficiencies because the user would never be exposed to the other
possible urls for that image because we always check LocalStorage first.
It did cause fragmentation server-side in Varnish, though.

This is all fixed now by always including a version, and setting it to
the version of the module. This means there is no more Varnish fragmentation
for these. And it means that browsers are now allowed to cache the images
served from these urls for 30+ days (immutable) instead of only 5min,
which is what happened when they didn't have a version parameter (or set to

Bug: T233343
Change-Id: I4af7fda03698ed4c288d154e7787fb2f3cbbe6c5

2 years agoresourceloader: Add $modules parameter to makeVersionQuery()
Timo Tijhof [Thu, 26 Sep 2019 17:34:17 +0000 (18:34 +0100)]
resourceloader: Add $modules parameter to makeVersionQuery()

The 'version' and 'modules' parameters are a somewhat problematic
part of the ResourceLoaderContext object as we often pass around
the context but may be dealing with only a subset of the modules
in the outer request, or even entirely different ones (e.g.
for OutputPage's fake context 'modules' and 'version' are both

This is already visible in ClientHtml where we create a derivative
context just to call setModules() and have makeVersionQuery()
work. This is now fixed.

This change is in preparation for use in ResourceLoaderImage
(to fix T233343) where we'll need to compute a version for only
1 module of a larger set, and ideally without needing to create
another context.

Bug: T233343
Change-Id: Icc1a4fd1f58c4e49e58eee43ca4ba2de6cfffc76

2 years agoMerge "installer: Deprecate WebInstaller::getInfoBox, getWarningBox and getErrorBox"
jenkins-bot [Thu, 26 Sep 2019 20:16:01 +0000 (20:16 +0000)]
Merge "installer: Deprecate WebInstaller::getInfoBox, getWarningBox and getErrorBox"

2 years agoMerge "Clean up ar_usertext_timestamp index mess"
jenkins-bot [Thu, 26 Sep 2019 19:41:56 +0000 (19:41 +0000)]
Merge "Clean up ar_usertext_timestamp index mess"

2 years agoMerge "You are reviewing an old revision should be a warningbox"
jenkins-bot [Thu, 26 Sep 2019 19:41:48 +0000 (19:41 +0000)]
Merge "You are reviewing an old revision should be a warningbox"

2 years agoMerge "newRevisionsFromBatch: don't throw on duplicate row."
jenkins-bot [Thu, 26 Sep 2019 19:39:58 +0000 (19:39 +0000)]
Merge "newRevisionsFromBatch: don't throw on duplicate row."

2 years agoinstaller: Deprecate WebInstaller::getInfoBox, getWarningBox and getErrorBox
Volker E [Tue, 17 Sep 2019 01:53:29 +0000 (18:53 -0700)]
installer: Deprecate WebInstaller::getInfoBox, getWarningBox and getErrorBox

Since MW 1.31 there are messageBox, warningBox, errorBox and successBox
available which should be used instead.

These are simple wrappers around Html::messageBox and related methods
which should be used directly instead. Internal usage has been migrated
as of a9252abb1cf0, but these public methods remain for now. Once
removed we can also removed the internal Html::infoBox() method.

Bug: T232903
Change-Id: I2756c88987754c4e3f84d98c531d8396098cd7fe

2 years agoMerge "Fill GenderCache for used pages in action=query&prop=fileusage"
jenkins-bot [Thu, 26 Sep 2019 17:03:04 +0000 (17:03 +0000)]
Merge "Fill GenderCache for used pages in action=query&prop=fileusage"

2 years agoMerge "Parser: Use 'Special:Badtitle/Parser' instead of 'NO TITLE'"
jenkins-bot [Thu, 26 Sep 2019 14:15:53 +0000 (14:15 +0000)]
Merge "Parser: Use 'Special:Badtitle/Parser' instead of 'NO TITLE'"

2 years agoCommentStore: Accept SCHEMA_COMPAT_* constants
Brad Jorsch [Fri, 20 Sep 2019 18:35:39 +0000 (14:35 -0400)]
CommentStore: Accept SCHEMA_COMPAT_* constants

Extensions doing an actor and comment migration at the same time will
likely want to use the same constants for each, and that will most
likely be using write-both/read-old and write-both/read-new for the
middle stages rather than write-both/read-both and write-new/read-both
as implemented by the MIGRATION_* constants. See Ie29fd05 for example.

This patch changes CommentStore's internal logic to work correctly when
passed write-both/read-old or write-both/read-new.

Bug: T233449
Change-Id: Iebec80f969ad1c4f9f51a4f25656319cca32b0dd

2 years agoexception: Let MediaWiki.php control final output for ErrorPageError
Timo Tijhof [Wed, 18 Sep 2019 18:05:42 +0000 (19:05 +0100)]
exception: Let MediaWiki.php control final output for ErrorPageError

The same way it does already for non-error output. This makes
it so that doPreOutputCommit() consistently happens between
the staging of output and the actual sending of output.

It is still allowed for code to bypass this, such as for fatal
errors and for handlers that disable OutputPage (like Special:Export).

But for cases where we do want to perform doPreOutputCommit(), it
should be run consistently between staging and sending so that it
can make appropiate decisions based on the current state of

Previously, the state of OutputPage seen by doPreOutputCommit()
would be the broken/incomplete output of a seemingly succesful
(possibly cacheable) user action, which would then, after
doPreOutputCommit() runs, be completely replaced by $e->report()/

This is a prerequisite for being able to reliably send cookie-block
cookies on error pages (next patch).

Bug: T233594
Change-Id: Iaeaf5e55a5868e6be534ddda73f3b56b9d6ef8f0

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 26 Sep 2019 06:23:52 +0000 (08:23 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I49be2a7100bff079264a48b07e14b0edf30472be

2 years agoYou are reviewing an old revision should be a warningbox
jdlrobson [Mon, 9 Sep 2019 22:07:12 +0000 (15:07 -0700)]
You are reviewing an old revision should be a warningbox

It's warning you about the outdated nature of the content.

Given this message can be customised and thus styled, this will
have presentation issues on certain wikis (see screenshots).

If we go ahead with this change we'll probably want to give editors
a 2 weeks heads up via tech news.


Bug: T232415
Change-Id: I7dab00d5500937c03166398d92ea65a599bf3e22

2 years agoFill GenderCache for used pages in action=query&prop=fileusage
Umherirrender [Tue, 10 Sep 2019 17:42:58 +0000 (19:42 +0200)]
Fill GenderCache for used pages in action=query&prop=fileusage

Add an utility function

GenderCache stops working when there are more than 1000 cache missed
and returning the default value (T200238)
Fill the cache with all needed users avoids this behaviour
and it saves one query per user page.

Change-Id: I911dcb160a7b169091b9e8f66fb3908d0f2a1ba4

2 years agoMerge "Pass "services" through from coreRoutes.json to ObjectFactory"
jenkins-bot [Wed, 25 Sep 2019 15:48:02 +0000 (15:48 +0000)]
Merge "Pass "services" through from coreRoutes.json to ObjectFactory"

2 years agordbms: fix active GTID filtering in DatabaseMysqlBase
Aaron Schulz [Wed, 19 Jun 2019 08:10:15 +0000 (09:10 +0100)]
rdbms: fix active GTID filtering in DatabaseMysqlBase

In masterPosWait(), only $pos will have the known active domain/server set
since it usually comes from getMasterPos(). However, the reference position,
from getReplicaDB(), does not have the active domains set since querying
gtid_domain_id on the replica would be incorrect and getting a connection
to the master could be expensive.

Remove obsolete hacks for jobs that used to store master positions.

Also, use the regular Database::query() method for stylistic consistency.

Bug: T224422
Change-Id: I41bbb9f337e46451aa17788dbd446db4a213a5a7

2 years agoMerge "Updated wikimedia/avro from 1.8.0 to 1.9.0"
jenkins-bot [Wed, 25 Sep 2019 07:53:14 +0000 (07:53 +0000)]
Merge "Updated wikimedia/avro from 1.8.0 to 1.9.0"

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 25 Sep 2019 06:34:37 +0000 (08:34 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I27b08eefba6d5f7e8358fb0b2ea7f84552cb38c0

2 years agoMerge "resourceloader: Convert ImageModule test to stricter unit test"
jenkins-bot [Wed, 25 Sep 2019 06:10:12 +0000 (06:10 +0000)]
Merge "resourceloader: Convert ImageModule test to stricter unit test"

2 years agoMerge "Special:Contributions form collapsed when offset is defined"
jenkins-bot [Wed, 25 Sep 2019 02:29:14 +0000 (02:29 +0000)]
Merge "Special:Contributions form collapsed when offset is defined"

2 years agoSpecial:Contributions form collapsed when offset is defined
jdlrobson [Thu, 28 Mar 2019 00:06:35 +0000 (17:06 -0700)]
Special:Contributions form collapsed when offset is defined

Form on Special:Contributions is collapsed while assuming
user is paging through results when target, start or end date
offset is defined.

Bug: T117736
Bug: T191868
Change-Id: I05030f1473b13bbe66bf56b9affc8d33f7210b81

2 years agoPass "services" through from coreRoutes.json to ObjectFactory
Tim Starling [Mon, 23 Sep 2019 05:30:46 +0000 (15:30 +1000)]
Pass "services" through from coreRoutes.json to ObjectFactory

Allows service injection into REST handlers.

Change-Id: I83d1780903febe0499c6a575a0e6725dc01e5b0c

2 years agoMerge "Replace infobox usages and extend successbox, warningbox and errorbox"
jenkins-bot [Wed, 25 Sep 2019 00:44:28 +0000 (00:44 +0000)]
Merge "Replace infobox usages and extend successbox, warningbox and errorbox"

2 years agoMerge "Make Special:Contributions use OOUI"
jenkins-bot [Wed, 25 Sep 2019 00:38:05 +0000 (00:38 +0000)]
Merge "Make Special:Contributions use OOUI"

2 years agoMerge "Avoid uses of wfWikiId() in maintenance/"
jenkins-bot [Tue, 24 Sep 2019 23:55:54 +0000 (23:55 +0000)]
Merge "Avoid uses of wfWikiId() in maintenance/"

2 years agoReplace infobox usages and extend successbox, warningbox and errorbox
Volker E [Tue, 17 Sep 2019 04:39:49 +0000 (21:39 -0700)]
Replace infobox usages and extend successbox, warningbox and errorbox

Adding optional $className parameter to provide additional
styling options.
Optional parameter $heading was introduced for MobileFrontend. Therefore
leaving inconsistent parameter order is necessary for the time being.

Bug: T232903
Change-Id: I5857b2c58a47a83156c32f086a73fe2bd48ab0c8

2 years agoresourceloader: Convert ImageModule test to stricter unit test
Timo Tijhof [Tue, 24 Sep 2019 22:48:48 +0000 (23:48 +0100)]
resourceloader: Convert ImageModule test to stricter unit test

Bug: T233343
Change-Id: I1f9d0b6b735c9192bb32baf249eefea76c65929e

2 years agoMerge "Maintenance.php: Fix mwdebug error"
jenkins-bot [Tue, 24 Sep 2019 22:50:22 +0000 (22:50 +0000)]
Merge "Maintenance.php: Fix mwdebug error"

2 years agoMerge "exception: Add missing early return for UserNotLoggedIn error page"
jenkins-bot [Tue, 24 Sep 2019 22:50:14 +0000 (22:50 +0000)]
Merge "exception: Add missing early return for UserNotLoggedIn error page"

2 years agoAvoid uses of wfWikiId() in maintenance/
Aaron Schulz [Tue, 24 Sep 2019 22:42:00 +0000 (15:42 -0700)]
Avoid uses of wfWikiId() in maintenance/

Change-Id: I81904c0ba7120d7da2454929ffec5c1c0892be02

2 years agoMerge "Enable preservation of grapheme clusters in highlightQuery"
jenkins-bot [Tue, 24 Sep 2019 21:51:19 +0000 (21:51 +0000)]
Merge "Enable preservation of grapheme clusters in highlightQuery"

2 years agoMerge "phan: Removed PhanUndeclaredTypeParameter suppression"
jenkins-bot [Tue, 24 Sep 2019 21:50:36 +0000 (21:50 +0000)]
Merge "phan: Removed PhanUndeclaredTypeParameter suppression"

2 years agoMerge "Improve the top section of Special:Watchlist for small screens"
jenkins-bot [Tue, 24 Sep 2019 21:19:47 +0000 (21:19 +0000)]
Merge "Improve the top section of Special:Watchlist for small screens"

2 years agoMerge "Simplify NewFilesPager::getQueryInfo"
jenkins-bot [Tue, 24 Sep 2019 20:57:34 +0000 (20:57 +0000)]
Merge "Simplify NewFilesPager::getQueryInfo"

2 years agoMerge "resourceloader: Remove "expected error" noise from mw.loader tests"
jenkins-bot [Tue, 24 Sep 2019 20:54:31 +0000 (20:54 +0000)]
Merge "resourceloader: Remove "expected error" noise from mw.loader tests"

2 years agoEnable preservation of grapheme clusters in highlightQuery
tjones [Tue, 24 Sep 2019 20:42:05 +0000 (16:42 -0400)]
Enable preservation of grapheme clusters in highlightQuery

Make use of the option to preserve grapheme clusters in highlightQuery
in OOUI's LabelElement.js so that partial matches in the main search
page on Special:Search don't break graphemes.

Bug: T35242
Depends-On: Iac79095a1b40ef92b3cfd9421916928217639434
Change-Id: I5c458da39156db8a39412b91cf647aacd43fbbb9

2 years agoMerge "Improve documentation of newRevisionsFromBatch()"
jenkins-bot [Tue, 24 Sep 2019 20:25:00 +0000 (20:25 +0000)]
Merge "Improve documentation of newRevisionsFromBatch()"

2 years agoImprove the top section of Special:Watchlist for small screens
Jan Drewniak [Tue, 24 Sep 2019 09:26:20 +0000 (11:26 +0200)]
Improve the top section of Special:Watchlist for small screens

Bug: T225127#5518870
Change-Id: I2d3e2cf27150487190b34cc9b76db9905599e27b

2 years agophan: Removed PhanUndeclaredTypeParameter suppression
Umherirrender [Tue, 24 Sep 2019 19:20:28 +0000 (21:20 +0200)]
phan: Removed PhanUndeclaredTypeParameter suppression

Fixed the non-namespaced WebRequest by adding a backslash

Change-Id: I9f1e3e000d9a512a74f93145cd5e66b1b38ab8b2

2 years agonewRevisionsFromBatch: don't throw on duplicate row.
daniel [Tue, 24 Sep 2019 17:39:54 +0000 (19:39 +0200)]
newRevisionsFromBatch: don't throw on duplicate row.

Bug: T228988
Change-Id: I907fe25692a74b591300b2f182ac6234c22c8071

2 years agoMerge "LogPager: Add IGNORE INDEX to avoid MariaDB optimizer bug"
jenkins-bot [Tue, 24 Sep 2019 17:41:06 +0000 (17:41 +0000)]
Merge "LogPager: Add IGNORE INDEX to avoid MariaDB optimizer bug"

2 years agoImprove documentation of newRevisionsFromBatch()
daniel [Tue, 24 Sep 2019 17:18:08 +0000 (19:18 +0200)]
Improve documentation of newRevisionsFromBatch()

Document purpose and behavior of the $title parameter.

Bug: T228988
Change-Id: I89966321ec3b4feb5a59e06b8a656d76c4bd9ef2

2 years agoresourceloader: Remove "expected error" noise from mw.loader tests
Timo Tijhof [Tue, 24 Sep 2019 16:42:42 +0000 (17:42 +0100)]
resourceloader: Remove "expected error" noise from mw.loader tests

After commit bbded40a2b26c, the stub for mw.track no longer worked
as originally intended, causing the stack traces to be printed
to the Karma output and browser console again.

The test still passed because mw.trackError calls mw.track, but
it no longer stubbed out the trace logging noise.

Also simplify some assertion messages while at it, these are meant
to describe the subject (the compared value) not be the value
itself (which is the second param) and not the error message
(which QUnit produces).

Change-Id: I657bf4479a40e1b73b45426df98882aed32b4cba

2 years agoLogPager: Add IGNORE INDEX to avoid MariaDB optimizer bug
Brad Jorsch [Fri, 20 Sep 2019 19:38:52 +0000 (15:38 -0400)]
LogPager: Add IGNORE INDEX to avoid MariaDB optimizer bug

This is basically the same thing we fixed for ApiQueryLogEvents in

Bug: T223151
Change-Id: I53a7ed59de3eed2b0b4f1b1fb7f6d302b1de276c

2 years agoMark $wgMainPageIsDomainRoot as experimental
Niklas Laxström [Tue, 24 Sep 2019 06:53:19 +0000 (08:53 +0200)]
Mark $wgMainPageIsDomainRoot as experimental

Change-Id: I328c1022aec8918cbc5b4ee50de3d1dbe5586cfd

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Tue, 24 Sep 2019 06:27:32 +0000 (08:27 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ie40b3da759701a2eb31d05a3230b547d5182c24a

2 years agoMerge "resourceloader: Reduce severity of unknown page module warning"
jenkins-bot [Tue, 24 Sep 2019 00:56:30 +0000 (00:56 +0000)]
Merge "resourceloader: Reduce severity of unknown page module warning"

2 years agoMerge "resourceloader: Remove redundant closure of some startup and base files"
jenkins-bot [Tue, 24 Sep 2019 00:56:22 +0000 (00:56 +0000)]
Merge "resourceloader: Remove redundant closure of some startup and base files"

2 years agoresourceloader: Reduce severity of unknown page module warning
Timo Tijhof [Mon, 23 Sep 2019 23:47:18 +0000 (00:47 +0100)]
resourceloader: Reduce severity of unknown page module warning

These are silently skipped and generally no cause for alarm.
For example, when enabling a gadget by default and then
disabling/deleting it, cached HTML will still have it queued,
which is silently skipped and the other queued modules are loaded
just fine.

The same for when merging module bundles where the destination
is already loaded, in such case it is tolerated to let cached
ParserOutput objects still queuing it silently skip it.
Keeping it existent just to avoid a warning isn't particularly
useful and might even obscure problems or give the illusion that
it is still working and providing compatibility (e.g. loading the
new code), which might not be true.

The silent skipping of modules originally did not have any
logging or warning attached to it, it was silent from 2010
to April 2019. In 2017, commit 37df741514 adds a console warning
when a circular dependency is detected.

In April 2019, commit d059dffa2 optimised away this redundant
silent skipping of unknown modules, in favour of re-using the
code for circular dep detection, which did the same thing already,
but with a debug warning. This meant it now showed scary stack
traces when all there's only an stale module ref, which are normal
in RL and generaly nothing to worry about. This was amplified
by Minerva's tracking of client-side errors going beyond just
'global.error' but also listerning to recoverable internal errors
from 'resourceloader.exception', which now included these
debug warnings.

Change-Id: Ie71adbe18e8dbeb661ddb9d7d3d1d0897891d515

2 years agoresourceloader: Remove redundant closure of some startup and base files
Timo Tijhof [Tue, 24 Sep 2019 00:09:04 +0000 (01:09 +0100)]
resourceloader: Remove redundant closure of some startup and base files

* errorLogger: Contains only top-level assignments and statements,
  no scope needed. If it does need a scope at some point, then it
  should be converted to packageFiles first so that the closure
  still isn't needed (see T50886).

* requestIdleCallback: This file should do nothing in modern browsers,
  except alias a native method, and expose the fallback for testing.
  Remove the closure and with it the (usually) unused local var.

* mediawiki.js: Use the shorter Object.hasOwnProperty instead,
  we already do this in several files. Both provide a quick reference
  to the native method. Object.prototype.hasOwnProperty is more direct
  visually, but also less direct at run-time (3 lookups instead of 2).
  MW does not support environments that extend native classes such as
  Object or their prototypes, so this makes no difference in that
  regard and is already done in several core files. (More wide changes
  to be done separately).

Change-Id: I98ed4da4807c54254669053cef47a3e67b4ad2cf

2 years agoexception: Add missing early return for UserNotLoggedIn error page
Timo Tijhof [Mon, 23 Sep 2019 23:33:20 +0000 (00:33 +0100)]
exception: Add missing early return for UserNotLoggedIn error page

Follows-up d0439af89f6b254c.

If the UserNotLoggedIn class is constructed with an unsupported
message parameter, thrown, and handled by MWExceptionHandler, the
report() method would get called, and it would call the parent,
which stages a full error page and sends it via OutputPage::output.

Due to the missing return statement, it would then still execute
the remaining code, which messes up the internal state of the
already-sent OutputPage object by changing its redirect target
(which will never be used, but might confuse other consumers),
and trying to re-send output() and redirect headers, which will
fail with a warning.

Fixing this is required for T233594 and Iaeaf5e55a586, which allows
ErrorPageError to be "stage only" without ending output. Without
this fix, it would call the parent and do stage-only, but then
the remaining code in this method also work and actually succeed
at sending an invalid message to the user.

To preserve current (accidentally correct) behaviour, this needs
to be fixed first.

Bug: T233594
Bug: T17484
Change-Id: Ic5d73becd889839399a5b425cbbe22a3401acea9

2 years agoMerge "Fix type for timeout and connectTimeout in HttpRequestFactory::create"
jenkins-bot [Mon, 23 Sep 2019 20:11:36 +0000 (20:11 +0000)]
Merge "Fix type for timeout and connectTimeout in HttpRequestFactory::create"

2 years agoAmend expanded HTMLForm legend styling
Volker E [Mon, 23 Sep 2019 19:08:21 +0000 (12:08 -0700)]
Amend expanded HTMLForm legend styling

Follow-up to I6964296bc68705 providing same top and bottom padding
when expanded.

Change-Id: Ib69f730f9fa713bc8a6d7bf0fdbb7a6d26b1f0ab

2 years agoMake Special:Contributions use OOUI
jdlrobson [Sat, 2 Apr 2016 08:03:42 +0000 (11:03 +0300)]
Make Special:Contributions use OOUI

* IP address/username is now a single label & input element combination
* Add page-specific styles in separate LESS file
* Remove no longer necessary CSS rule

Bug: T117736
Bug: T219238
Change-Id: I979078d8937898acae22bc28d5ed51da1d4ed627

2 years agoFix type for timeout and connectTimeout in HttpRequestFactory::create
Umherirrender [Sun, 22 Sep 2019 19:29:12 +0000 (21:29 +0200)]
Fix type for timeout and connectTimeout in HttpRequestFactory::create

Both can have a string 'default'

Change-Id: I9c49cf7db762f251b010bc5469d4c1b4a7797f45

2 years agoImprove collapsible HTMLForm styling (and accessibility, slightly)
Bartosz Dziewoński [Tue, 28 May 2019 22:22:18 +0000 (00:22 +0200)]
Improve collapsible HTMLForm styling (and accessibility, slightly)

Previously the form was only collapsible/expandable using the small
link-button on the far right. Now you can click on the entire header
to do it, and it has an appropriate pretty icon.

We add appropriate ARIA `role` and textual labels. Together with
recently added `toggleARIA` option of jquery.makeCollapsible in
Ic457bda58e56f we feature a screen reader workable output.

Bug: T222904
Change-Id: I6964296bc6870550478de662d21f12a1fc084c15

2 years agoMaintenance.php: Fix mwdebug error
TheSandDoctor [Mon, 23 Sep 2019 17:24:19 +0000 (10:24 -0700)]
Maintenance.php: Fix mwdebug error

Resolve error with showJobs.php --mwdebug option. Previously, it displayed an error if not followed by "=1".
This was resolved by changing
$this->addOption( 'mwdebug', 'Enable built-in MediaWiki development settings', false, true );
$this->addOption( 'mwdebug', 'Enable built-in MediaWiki development settings', false, false );

Bug: T233257
Change-Id: I322fa539a302c2726fffd2420f7f56aec476b32b

2 years agoMerge "Remove Revision::getRevisionText from migrateArchiveText"
jenkins-bot [Mon, 23 Sep 2019 17:01:47 +0000 (17:01 +0000)]
Merge "Remove Revision::getRevisionText from migrateArchiveText"

2 years agoMerge "site: Make getPageUrl consistently return null"
jenkins-bot [Mon, 23 Sep 2019 16:36:32 +0000 (16:36 +0000)]
Merge "site: Make getPageUrl consistently return null"

2 years agoMerge "Add config for serving main Page from the domain root"
jenkins-bot [Mon, 23 Sep 2019 15:28:03 +0000 (15:28 +0000)]
Merge "Add config for serving main Page from the domain root"

2 years agoMerge "FauxRequest: don’t override getValues()"
jenkins-bot [Mon, 23 Sep 2019 12:30:46 +0000 (12:30 +0000)]
Merge "FauxRequest: don’t override getValues()"

2 years agoAdd config for serving main Page from the domain root
Amir Sarabadani [Mon, 1 Jul 2019 23:25:01 +0000 (01:25 +0200)]
Add config for serving main Page from the domain root

Bug: T120085
Change-Id: If2d82340ec58888a0bac96924ab63456b6d480fb

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 23 Sep 2019 06:24:36 +0000 (08:24 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I0c47f67f860aae41d794a2c4ec4d22527de83328

2 years agoUpdated wikimedia/avro from 1.8.0 to 1.9.0
Reedy [Sun, 22 Sep 2019 21:30:51 +0000 (22:30 +0100)]
Updated wikimedia/avro from 1.8.0 to 1.9.0

Bug: T233165

Depends-On: I070678446f1932d63b9c533b4c5406ad7e69e291
Change-Id: I7658c18a3c6868c12ee453027e9f4b30ee663cd9

2 years agoParser: Use 'Special:Badtitle/Parser' instead of 'NO TITLE'
Fomafix [Fri, 30 Aug 2019 09:43:35 +0000 (11:43 +0200)]
Parser: Use 'Special:Badtitle/Parser' instead of 'NO TITLE'

Change-Id: I818ac7d4766c3e52b56c2bd4abddb88e4140003b

2 years agoPHPVersionCheck: Consistently use double quotes for HTML attributes
Fomafix [Sun, 22 Sep 2019 10:19:59 +0000 (12:19 +0200)]
PHPVersionCheck: Consistently use double quotes for HTML attributes

Change-Id: I6130d12b34ee4dc5e5896c7fa6a7bc14b1ed9893

2 years agoPass language to Status::getWikiText
Umherirrender [Tue, 18 Sep 2018 20:01:56 +0000 (22:01 +0200)]
Pass language to Status::getWikiText

Avoid use of $wgLang

Change-Id: I9cd633a20c5c60e56a101a9a699eea6db8b8eef0

2 years agoSimplify NewFilesPager::getQueryInfo
Umherirrender [Mon, 19 Aug 2019 19:57:32 +0000 (21:57 +0200)]
Simplify NewFilesPager::getQueryInfo

The query here is not used for the images to display, so the query must
not include all columns from the images table, because that is not used

The gallery itself will load the necessary information for the display
in separate queries

Bug: T227608
Change-Id: I70b0d1bcdc155c38d69b5dd52bf4e3898920ab76

2 years agoMerge "localisation: Remove PHP5-specific perf optimisation"
jenkins-bot [Sat, 21 Sep 2019 03:29:49 +0000 (03:29 +0000)]
Merge "localisation: Remove PHP5-specific perf optimisation"

2 years agoMerge "jquery.makeCollapsible: Add toggleARIA option and enable for plain toggle"
jenkins-bot [Sat, 21 Sep 2019 03:06:27 +0000 (03:06 +0000)]
Merge "jquery.makeCollapsible: Add toggleARIA option and enable for plain toggle"

2 years agojquery.makeCollapsible: Add toggleARIA option and enable for plain toggle
Volker E [Fri, 20 Sep 2019 03:14:46 +0000 (20:14 -0700)]
jquery.makeCollapsible: Add toggleARIA option and enable for plain toggle

Adding `aria-expanded` attributes to `$toggle`.
That is not resolving each and every issue, but it gives at least
a valuable hint for screen readers and resolves the situation for
togglers, where the toggled content comes directly after `$toggle`.

Bug: T222904
Change-Id: Ic457bda58e56fb9ba2dce6df195e9fb48afb07f6

2 years agolocalisation: Remove PHP5-specific perf optimisation
Timo Tijhof [Sat, 21 Sep 2019 01:31:04 +0000 (02:31 +0100)]
localisation: Remove PHP5-specific perf optimisation

The `apc.cache_by_default` setting is a PHP5-era setting relating
to the part of php5-apc now known as opcache (as opposed to the
part now known as apcu).

This setting doesn't exist in PHP 7, and trying to set it doesn't
do anything useful.

Bug: T206986
Change-Id: I46a91897b2b33b5ce6505beb74d404982cb0641c

2 years agoMerge "Messages collected above the form are meant to live as boxed messages"
jenkins-bot [Fri, 20 Sep 2019 23:33:04 +0000 (23:33 +0000)]
Merge "Messages collected above the form are meant to live as boxed messages"

2 years agoMerge "Remove `inline-block` from message boxes"
jenkins-bot [Fri, 20 Sep 2019 23:18:09 +0000 (23:18 +0000)]
Merge "Remove `inline-block` from message boxes"

2 years agoMerge "Use mw.util.getUrl( null ) to get the default mw.config.get( 'wgPageName' )"
jenkins-bot [Fri, 20 Sep 2019 23:01:10 +0000 (23:01 +0000)]
Merge "Use mw.util.getUrl( null ) to get the default mw.config.get( 'wgPageName' )"

2 years agoMerge "HTMLTitleTextField: Remove incorrect check for unsubmitted GET forms"
jenkins-bot [Fri, 20 Sep 2019 22:45:24 +0000 (22:45 +0000)]
Merge "HTMLTitleTextField: Remove incorrect check for unsubmitted GET forms"

2 years agoRemove `inline-block` from message boxes
Volker E [Thu, 19 Sep 2019 20:51:58 +0000 (13:51 -0700)]
Remove `inline-block` from message boxes

Removing `inline-block` from message boxes as they're outlined as
block level elements in UI standardization work.
Back in Ibb9371eec in 2013 those were used in various contexts and
tried to resolve the back then stated need of intrinsic width by
`inline-block`. That doesn't seem to be appropriate for the general
use case any more.
If used in other contexts or on inline elements, product owners and
implementors need to act on specifically adapting them.

Bug: T233359
Change-Id: I530fda47b3d7b99f782b421abbde8957026570cd

2 years agoMerge "Do not output wikitext in maintenance script"
jenkins-bot [Fri, 20 Sep 2019 21:07:20 +0000 (21:07 +0000)]
Merge "Do not output wikitext in maintenance script"

2 years agoMerge "Gallery: Don't fire wikipage.content hook twice during init"
jenkins-bot [Fri, 20 Sep 2019 19:59:53 +0000 (19:59 +0000)]
Merge "Gallery: Don't fire wikipage.content hook twice during init"

2 years agoRemove Revision::getRevisionText from migrateArchiveText
Petr Pchelko [Thu, 19 Sep 2019 17:53:19 +0000 (10:53 -0700)]
Remove Revision::getRevisionText from migrateArchiveText

The script is used to migrate archive text from pre-1.5 schema.
It's safe it just use the `ar_text` field directly instead of going
to Revision::getRevisionText since migrating this field is the whole
proing of the script. Per execution it checks that the field exists
in the schema, the SQL query reads the field.

We don't need to do `expandBlob` either, cause we already know that
the data is not in external store, thus Revision::decompressData
is enough.

Bug: T198343
Change-Id: Ic838bdf680d73522dd508dd86056eb945535b368

2 years agoMerge "selenium: Only load 'sauce' service when needed"
jenkins-bot [Fri, 20 Sep 2019 18:53:04 +0000 (18:53 +0000)]
Merge "selenium: Only load 'sauce' service when needed"

2 years agoselenium: Only load 'sauce' service when needed
Timo Tijhof [Fri, 20 Sep 2019 17:52:20 +0000 (18:52 +0100)]
selenium: Only load 'sauce' service when needed

Also, remove the redundant unprefixed `user` and `key` options.
These would be cleaner to set through `sauceConnectOpts`
as `sauceConnectOpts { username: …, accesskey: … }`, but even
that isn't needed because wdio-sauce-service already reads these
same environment variables directly. No further config needed.

Also remove the duplication of default variables we don't have
any particular preference for yet so that enjoy improvements to
these when upgrading.

Change-Id: I0d4802f83509b0b49f775560b508d9929ae9979e

2 years agoMerge "Mark consistently with any edit summaries"
jenkins-bot [Fri, 20 Sep 2019 17:45:07 +0000 (17:45 +0000)]
Merge "Mark consistently with any edit summaries"

2 years agoDo not output wikitext in maintenance script
Umherirrender [Mon, 19 Aug 2019 16:12:32 +0000 (18:12 +0200)]
Do not output wikitext in maintenance script

Also remove print_r with a string
Always use english for maintenance scripts

Bug: T229843
Change-Id: I539a1ac1f6a201dd8ee9ce89599cc34bebfba79f

2 years agoMerge "filebackend: reduce hashing I/O in SwiftFileBackend::doStoreInternal()"
jenkins-bot [Fri, 20 Sep 2019 16:12:25 +0000 (16:12 +0000)]
Merge "filebackend: reduce hashing I/O in SwiftFileBackend::doStoreInternal()"

2 years agoMerge "tests: Prefer PHPUnit's assertSame() when comparing empty strings"
jenkins-bot [Fri, 20 Sep 2019 15:55:08 +0000 (15:55 +0000)]
Merge "tests: Prefer PHPUnit's assertSame() when comparing empty strings"

2 years agoMerge "tests: Prefer assertSame() when comparing the integer 0"
jenkins-bot [Fri, 20 Sep 2019 15:33:02 +0000 (15:33 +0000)]
Merge "tests: Prefer assertSame() when comparing the integer 0"

2 years agotests: Prefer PHPUnit's assertSame() when comparing empty strings
Thiemo Kreuz [Tue, 17 Sep 2019 14:28:35 +0000 (16:28 +0200)]
tests: Prefer PHPUnit's assertSame() when comparing empty strings

assertSame() is guaranteed to never do any magic type conversion.
This can be critical when accidentially comparing empty strings (a
value PHP considers to be "falsy") to false, 0, 0.0, null, and such.

Change-Id: I2e2685c5992cae252f629a68ffe1a049f2e5ed1b

2 years agoGallery: Don't fire wikipage.content hook twice during init
Ed Sanders [Fri, 20 Sep 2019 12:22:04 +0000 (13:22 +0100)]
Gallery: Don't fire wikipage.content hook twice during init

We know the hook has already been fired once, because we listen
to it to start the gallery.

Firing it again here can cause other listeners to fail as only
the last-fired argument is stored.

Bug: T233401
Change-Id: I32ca866964c7a1f644a3cc28d636ec1430b8ef58

2 years agoMerge "Refactor MediaWikiIntegrationTestCase::resetDB() for readability"
jenkins-bot [Fri, 20 Sep 2019 12:05:18 +0000 (12:05 +0000)]
Merge "Refactor MediaWikiIntegrationTestCase::resetDB() for readability"

2 years agoMerge "phan: Enable PhanTypeMismatchArgument issue"
jenkins-bot [Fri, 20 Sep 2019 10:38:52 +0000 (10:38 +0000)]
Merge "phan: Enable PhanTypeMismatchArgument issue"

2 years agoMerge "Fix namespace handling on Special:PagesWithProp"
jenkins-bot [Fri, 20 Sep 2019 10:32:31 +0000 (10:32 +0000)]
Merge "Fix namespace handling on Special:PagesWithProp"

2 years agoFix namespace handling on Special:PagesWithProp
Matěj Suchánek [Fri, 20 Sep 2019 09:41:58 +0000 (11:41 +0200)]
Fix namespace handling on Special:PagesWithProp

Firstly, restore the availability to query all namespaces.
There is no reason to remove this feature.

Secondly, fix code not to treat '0' as falsy. Instead, use
the request object to get an integer or null.

Bug: T50247
Change-Id: I182e25be2d694d010a1e8382a461c5c08f898581

2 years agoMerge "Use BlobStore::getBlobBatch for RevisionStore::newRevisionsFromBatch"
jenkins-bot [Fri, 20 Sep 2019 09:39:17 +0000 (09:39 +0000)]
Merge "Use BlobStore::getBlobBatch for RevisionStore::newRevisionsFromBatch"

2 years agoMerge "import: Update docs about WikiRevision requiring a Config"
jenkins-bot [Fri, 20 Sep 2019 08:19:34 +0000 (08:19 +0000)]
Merge "import: Update docs about WikiRevision requiring a Config"

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 20 Sep 2019 06:22:19 +0000 (08:22 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I66ff316a7d099f45e0cff71b7281117ea12a7db0

2 years agoMark consistently with any edit summaries
Volker E [Fri, 20 Sep 2019 01:06:48 +0000 (18:06 -0700)]
Mark consistently with any edit summaries

Marking with `.comment` to be consistent with `Linker:commentBlock`.

Change-Id: Idba91bd3d1345aa18da6745ad86f1bac2628dae7

2 years agoMerge "Log entries can be rendered with parentheses in HTML"
jenkins-bot [Fri, 20 Sep 2019 00:22:16 +0000 (00:22 +0000)]
Merge "Log entries can be rendered with parentheses in HTML"

2 years agoMessages collected above the form are meant to live as boxed messages
Volker E [Thu, 19 Sep 2019 20:36:48 +0000 (13:36 -0700)]
Messages collected above the form are meant to live as boxed messages

Also removing HTMLForm/VForm `.error` and `.warning` classes from

Bug: T233362
Change-Id: I4f8d8f228ab07253a7df24470791c26e39bc311a

2 years agoMerge "title: Improve docs of get*URL()"
jenkins-bot [Thu, 19 Sep 2019 20:26:45 +0000 (20:26 +0000)]
Merge "title: Improve docs of get*URL()"