Commit graph

2836 commits

Author SHA1 Message Date
joakin 84e30f4613 Revert usage of Promise A+ in actions.js#fetch
.catch is only available with jQuery 3, which is only now starting to
roll out (see https://phabricator.wikimedia.org/T124742)

This patch rolls back the usage of .catch introduced in
https://gerrit.wikimedia.org/r/#/c/373327/ to use .fail, but only the
source part, given that patch introduced unit tests for this behavior

Bug: T174724
Change-Id: I6e1c342d812b35846061266bc59e493e87423fd8
2017-09-01 12:10:50 +02:00
libraryupgrader 4cf348c614 build: Updating mediawiki/mediawiki-codesniffer to 0.12.0
Change-Id: I99700010ab32a37f78ad0d9d7b32cc6bc4966b8a
2017-09-01 04:55:51 +00:00
jenkins-bot 950c8dca7c Merge "Store map files under .json extension" 2017-08-31 11:07:55 +00:00
joakin 4ed09011c2 Explicitly set ecmaVersion for eslint
Before, because of the use of sourceType: "module", ecmaVersion would be
assumed to be ES2015, but we write ES5 here at the moment.

This enables linting against ES2015 features like let and const.

See https://gerrit.wikimedia.org/r/#/c/374789/ for failing POC.

Change-Id: Id1d147866c37de3794213378a5e8a08af6f796a1
2017-08-30 13:47:49 +02:00
Translation updater bot 26ba349dc9 Localisation updates from https://translatewiki.net.
Change-Id: I1d7d4a45bd07cae820938c0571fe9acae8c053fb
2017-08-30 10:59:48 +02:00
Piotr Miazga f8498ce70c Store map files under .json extension
We cannot serve .map files from production servers. This makes
Popups extension difficult to debug. As a simplest solution we
decided to store map files as .json files so we can easily access
js maps files.

Changes:
 - changed webpack config to store map files under .json extension

Bug: T173491
Change-Id: Iaa55f75a8c5f3e8f1f169b3ac33241cc54f0413f
2017-08-29 21:18:35 +02:00
Piotr Miazga cb72bf4e82 Do not use keyword const as it's part of ES6 syntax
Changes:
  - instead of const use var

Bug: T174424
Change-Id: I3d786614b5acbfe9a05c332edd3a14c2e5afa417
2017-08-29 16:37:46 +02:00
Translation updater bot 4bcfba08ae Localisation updates from https://translatewiki.net.
Change-Id: I7de4f71b3e4e6702d833ec516a8e3f83046610bf
2017-08-29 09:04:02 +02:00
Bartosz Dziewoński b63d2262f8 Don't use ES6 Number.isNaN
Number.isNaN is a new function introduced in ECMAScript 6.
MediaWiki only requires ECMAScript 5 supports from browsers.
Notably, Opera 12 does not have Number.isNaN. Instead, use
the global isNaN function (which behaves the same except for
non-numeric inputs).

Change-Id: If436cd26b21ce0336dfbc37144f6226e7b948e5e
2017-08-28 21:22:07 +02:00
L10n-bot 325db5513c Merge "Localisation updates from https://translatewiki.net." 2017-08-28 11:24:42 +00:00
Translation updater bot 698beb882c Localisation updates from https://translatewiki.net.
Change-Id: Ic3f91db9d3242d7e26177de14b43e85237e3b019
2017-08-28 13:24:29 +02:00
Quiddity 311bf8f683 Use Special:MyLanguage in help link for betafeature info
Bug: T145904
Change-Id: I59c0b952cb44b31d0918c3d4659d47f2ddec7761
2017-08-26 20:28:59 +00:00
Timo Tijhof 78ed328d55 Docs: Fix typo in Grafana link label
Change-Id: I35d984b9fd5d8dc39cb17d2ff1e69e58a4e699c4
2017-08-26 00:08:03 +01:00
jenkins-bot 8850c1d0a3 Merge "Use canonical name for NS_SPECIAL titles when checking the blacklist" 2017-08-25 15:50:22 +00:00
Piotr Miazga 0de054cd79 Use canonical name for NS_SPECIAL titles when checking the blacklist
Changes
 - when verifying title use canonical names for pages in
 special namespace
 - improve unit tests to verify canonical names and translated titles

Bug: T170169
Change-Id: I49592133eb8286eacf04fd3034df091f7ef2aa50
2017-08-25 15:56:02 +02:00
Translation updater bot d21e52c056 Localisation updates from https://translatewiki.net.
Change-Id: Idc1c2eb96856e15bf51d8e062a1564f7b7df57f5
2017-08-25 09:48:07 +02:00
Umherirrender 40b4c053d8 Remove dot at end from extension description
Consistency tweak for extension active on translatewiki.net
Description on Special:Version does not end with a dot

Change-Id: I458dcdc62e609f1f002785e31d222d45514b55d4
2017-08-24 20:47:53 +02:00
Translation updater bot a6d2e4c69c Localisation updates from https://translatewiki.net.
Change-Id: Icefa6cd70eb81d9884e383d9cbd0d67599d769bf
2017-08-24 09:33:42 +02:00
joakin e865409593 Hygiene: Don't rely on .fail, use Promises/A+
Instead of using the non-standard old Promise implementation by relying
on .fail, migrate it to .catch.

In this specific case, where we were chaining promises with $.when, the
semantics from going from fail to catch actually change. .fail keeps the
promise in a rejected state, while .catch will change it to resolved
unless another error is thrown.

As such, when changing it to .catch, the catched error will be re-thrown
to keep the promise in a rejected state, so that $.when.then is not
executed.

Additional changes:
* Make actions.js#fetch return its promise for ease of testing.
* Test FETCH_FAILED, which was fully untested.

Bug: T173819
Change-Id: Ibd380b714586979c6e60b4c969d17f36a0796b52
2017-08-23 19:36:05 +02:00
jenkins-bot 8bb322b15d Merge "Hygiene: Use promises A/A+ everywhere" 2017-08-22 14:34:26 +00:00
joakin 4d8364a999 Hygiene: Use promises A/A+ everywhere
Remove usages of deprecated methods like .done which make jquery
promises fall back to non-standard behavior

Additional changes:
* Rename var promise to a more descriptive name in tests

Bug: T173819
Change-Id: I7b041d0a7a8c42a8eac947295d265e898085c60a
2017-08-22 13:36:00 +02:00
Translation updater bot bba762d931 Localisation updates from https://translatewiki.net.
Change-Id: Id02413dede0ee633ff2ed277728c26865464ad3e
2017-08-22 09:09:15 +02:00
jenkins-bot 8b2c4812d8 Merge "Use json extension for .stylelintrc" 2017-08-19 22:04:16 +00:00
Umherirrender 584c536860 Use json extension for .stylelintrc
Bug: T173516
Change-Id: I352840aa4c400f27bba2028ca39b5ae2e0f8dcf8
2017-08-19 10:19:38 +02:00
Translation updater bot 4712f4a728 Localisation updates from https://translatewiki.net.
Change-Id: I3624323bb18044807b09871ec64f44726d42db5d
2017-08-19 09:12:33 +02:00
Timo Tijhof 55f075bf11 Remove aborting of BeforePageDisplay hook
This caused random extensions to not be able to load any ResourceLoader
modules (or do other things) on a random subset of pages and wikis.

Follows-up 29770a3.

Bug: T173411
Change-Id: I8dfc1085cb7d902f9e9be8a71324dc4cd850a500
2017-08-18 16:38:42 -07:00
jdlrobson e4e9bb3bd6 Popups A/B test infrastructure
Introduce PopupsAnonsExperimentalGroupSize config variable. This defines
a population size who will be subject to experimentation. If the group
size is undefined or 0 (default) and PopupsBetaFeature is false
(default value) Popups will be enabled for everyone. If it is any other
value, half that group will see page previews.

Drop the config variable PopupsSchemaSamplingRate - we will now only
EventLog when an experiment is occuring. This means we can simplify the
MWEventLogger class as shouldLog will always be truthy. Given server
side eventlogging is only used for preference changes
traffic should be low and not need sampling.

Introduce getUserBucket which determines whether a user is in a bucket
on, off or control based on the value of
PopupsAnonsExperimentalGroupSize. Add tests showing how these
buckets are calculated.

Caution:
A kill switch wgPopupsEventLogging is provided for safety.
It defaults to false. Before merging, please check if any config changes
are necessary.

Bug: T171853
Change-Id: If2a0c5fceae78262c44cb522af38a925cc5919d3
2017-08-17 21:07:07 +00:00
Piotr Miazga 910dd0408f if preview count stored in localStorage is not a number override it
There are some cases when the preview count stored in local storage
evaluates to NaN. When this happens we should override the value
to zero, store it in localStorage, and return it.

Bug: T168371
Change-Id: Ic44b7c7b5b716f6a0859f33278d56d2d95bbfb3e
2017-08-17 18:29:56 +02:00
jdlrobson 08331ba199 Return promises from QUnit test
Simplify all our tests to return to promises
Use catch rather than fail when testing error cases.

Bug: T170812
Change-Id: I37c4e3f86343052c946d8586f8ff840a81f631f8
2017-08-17 14:34:39 +00:00
Translation updater bot ec3abcaee4 Localisation updates from https://translatewiki.net.
Change-Id: I10147df2d626f02524f5684d5c83f97aea73ab4d
2017-08-17 09:04:47 +02:00
Baha 3ac3769aa7 Remove event logging duplication detection and logging
We haven't seen the PP EventLogging instrumentation produce duplicate events
for weeks.

Bug: T172106
Change-Id: I6f3d7c0cdbf23161f63259e4d20d8a710376468b
2017-08-16 11:46:35 -04:00
Piotr Miazga d07441ec7f getPreviewCountBucket should return unknown when no bucket is found
Under some unknown circumstances getPreviewCountBucket() is called
with a value that is not a -1 or a natural number. When that happens
function returns 'undefined bucket' which causes eventLogging to
fail. I wasn't able to reproduce the issue, it might be specific
to browser/os. The safest way is to return 'unknown' for any other
case.

Bug: T168371
Change-Id: I374bb629762a86ac06a18e775d3c1a14682c9f55
2017-08-15 16:12:26 +02:00
Translation updater bot 0aa37be96b Localisation updates from https://translatewiki.net.
Change-Id: I1e9bdd02a77c26b4c63a5286a2f59fb3379de3a6
2017-08-14 09:27:07 +02:00
Kunal Mehta 05fafbf8ba build: Updating mediawiki/mediawiki-codesniffer to 0.11.0
Change-Id: I7b00bf0beb47f54c4543de0d605c80ebdd6cdb4d
2017-08-11 00:21:26 -04:00
Umherirrender afb2db82ad Improve some parameter docs
Change-Id: Ic78a889eb7374731a282312c9eadb701483ae298
2017-08-10 13:24:00 +02:00
Translation updater bot f9399ddc9a Localisation updates from https://translatewiki.net.
Change-Id: I8f949a82393388d8d9cf6897807060e7554d997f
2017-08-09 22:37:54 +02:00
joakin f37b76f8b4 Hygiene: make integrations/mwpopups pure
Instead of registering global variables in a function, make it pure
return the external interface and set it to mw.popups in the
src/index.js entry point.

Explicitly comment on index.js what is being set and why.

Bug: T171287
Change-Id: I94d467bfa7fa6e56033dd254518ad50b5dde5bfc
2017-08-09 16:07:08 +02:00
Piotr Miazga 8510b4b942 Allow 3rd party to check Popups enabled state by accessing mw.popups object
Changes:
 - introduced js module defining mw.popups object
 - introduced isEnabled() method which checks the redux store to retrieve
 isEnabled status

Bug: T171287
Change-Id: I523369831e2aa8a915ed1cb001b35d13b770f9da
2017-08-08 15:38:01 +02:00
jenkins-bot 2296b3578e Merge "Use EcmaScript modules instead of common.js modules" 2017-08-07 22:13:51 +00:00
Translation updater bot f7663e1f4b Localisation updates from https://translatewiki.net.
Change-Id: I61a1e991109785beaa8bd2176d6c49005f790685
2017-08-07 23:00:38 +02:00
Antoine Musso b60eedc8da build: drop grunt-cli
grunt 1.x now includes a CLI command, hence grunt-cli is no more needed.

Change-Id: I94f0c66236b5f0f12220741276c7fe24a89c65e0
2017-08-01 10:47:44 +02:00
joakin e6081106f1 Use EcmaScript modules instead of common.js modules
Why: Because they are the approved standard by TC39 and Ecma for
JavaScript modules.

Changes:
  * Wrap mw-node-qunit in run.js to register babel to transpile modules
    for node v6
  * Change all sources in src/ to use ES modules
    * Change constants.js to be able to run without
      jQuery.bracketedDevicePixelRatio given ES modules are hoisted to
      the top by spec so we can't patch globals before importing it
  * Change all tests in tests/node-qunit/ to use ES modules
  * Drop usage of mock-require given ES modules are easy to stub with
    sinon

Additional changes:
  * Rename tests/node-qunit/renderer.js to renderer.test.js to follow
    the convention of all the other files
  * Make npm run test:node run only .test.js test files so that it
    doesn't run the stubs.js or run.js file.

Bug: T171951
Change-Id: I17a0b76041d5e2fd18e2d54950d9d7c0db99a941
2017-07-31 23:05:44 +00:00
Volker E eebf17ac3f Remove obsolete vendor prefixed properties and at-rules
Opera 12.10 supported unprefixed animations, gradients, transforms &
transitions. See http://www.opera.com/docs/changelogs/unified/1210/
Removing support for Opera 12.0x versions.

Change-Id: I3476db173433c430f654e12ea1f17d2721410b83
Depends-on: Ie8edbcd7f85c713ea2156706ea3a3a7b423d8d9d
2017-07-31 21:39:42 +02:00
joakin 02507fb74d Hygiene: Move settingsDialog UI code to ui/
Bug: T171951
Change-Id: I58f77737456e1f4b9db6631f83e4b0f14212c939
2017-07-31 19:14:18 +00:00
joakin eb877a4af5 Deps: Upgrade mw-node-qunit
Version 2.1.0 had a bug because of using console.err, obfuscating error
messages when the cli runner errored out.

Bug: T171951
Change-Id: I263c3e4e13f55cf67630448119ff335e26085197
2017-07-31 19:14:08 +00:00
joakin 31fa60d32c Hygiene: Move ui renderer.js to ui/ folder
Seems appropiate to group the UI portions of the source under a ui
folder.

Bug: T171951
Change-Id: I6d4317abea4e2a8e273e13fc40a7445bb54628ef
2017-07-31 19:11:41 +00:00
jenkins-bot 91f1ca6bbc Merge "Disable Previews on blacklisted pages" 2017-07-31 18:18:14 +00:00
Baha 29770a3ff7 Disable Previews on blacklisted pages
Introduce a config variable `PopupsPageBlacklist`. Previews code won't
be shipped to pages listed in the config variable.

Bug: T170169
Change-Id: Ia8342b55c682f444ba79e959dcc1180527a31374
2017-07-31 09:10:30 -04:00
Antoine Musso 46e0d7cdbe Define npm peer dependency explicitly
npm 3 requires dependencies to be explicitly defined.

Bug: T172094
Change-Id: Ic640ccf0f577e47036d473892522ea758014fab4
2017-07-31 13:31:35 +02:00
jenkins-bot dd7ef3b215 Merge "Hygiene: i13n: Return false over not sampling" 2017-07-28 12:44:57 +00:00