lhc/web/wiklou.git
7 years agoSkinTemplateTest typofix
Chad Horohoe [Thu, 11 Aug 2016 20:54:05 +0000 (13:54 -0700)]
SkinTemplateTest typofix

There's no "t" in "make"

Change-Id: I41dc25162262bddec94f3af35db86a246ccd7499

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 11 Aug 2016 20:00:59 +0000 (22:00 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I6bf5f6c5b9030b6af77ff7ab879baaba3e2d5832

7 years agoMerge "Rename 'authmanager' log channel to 'authevents'"
jenkins-bot [Thu, 11 Aug 2016 16:44:31 +0000 (16:44 +0000)]
Merge "Rename 'authmanager' log channel to 'authevents'"

7 years agoThis patch adds Localisation to the links, and changes wording around.
zppix1 [Sun, 31 Jul 2016 20:51:47 +0000 (15:51 -0500)]
This patch adds Localisation to the links, and changes wording around.

Change-Id: I3c34e7491da81ac034d0b7b3f0517f1a8153b249

7 years agoMerge "resourceloader: Move queue formatting out of OutputPage"
jenkins-bot [Thu, 11 Aug 2016 14:09:58 +0000 (14:09 +0000)]
Merge "resourceloader: Move queue formatting out of OutputPage"

7 years agoMerge "Fix link to Help:Contents in UPGRADE file"
jenkins-bot [Thu, 11 Aug 2016 09:10:44 +0000 (09:10 +0000)]
Merge "Fix link to Help:Contents in UPGRADE file"

7 years agoMerge "Add SpecialPage::getTitleValueFor()"
jenkins-bot [Thu, 11 Aug 2016 08:32:35 +0000 (08:32 +0000)]
Merge "Add SpecialPage::getTitleValueFor()"

7 years agoMake Database disconnect and error suppression more robust
Aaron Schulz [Wed, 10 Aug 2016 02:15:05 +0000 (19:15 -0700)]
Make Database disconnect and error suppression more robust

* Disallow $ignoreErrors in query() on deadlocks, since that would otherwise
  silently rollback all changes from any other callers.
* Move recoverability checks for disconnects to canRecoverFromDisconnect().
* The first write of a DBO_TRX transaction is now considered recoverable.
* Run onTransactionResolution() callbacks on disconnect/deadlock rollback.
  Some DeferrableUpdate need this to know to abort.
* Disallow $ignoreErrors on disconnects considered unrecoverable. This
  makes it so that query() callers cannot cause writes from other callers
  to be silently lost, which is hard to reason about.
* Moved ping() logic to simple reconnect() method and ping() simply do
  a dummy SELECT, which triggeres reconnection if safe. Previously,
  ping() might cause subtle partial transaction loss.
* Remove ping() from strencode(), which would cause partial transaction
  loss where it actually reached.
* Remove mysqlPing() per https://bugs.php.net/bug.php?id=52561.

Bug: T142079
Change-Id: Ifb7f772ae849d67c0d92240a115c3f392e252937

7 years agoUpgrade unmatched explicit commit() of DBO_TRX to an exception
Aaron Schulz [Thu, 11 Aug 2016 03:16:12 +0000 (20:16 -0700)]
Upgrade unmatched explicit commit() of DBO_TRX to an exception

Follows-up f8d5075656 and 820f5d6ce5.

This mostly for sanity, as normally the exception would
happen on begin().

Change-Id: I2c2fb20ed5184d3c00d3050e929a11e3e37f50f4

7 years agoMerge "Fix comment about how to use AutoloadGenerator"
jenkins-bot [Thu, 11 Aug 2016 07:09:03 +0000 (07:09 +0000)]
Merge "Fix comment about how to use AutoloadGenerator"

7 years agoFix link to Help:Contents in UPGRADE file
Glaisher [Thu, 11 Aug 2016 06:37:42 +0000 (06:37 +0000)]
Fix link to Help:Contents in UPGRADE file

Change-Id: I4c8c44f8c75200f33985f2e769e88f171162cc83

7 years agoMerge "Replace extract() with explicit variable definitions in DjVuImage"
jenkins-bot [Thu, 11 Aug 2016 05:04:51 +0000 (05:04 +0000)]
Merge "Replace extract() with explicit variable definitions in DjVuImage"

7 years agoReplace extract() with explicit variable definitions in DjVuImage
Ricordisamoa [Wed, 17 Feb 2016 21:39:22 +0000 (22:39 +0100)]
Replace extract() with explicit variable definitions in DjVuImage

Bug: T28496
Change-Id: I09e012674e4d6c141912db6ef53dc51b2fcf0a66

7 years agoRemove checks formerly for MySQL server version
Kevin Israel [Mon, 23 May 2016 11:30:52 +0000 (07:30 -0400)]
Remove checks formerly for MySQL server version

Removed these checks instead of fixing them, for the stated reasons:

* initEditCount.php: "instanceof DatabaseMysql" is not a correct way to
  check if the database server is MySQL/MariaDB, because DatabaseMysql is
  now a subclass of DatabaseMysqlBase, only used as a wrapper around the
  deprecated mysql PHP extension (not the newer mysqli extension). The
  check was intended for pre-4.1 versions of MySQL, which do not support
  subqueries.

  The effect of this change is to use single-query mode whenever there is
  only one configured database server, even when using the mysqli PHP
  extension, which would have been the original intent.

* fixBug20757.php: If the database server is not MySQL/MariaDB, the
  $lowerLeft variable would remain undefined. The script was only intended
  for use with MySQL, so the check was only necessary in order to support
  pre-4.1 versions of MySQL, which require different SQL.

Follows-up b74f88967bf090af.

Change-Id: I7f32aed4473e5ea39dc40449ddc0af5f9a10df16

7 years agoMerge "Introduce UploadStashFile hook, improve API handling of stash errors"
jenkins-bot [Thu, 11 Aug 2016 04:31:27 +0000 (04:31 +0000)]
Merge "Introduce UploadStashFile hook, improve API handling of stash errors"

7 years agoAdd SpecialPage::getTitleValueFor()
Kunal Mehta [Tue, 9 Aug 2016 22:27:29 +0000 (15:27 -0700)]
Add SpecialPage::getTitleValueFor()

One of the most frequent instances of Title being used where TitleValue
could be used instead is for special pages, since there is no
convenience function that returns a TitleValue object. Hopefully this
will make it easier.

Because TitleValue is stricer about validation, we need to ensure that
$subpage is in dbkey form.

Change-Id: I50457620e25dfe03eb44d6fda5aabebcbf314863

7 years agoMerge "Add rc_name_type_patrolled_timestamp index"
jenkins-bot [Thu, 11 Aug 2016 01:58:49 +0000 (01:58 +0000)]
Merge "Add rc_name_type_patrolled_timestamp index"

7 years agoRequire POST for action=purge in PurgeAction
Aaron Schulz [Thu, 12 May 2016 19:52:00 +0000 (12:52 -0700)]
Require POST for action=purge in PurgeAction

For the index.php end point, POSTs do not need a token.

This avoids cross-DC writes in active/active DC setups and
avoids DB writes that can be caused by just accidentally
following a link.

There are no links to action=purge by default in MediaWiki.
User scripts that create purge links will continue to work.
However these links will now point to a confirmation form.
To preserve the immediate-purge-redirect effect, these
scripts should be updated to use the API instead.

Bug: T135170
Change-Id: I5749ff470d99c5e3f22e05ff6856394cc05a0f48

7 years agoMerge "StashEdit: Refactor and simplify edit.stash.js"
jenkins-bot [Thu, 11 Aug 2016 01:23:09 +0000 (01:23 +0000)]
Merge "StashEdit: Refactor and simplify edit.stash.js"

7 years agoStashEdit: Refactor and simplify edit.stash.js
Timo Tijhof [Mon, 8 Aug 2016 23:03:39 +0000 (16:03 -0700)]
StashEdit: Refactor and simplify edit.stash.js

* Reduce call sites for stashEdit() to only inside checkStash().

* Update onFormLoaded() to not call stashEdit() directly but instead
  call checkStash(). This avoids hardcoding the priority and
  simplifies code by ensuring isTextChanged() and isSummaryChanged()
  are always checked before stashEdit() is called.

* Move texthash and priority handling to stashEdit().

* Don't clear lastTextHash if text hasn't changed.

* Remove check for 'origSummary' in onTextFocus. Have stash rate
  always be 3s for the textarea, and always 1s for the summary.

Change-Id: I3f049df6ee2e1c218e8b3c1c397ff0bc50e58c8e

7 years agoMerge "LoadBalancer object injection cleanups"
jenkins-bot [Thu, 11 Aug 2016 01:11:07 +0000 (01:11 +0000)]
Merge "LoadBalancer object injection cleanups"

7 years agoMerge "Optimize summary-based extension edit stash caches"
jenkins-bot [Thu, 11 Aug 2016 01:03:07 +0000 (01:03 +0000)]
Merge "Optimize summary-based extension edit stash caches"

7 years agoMerge "Fix comment of get/setLinkRenderer in doxygen"
jenkins-bot [Thu, 11 Aug 2016 00:59:38 +0000 (00:59 +0000)]
Merge "Fix comment of get/setLinkRenderer in doxygen"

7 years agoFix comment about how to use AutoloadGenerator
Reedy [Thu, 11 Aug 2016 00:51:01 +0000 (01:51 +0100)]
Fix comment about how to use AutoloadGenerator

Change-Id: If15e9396b640536896406009233e91c0b5e2bb0f

7 years agoOptimize summary-based extension edit stash caches
Aaron Schulz [Sat, 30 Jul 2016 06:42:05 +0000 (23:42 -0700)]
Optimize summary-based extension edit stash caches

* Send stash requests when the summary changes, so that things like
  AbuseFilter caching have a higher hit rate.
* Make the backend API skip parsing if a fresh cache is already present.
  This makes requests for summary-only changes much faster and more likely
  to finish in time.
* Avoid sending the full text if only the summary changed since the
  last successful stash. This works via an optional stashedtexthash
  parameter to the API.
* Also always apply the lock in parseAndStash(), even for VE.

Change-Id: I9bfd74cf05411853b675c6f54ff5d8934bcfc54c

7 years agoMake PurgeChangedFiles actually purge old versions too
Aaron Schulz [Wed, 10 Aug 2016 23:29:10 +0000 (16:29 -0700)]
Make PurgeChangedFiles actually purge old versions too

Change-Id: I7aa746535ceae7d19c492145c3254d55511a8576

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 10 Aug 2016 20:03:32 +0000 (22:03 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ie52a98e5ed6094bd1e6be1a8c0043a223c95fcce

7 years agoMerge "registration: Fix adding $formerGlobals in conversion script"
jenkins-bot [Wed, 10 Aug 2016 17:17:35 +0000 (17:17 +0000)]
Merge "registration: Fix adding $formerGlobals in conversion script"

7 years agoMerge "mw.loader: Clean up unit tests by using newer QUnit syntax"
jenkins-bot [Wed, 10 Aug 2016 15:29:36 +0000 (15:29 +0000)]
Merge "mw.loader: Clean up unit tests by using newer QUnit syntax"

7 years agoMerge "mw.loader: Add 'require' as Promise value for using()"
jenkins-bot [Wed, 10 Aug 2016 15:25:13 +0000 (15:25 +0000)]
Merge "mw.loader: Add 'require' as Promise value for using()"

7 years agoMerge "Beef up and generalize IDBAccessObject constants a bit"
jenkins-bot [Wed, 10 Aug 2016 09:10:52 +0000 (09:10 +0000)]
Merge "Beef up and generalize IDBAccessObject constants a bit"

7 years agoMerge "Unbreak "localDBMaster" mode in MySqlLockManager by using a separate connection"
jenkins-bot [Wed, 10 Aug 2016 09:06:46 +0000 (09:06 +0000)]
Merge "Unbreak "localDBMaster" mode in MySqlLockManager by using a separate connection"

7 years agoMerge "Upgrade premature implicit transaction commits to exceptions"
jenkins-bot [Wed, 10 Aug 2016 02:57:52 +0000 (02:57 +0000)]
Merge "Upgrade premature implicit transaction commits to exceptions"

7 years agoRename 'authmanager' log channel to 'authevents'
Gergő Tisza [Wed, 10 Aug 2016 01:32:28 +0000 (01:32 +0000)]
Rename 'authmanager' log channel to 'authevents'

Also, move some events which did not belong there to the
'authentication' channel.

Change-Id: I4d7564343318899fc498ed2bd2d5260041ee22cc

7 years agoMerge "Remove $wgDisableAuthManager"
jenkins-bot [Wed, 10 Aug 2016 00:03:25 +0000 (00:03 +0000)]
Merge "Remove $wgDisableAuthManager"

7 years agoMerge "Clean up some IDatabase comments"
jenkins-bot [Tue, 9 Aug 2016 23:57:44 +0000 (23:57 +0000)]
Merge "Clean up some IDatabase comments"

7 years agoClean up some IDatabase comments
Aaron Schulz [Tue, 9 Aug 2016 23:45:37 +0000 (16:45 -0700)]
Clean up some IDatabase comments

Change-Id: Ia4b344a412e78185b6b2fe584540a358c35651b8

7 years agoMerge "SiteStats: Fix some phpdoc"
jenkins-bot [Tue, 9 Aug 2016 23:45:06 +0000 (23:45 +0000)]
Merge "SiteStats: Fix some phpdoc"

7 years agoMerge "SpecialEditWatchlist: Use LinkRenderer instead of Linker::link()"
jenkins-bot [Tue, 9 Aug 2016 23:41:59 +0000 (23:41 +0000)]
Merge "SpecialEditWatchlist: Use LinkRenderer instead of Linker::link()"

7 years agoRemove $wgDisableAuthManager
Gergő Tisza [Fri, 1 Apr 2016 16:49:26 +0000 (19:49 +0300)]
Remove $wgDisableAuthManager

Change-Id: I2b2c9693a275fcc026916bd97f303e7a5c8df341

7 years agoSiteStats: Fix some phpdoc
Kunal Mehta [Tue, 9 Aug 2016 22:09:45 +0000 (15:09 -0700)]
SiteStats: Fix some phpdoc

...and don't pass false as $conds, use an empty array.

Change-Id: I58127f0e7c4edad9345b924a019d64e5d2d6ddd9

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Tue, 9 Aug 2016 19:59:13 +0000 (21:59 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ib4d6844bed0df62a2ee97e7b7f46dfc724defdfc

7 years agoSpecialEditWatchlist: Use LinkRenderer instead of Linker::link()
Kunal Mehta [Thu, 4 Aug 2016 23:04:06 +0000 (16:04 -0700)]
SpecialEditWatchlist: Use LinkRenderer instead of Linker::link()

Change-Id: Ib75078f14005940b5c625932d1bbb8c17299c448

7 years agoMerge "Updating $tailoringFirstLetters for Macedonian Per https://ssl.icu-project...
jenkins-bot [Tue, 9 Aug 2016 17:02:42 +0000 (17:02 +0000)]
Merge "Updating $tailoringFirstLetters for Macedonian Per https://ssl.icu-project.org/trac/browser/icu/trunk/source/data/coll/mk.txt"

7 years agoIntroduce UploadStashFile hook, improve API handling of stash errors
Bartosz Dziewoński [Wed, 3 Aug 2016 00:13:01 +0000 (02:13 +0200)]
Introduce UploadStashFile hook, improve API handling of stash errors

UploadBase:
* Introduce a new method, tryStashFile(), as a replacement for the
  now-soft-deprecated stashFile(). The method runs the new hook and
  returns a Status object, with an error (if the hook returned an
  error) or a value (if it didn't).
* Introduce a new hook, UploadStashFile, allowing extensions to
  prevent a file from being stashed. Note that code in extensions
  which has not been updated for MediaWiki 1.28 may still call
  stashFile() directly, and therefore not call this hook. For
  important checks (not just for UI), extension authors should use
  UploadVerifyFile or UploadVerifyUpload hooks.
* Extract common code of tryStashFile() and stashFile() to
  a new protected method doStashFile().

SpecialUpload:
* Use tryStashFile() when stashing a file after a warning or
  "recoverable error" was encountered.

ApiUpload:
* Refactor stashing code so that error handling only happens in one
  place, not four different ones. Use Status objects rather than
  exception throwing/catching for control flow.
* Simplify the error messages slightly (error codes are unchanged).
  Produce better ones by always using handleStashException().
  'stashfailed' is now always at root (not nested inside 'warnings'),
  behaving the same as 'filekey' does on success.
* Use tryStashFile() when stashing. Handle errors so as to allow
  custom API results passed via ApiMessage to be preserved.

Some API result changes for different requests are shown below.

  api.php?action=upload&format=json&filename=good.png&file=...&stash=1

    Before:
      {
        "error": {
          "code": "stashfilestorage",
          "info": "Could not store upload in the stash: Stashing temporary file failed: UploadStashFileException Error storing file in '/tmp/phpB32SRT': Could not create directory \"mwstore://local-backend/local-temp/3/3a\".",
          "*": "See http://localhost:3080/w/api.php for API usage"
        }
      }

    After:
      {
        "error": {
          "code": "stashfilestorage",
          "info": "Could not store upload in the stash: Error storing file in '/tmp/phpB32SRT': Could not create directory \"mwstore://local-backend/local-temp/3/3a\".",
          "*": "See http://localhost:3080/w/api.php for API usage"
        }
      }

  api.php?action=upload&format=json&filename=[bad].png&file=...

    Before:
      {
        "upload": {
          "result": "Warning",
          "warnings": {
            "badfilename": "-bad-.png",
            "stashfailed": "Stashing temporary file failed: UploadStashFileException Error storing file in '/tmp/phpB32SRT': Could not create directory \"mwstore://local-backend/local-temp/3/3a\"."
          }
        }
      }

    After:
      {
        "upload": {
          "result": "Warning",
          "stashfailed": "Could not store upload in the stash: Error storing file in '/tmp/phpB32SRT': Could not create directory \"mwstore://local-backend/local-temp/3/3a\"."
          "warnings": {
            "badfilename": "-bad-.png",
          }
        }
      }

Bug: T140521
Change-Id: I2f574b355cd33b2e9fa7ff8e1793503b257cce65

7 years agoMerge "SpecialTags: Use LinkRenderer instead of Linker::link()"
jenkins-bot [Tue, 9 Aug 2016 15:36:28 +0000 (15:36 +0000)]
Merge "SpecialTags: Use LinkRenderer instead of Linker::link()"

7 years agoMerge "SpecialMostlinkedCategories: Use LinkRenderer instead of Linker::link()"
jenkins-bot [Tue, 9 Aug 2016 15:31:13 +0000 (15:31 +0000)]
Merge "SpecialMostlinkedCategories: Use LinkRenderer instead of Linker::link()"

7 years agoMerge "SpecialChangeCredentials: Use LinkRenderer instead of Linker::link()"
jenkins-bot [Tue, 9 Aug 2016 15:29:29 +0000 (15:29 +0000)]
Merge "SpecialChangeCredentials: Use LinkRenderer instead of Linker::link()"

7 years agoFix comment of get/setLinkRenderer in doxygen
Florian [Tue, 9 Aug 2016 15:20:47 +0000 (17:20 +0200)]
Fix comment of get/setLinkRenderer in doxygen

Doxygen requires the full qualified name of the class in a comment
or in the @aram/@return annotation, otherwise the class isn't linked
in the resulting output[1]. This commit changes the LinkRenderer
annotations in SpecialPage and Parser to \MediaWiki\Linker\LinkRenderer.

[1] https://doc.wikimedia.org/mediawiki-core/master/php/classSpecialPage.html#a3560214f63fc2f20c63b4025db5cd81d

Change-Id: I74cedcd764a6053cc5a0c6d2eedbedb72651f57c

7 years agoMerge "SpecialUploadStash: Use LinkRenderer instead of Linker::link()"
jenkins-bot [Tue, 9 Aug 2016 15:22:36 +0000 (15:22 +0000)]
Merge "SpecialUploadStash: Use LinkRenderer instead of Linker::link()"

7 years agoMerge "SpecialShortPages: Use LinkRenderer instead of Linker::link()"
jenkins-bot [Tue, 9 Aug 2016 15:18:45 +0000 (15:18 +0000)]
Merge "SpecialShortPages: Use LinkRenderer instead of Linker::link()"

7 years agoResources.php: mark "mediawiki.api.upload" module as 'targets' => [ 'desktop', 'mobile' ]
Edward Chernenko [Tue, 9 Aug 2016 08:34:17 +0000 (11:34 +0300)]
Resources.php: mark "mediawiki.api.upload" module as 'targets' => [ 'desktop', 'mobile' ]

This module doesn't call anything desktop-specific.
There is no reason to deny this module to scripts which run on both desktop and mobile.

Change-Id: Ia6b778ca8a188688e2c0e813332aee03d3b5ac52

7 years agoBeef up and generalize IDBAccessObject constants a bit
Aaron Schulz [Mon, 1 Aug 2016 03:44:42 +0000 (20:44 -0700)]
Beef up and generalize IDBAccessObject constants a bit

Change-Id: Id8df6131df57b6a3e0aae90f4431ce0a467ec590

7 years agoMerge "jquery.tablesorter: Handle more than single characters in 'tableSorterCollation'"
jenkins-bot [Tue, 9 Aug 2016 00:06:07 +0000 (00:06 +0000)]
Merge "jquery.tablesorter: Handle more than single characters in 'tableSorterCollation'"

7 years agoLoadBalancer object injection cleanups
Aaron Schulz [Tue, 2 Aug 2016 03:00:43 +0000 (20:00 -0700)]
LoadBalancer object injection cleanups

Follows-up 5f921702d2.

* Move cache object creation up to LBFactory.
* Refactored some code duplication in LBFactorySimple.

Change-Id: I0a5820f5155fc545a8bf0cc4e7c27f878388682b

7 years agojquery.tablesorter: Handle more than single characters in 'tableSorterCollation'
Bartosz Dziewoński [Fri, 5 Aug 2016 18:01:17 +0000 (20:01 +0200)]
jquery.tablesorter: Handle more than single characters in 'tableSorterCollation'

The code that uses this will already work fine, we only need to change
how the regex is built.

Bug: T140240
Change-Id: I014d9b13815d8ae085a6ed7c6df2d62337bb46f7

7 years agoUse MediaWikiServices in restInPeace() for load balancer factory
Aaron Schulz [Mon, 8 Aug 2016 21:55:56 +0000 (14:55 -0700)]
Use MediaWikiServices in restInPeace() for load balancer factory

Change-Id: Icc12100bd3409900c848c72a31417a8c25ae1021

7 years agoMerge "Mention UploadBase::stashFile() "checked" exceptions in docs"
jenkins-bot [Mon, 8 Aug 2016 21:04:40 +0000 (21:04 +0000)]
Merge "Mention UploadBase::stashFile() "checked" exceptions in docs"

7 years agoUpdating $tailoringFirstLetters for Macedonian
Kaldari [Mon, 8 Aug 2016 20:39:13 +0000 (13:39 -0700)]
Updating $tailoringFirstLetters for Macedonian
Per https://ssl.icu-project.org/trac/browser/icu/trunk/source/data/coll/mk.txt

Bug: T26953
Change-Id: I45938402923a109cfc80f59555af5cede584fc3b

7 years agoMerge "Add missing addQuotes() call to masterPosWait()"
jenkins-bot [Mon, 8 Aug 2016 20:14:53 +0000 (20:14 +0000)]
Merge "Add missing addQuotes() call to masterPosWait()"

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 8 Aug 2016 20:02:55 +0000 (22:02 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I5b592794dcf6c4ee5c5b2c81885b0c1e816a0fa1

7 years agoAdd missing addQuotes() call to masterPosWait()
Aaron Schulz [Mon, 8 Aug 2016 19:36:18 +0000 (12:36 -0700)]
Add missing addQuotes() call to masterPosWait()

Change-Id: Ic7f35920fe10d99b63fdff23dc6e3f7cd4c7ca8b

7 years agoresourceloader: Move queue formatting out of OutputPage
Timo Tijhof [Fri, 15 Jul 2016 14:13:09 +0000 (15:13 +0100)]
resourceloader: Move queue formatting out of OutputPage

HTML formatting of the queue was distributed over several OutputPage methods.
Each method demanding a snippet of HTML by calling makeResourceLoaderLink()
with a limited amount of information. As such, makeResourceLoaderLink() was
unable to provide the client with the proper state information.

Centralising it also allows it to better reduce duplication in HTML output
and maintain a more accurate state.

Problems fixed by centralising:

1. The 'user' module is special (due to per-user 'version' and 'user' params).
   It is manually requested via script-src. To avoid a separate (and wrong)
   request from something that requires it, we set state=loading directly.
   However, because the module is in the bottom, the old HTML formatter could
   only put state=loading in the bottom also. This sometimes caused a wrong
   request to be fired for modules=user if something in the top queue
   triggered a requirement for it.

2. Since a464d1d4 (T87871) we track states of page-style modules, with purpose
   of allowing dependencies on style modules without risking duplicate loading
   on pages where the styles are loaded already. This didn't work, because the
   state information about page-style modules is output near the stylesheet,
   which is after the script tag with mw.loader.load(). That runs first, and
   mw.loader would still make a duplicate request before it learns the state.

Changes:

* Document reasons for style/script tag order in getHeadHtml (per 09537e83).

* Pass $type from getModuleStyles() to getAllowedModules(). This wasn't needed
  before since a duplicate check in makeResourceLoaderLink() verified the
  origin a second time.

* Declare explicit position 'top' on 'user.options' and 'user.tokens' module.
  Previously, OutputPage hardcoded them in the top. The new formatter doesn't.

* Remove getHeadScripts().
* Remove getInlineHeadScripts().
* Remove getExternalHeadScripts().
* Remove buildCssLinks().
* Remove getScriptsForBottomQueue().

* Change where Skin::setupSkinUserCss() is called. This methods lets the skin
  add modules to the queue. Previously it was called from buildCssLinks(),
  via headElement(), via prepareQuickTemplate(), via OutputPage::output().
  It's now in OutputPage::output() directly (slightly earlier). This is needed
  because prepareQuickTemplate() calls bottomScripts() before headElement().
  And bottomScript() would lazy-initialise the queue and lock it before
  setupSkinUserCss() is called from headElement().
  This makes execution order more predictable instead of being dependent on
  the arbitrary order of data extraction in prepareQuickTemplate (which varies
  from one skin to another).

* Compute isUserModulePreview() and isKnownEmpty() for the 'user' module early
  on so. This avoids wrongful loading and fixes problem 1.

Effective changes in output:

* mw.loader.state() is now before mw.loader.load(). This fixes problem 2.
* mw.loader.state() now sets 'user.options' and 'user.tokens' to "loading".
* mw.loader.state() now sets 'user' (as "loading" or "ready"). Fixes problem 1.

* The <script async src> tag for 'startup' changed position (slightly).
  Previously it was after all inline scripts and stylesheets. It's still after
  all inline scripts and after most stylesheets, but before any user styles.
  Since the queue is now formatted outside OutputPage, it can't inject the
  meta-ResourceLoaderDynamicStyles tag and user-stylesheet hack in the middle
  of existing output. This shouldn't have any noticable impact.

Bug: T87871
Change-Id: I605b8cd1e1fc009b4662a0edbc54d09dd65ee1df

7 years agoMerge "SpecialNewFiles: Restore the 'newimagestext' message"
jenkins-bot [Mon, 8 Aug 2016 18:08:26 +0000 (18:08 +0000)]
Merge "SpecialNewFiles: Restore the 'newimagestext' message"

7 years agoSpecialNewFiles: Restore the 'newimagestext' message
Bartosz Dziewoński [Mon, 8 Aug 2016 17:54:03 +0000 (19:54 +0200)]
SpecialNewFiles: Restore the 'newimagestext' message

Follow-up to c5ed2698579a085747ef290c9e6e3b8ba3f8960b.

Bug: T142191
Change-Id: If3d0c6d80c97494a6545db67a7adbd7c7ca05cb1

7 years agoMerge "SpecialUpload: Use LinkRenderer instead of Linker::link()"
jenkins-bot [Mon, 8 Aug 2016 17:56:25 +0000 (17:56 +0000)]
Merge "SpecialUpload: Use LinkRenderer instead of Linker::link()"

7 years agoSpecialUpload: Use LinkRenderer instead of Linker::link()
Kunal Mehta [Thu, 4 Aug 2016 22:53:02 +0000 (15:53 -0700)]
SpecialUpload: Use LinkRenderer instead of Linker::link()

Fixed a typo too!

Change-Id: I0b58c2a78c2ae1de850f8e00a549dd29b8cedba2

7 years agoMerge "Adding a bunch of hooks from wikiHow into DifferenceEngine, 2nd try"
jenkins-bot [Mon, 8 Aug 2016 16:30:59 +0000 (16:30 +0000)]
Merge "Adding a bunch of hooks from wikiHow into DifferenceEngine, 2nd try"

7 years agoregistration: Fix adding $formerGlobals in conversion script
Kunal Mehta [Mon, 8 Aug 2016 09:56:39 +0000 (02:56 -0700)]
registration: Fix adding $formerGlobals in conversion script

Using + for two arrays does not work if they are using numerical
indexes.

Bug: T142344
Change-Id: I49541bd344fa81d20c9b4cf61b968b58137ab140

7 years agoMerge "Fix display of numeric tag names on Special:Tags"
jenkins-bot [Sun, 7 Aug 2016 21:11:35 +0000 (21:11 +0000)]
Merge "Fix display of numeric tag names on Special:Tags"

7 years agoMerge "registration: Add hint about UnitTestsList hook in conversion script"
jenkins-bot [Sun, 7 Aug 2016 20:55:05 +0000 (20:55 +0000)]
Merge "registration: Add hint about UnitTestsList hook in conversion script"

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sun, 7 Aug 2016 20:06:56 +0000 (22:06 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ia20da2a7d3a9b9b0f7eee2620b85252cfff2126f

7 years agoUse different message when (un)watching a page in talk namespace
Glaisher [Sat, 30 Jul 2016 10:05:36 +0000 (15:05 +0500)]
Use different message when (un)watching a page in talk namespace

addedwatchtext and removedwatchtext uses the phrase "$1 and its discussion page".
As this is inaccurate on talk namespace pages, two new messages, addedwatchtext-talk
and removedwatchtext-talk, have been introduced for use in talk namespace pages.

Bug: T87856
Change-Id: Iafd86402d3a2a65ce2be007c87c981ac08f44e67

7 years agoClean up array() syntax in docs, part II
Amir Sarabadani [Sun, 7 Aug 2016 10:27:38 +0000 (14:57 +0430)]
Clean up array() syntax in docs, part II

Change-Id: I226ce6bcb5bbf6ed3802042dd2790f85617833e1

7 years agoSpecialTags: Use LinkRenderer instead of Linker::link()
Kunal Mehta [Sun, 7 Aug 2016 03:41:13 +0000 (20:41 -0700)]
SpecialTags: Use LinkRenderer instead of Linker::link()

Change-Id: I2b179e9d90e79f46cca5c6698847caadeadc1444

7 years agoregistration: Add hint about UnitTestsList hook in conversion script
Kunal Mehta [Sun, 7 Aug 2016 09:27:09 +0000 (02:27 -0700)]
registration: Add hint about UnitTestsList hook in conversion script

Change-Id: Ia161c2e10943e75c98ee8e0d2341bc2c9a418faf

7 years agoFix display of numeric tag names on Special:Tags
This, that and the other [Sun, 7 Aug 2016 05:14:16 +0000 (15:14 +1000)]
Fix display of numeric tag names on Special:Tags

All tag names that were numbers (e.g. "123456") showed up as "0".

Change-Id: I8da326fa4dfa7e6556fb508c5e4b1f1573d1369b

7 years agoMerge "Balancer: pass configuration array to flatten instead of individual booleans"
jenkins-bot [Sun, 7 Aug 2016 04:07:26 +0000 (04:07 +0000)]
Merge "Balancer: pass configuration array to flatten instead of individual booleans"

7 years agoSpecialMostlinkedCategories: Use LinkRenderer instead of Linker::link()
Kunal Mehta [Sun, 7 Aug 2016 03:37:21 +0000 (20:37 -0700)]
SpecialMostlinkedCategories: Use LinkRenderer instead of Linker::link()

Change-Id: Ib2f08246b173cf1d39e33d2e07490463bbab1bf5

7 years agoSpecialChangeCredentials: Use LinkRenderer instead of Linker::link()
Kunal Mehta [Sun, 7 Aug 2016 03:36:22 +0000 (20:36 -0700)]
SpecialChangeCredentials: Use LinkRenderer instead of Linker::link()

Change-Id: I90d42f9b5106b4bc9876b85ccd3224b1a91f4885

7 years agoSpecialUploadStash: Use LinkRenderer instead of Linker::link()
Kunal Mehta [Sun, 7 Aug 2016 03:34:28 +0000 (20:34 -0700)]
SpecialUploadStash: Use LinkRenderer instead of Linker::link()

Change-Id: I8c5b05093bc2b62c58a109c28e48530e39e945d2

7 years agoSpecialShortPages: Use LinkRenderer instead of Linker::link()
Kunal Mehta [Sun, 7 Aug 2016 03:32:08 +0000 (20:32 -0700)]
SpecialShortPages: Use LinkRenderer instead of Linker::link()

Change-Id: I1ed13e5d056e553a2363f9a3036dc63aefaf851a

7 years agoMerge "Revert "API: Remove deprecated response values from action=login""
jenkins-bot [Sun, 7 Aug 2016 02:43:45 +0000 (02:43 +0000)]
Merge "Revert "API: Remove deprecated response values from action=login""

7 years agoMerge "Don't force loading of groups and options on User::loadFromUserObject"
jenkins-bot [Sun, 7 Aug 2016 01:57:51 +0000 (01:57 +0000)]
Merge "Don't force loading of groups and options on User::loadFromUserObject"

7 years agoDon't force loading of groups and options on User::loadFromUserObject
daniel [Sat, 6 Aug 2016 16:44:08 +0000 (18:44 +0200)]
Don't force loading of groups and options on User::loadFromUserObject

When copying state from one User object to another, don't force
the source object to be initialized. The target object can initialize
groups and options on demand as usual.

Among other things, this helps to avoid some cases of recursive calls
to User::load(), see I6d1b9fe0789b4.

Bug: T142295
Bug: T137051
Change-Id: Ib369cf5b00628550591c2ee5dcb195db7c59a59c

7 years agoMerge "HtmlArmor: Pass ENT_QUOTES to htmlspecialchars()"
jenkins-bot [Sat, 6 Aug 2016 23:18:16 +0000 (23:18 +0000)]
Merge "HtmlArmor: Pass ENT_QUOTES to htmlspecialchars()"

7 years agoMove style for #wikiPreview to mediawiki.action.edit.styles.css
Fomafix [Sat, 6 Aug 2016 22:49:05 +0000 (22:49 +0000)]
Move style for #wikiPreview to mediawiki.action.edit.styles.css

The style module 'mediawiki.action.edit.styles' gets loaded in EditPage.php.

Bug: T89981
Change-Id: Ie691df4e926be8f094e4117c836334d01d935868

7 years agoMerge "Adding release notes about the addition of numeric sorting support"
jenkins-bot [Sat, 6 Aug 2016 22:35:56 +0000 (22:35 +0000)]
Merge "Adding release notes about the addition of numeric sorting support"

7 years agoAdding release notes about the addition of numeric sorting support
Kaldari [Thu, 4 Aug 2016 20:35:56 +0000 (13:35 -0700)]
Adding release notes about the addition of numeric sorting support

Bug: T8948
Change-Id: I371c83f21927bd2903c7a87059b088e788702b6b

7 years agoHtmlArmor: Pass ENT_QUOTES to htmlspecialchars()
Bartosz Dziewoński [Sat, 6 Aug 2016 22:19:15 +0000 (00:19 +0200)]
HtmlArmor: Pass ENT_QUOTES to htmlspecialchars()

Change-Id: I0f025d938bd7def8a29788e3c02009a447853275

7 years agoMerge "Move Special:Upload styling out of mediawiki.special.styles"
jenkins-bot [Sat, 6 Aug 2016 22:15:46 +0000 (22:15 +0000)]
Merge "Move Special:Upload styling out of mediawiki.special.styles"

7 years agoMerge "Move CSS for patrol from mediawiki.legacy to new module mediawiki.page.patrol"
jenkins-bot [Sat, 6 Aug 2016 22:08:25 +0000 (22:08 +0000)]
Merge "Move CSS for patrol from mediawiki.legacy to new module mediawiki.page.patrol"

7 years agoBalancer: pass configuration array to flatten instead of individual booleans
C. Scott Ananian [Thu, 4 Aug 2016 19:35:59 +0000 (15:35 -0400)]
Balancer: pass configuration array to flatten instead of individual booleans

This refactoring makes it easier to add additional options later without
having to pass them manually through the call chain.

Change-Id: I46814f17d1b338b971ab57f63c2ec75d4a6b45d5

7 years agoMerge "Fix @covers tag"
jenkins-bot [Sat, 6 Aug 2016 14:49:50 +0000 (14:49 +0000)]
Merge "Fix @covers tag"

7 years agoMove CSS for patrol from mediawiki.legacy to new module mediawiki.page.patrol
Fomafix [Sat, 6 Aug 2016 13:46:47 +0000 (13:46 +0000)]
Move CSS for patrol from mediawiki.legacy to new module mediawiki.page.patrol

Also change the selector from
div.patrollink
to
.patrollink

Bug: T89981
Change-Id: Ib79d17fab61b1a7b940b2acff6d19a58a3fe0bc9

7 years agoMerge "Include AuthManager API endpoints in authmanager channel"
jenkins-bot [Sat, 6 Aug 2016 08:47:47 +0000 (08:47 +0000)]
Merge "Include AuthManager API endpoints in authmanager channel"

7 years agoMerge "Add dependency to 'jquery.textSelection' for 'mediawiki.toolbar'"
jenkins-bot [Sat, 6 Aug 2016 08:45:59 +0000 (08:45 +0000)]
Merge "Add dependency to 'jquery.textSelection' for 'mediawiki.toolbar'"

7 years agoMerge "Show wgPageParseReport on page previews too"
jenkins-bot [Sat, 6 Aug 2016 08:42:06 +0000 (08:42 +0000)]
Merge "Show wgPageParseReport on page previews too"

7 years agoFix @covers tag
Kunal Mehta [Sat, 6 Aug 2016 08:04:21 +0000 (01:04 -0700)]
Fix @covers tag

Trying to @cover or @use not existing method
"ResourceLoaderFileModule::getScripts"

Change-Id: Ifc4d2c98f5129f0d205e12081dfb48568d8250cb

7 years agoMerge "Fix increment() statsd call in JobRunner"
jenkins-bot [Sat, 6 Aug 2016 01:02:40 +0000 (01:02 +0000)]
Merge "Fix increment() statsd call in JobRunner"