Commit graph

1247 commits

Author SHA1 Message Date
jenkins-bot 319c04ce2f Merge "Hygiene: Remove unnecessary IIFE in changeListeners/eventLogging.js" 2017-02-20 17:23:35 +00:00
jenkins-bot 0199fc782a Merge "Hygiene: Remove useless IIFE in settingsDialog.js" 2017-02-20 17:19:35 +00:00
jenkins-bot ef78e27571 Merge "Hygiene: Remove unnecessary IIFE in wait.js" 2017-02-20 17:19:34 +00:00
jenkins-bot f0bac7a4fa Merge "Hygiene: Remove unnecessary IIFE in actions.js" 2017-02-20 17:19:33 +00:00
Translation updater bot 8868f05c34 Localisation updates from https://translatewiki.net.
Change-Id: I10aa08a217a5255ab7cf76a035ee7331853ffc5b
2017-02-19 22:41:54 +01:00
Translation updater bot 2e9d2344dc Localisation updates from https://translatewiki.net.
Change-Id: I8f6b1cf7616709b9bb47921b7a23a096469f306b
2017-02-18 22:41:22 +01:00
Translation updater bot d9e8024160 Localisation updates from https://translatewiki.net.
Change-Id: If348e2271c9f1d3202b1b80eff0498654e1ed9bf
2017-02-17 22:45:12 +01:00
Umherirrender 655f8b02eb Remove duplicate config key from extension.json
Having PopupsConflictingNavPopupsGadgetName once is enough

Change-Id: I59c15162e20ba209e4bd8e292e2b223ee3cf6638
2017-02-17 18:24:19 +01:00
joakin f2e9654d23 Hygiene: Remove unnecessary IIFE in checkin.js
Change-Id: I84afc09540f24af425e2abd4603115bdf0030aa7
2017-02-17 06:39:25 +01:00
joakin 27d1ad8318 Hygiene: Remove unnecessary IIFE in changeListeners/render.js
Change-Id: Ib313ddd52d59c6422e02d98b67b5b475b35e79b7
2017-02-17 06:39:21 +01:00
joakin dfe44acef2 Hygiene: Remove unnecessary IIFE in changeListeners/linkTitle.js
Change-Id: Ifc882875475d1bd5056879c59314030a6f616daa
2017-02-17 06:39:16 +01:00
joakin 36287477d0 Hygiene: Remove unnecessary IIFE in changeListeners/footerLink.js
Change-Id: Id1535ce6af0d2dda0e58b784180d3d072844daa8
2017-02-17 06:39:10 +01:00
joakin dfb5ed6688 Hygiene: Remove unnecessary IIFE in changeListeners/eventLogging.js
Change-Id: If379092ab5132b47525ba350d6bbb4cee4568a15
2017-02-17 06:39:00 +01:00
joakin 8d22cf248a Hygiene: Remove useless IIFE in settingsDialog.js
Change-Id: I2885e02d0e61f9e98e086ce4399bc9a18517e531
2017-02-17 06:38:55 +01:00
joakin fd91fe7d93 Hygiene: Remove unnecessary IIFE in wait.js
Change-Id: Ia360bbd99b3d657116c0ba11c5acca726e4602a4
2017-02-17 06:38:46 +01:00
joakin dc7b05c27e Hygiene: Remove unnecessary IIFE in actions.js
Change-Id: I6031efbce04d4cd91a37690469d49ffd0372b41c
2017-02-17 06:38:35 +01:00
jenkins-bot ade818e89e Merge "Resize thumbnails images returned by REST endpoint" 2017-02-17 00:30:28 +00:00
jdlrobson 6d859a73a3 Resize thumbnails images returned by REST endpoint
This change resizes thumbnails to the appropriate width
based on the value of mw.popups.gateway.THUMBNAIL_SIZE

Tests cover
* When requested thumbnail is < than original size
* When requested thumbnail is > than original size
* When requested thumbnail is an svg and originalimage
smaller than requested thumb size

Bug: T156800
Change-Id: Ib375b97e2bc959e91de5177efc3df1f2ded54a5b
2017-02-16 16:19:14 -08:00
jenkins-bot 740d6f2720 Merge "Position image correctly inside the card" 2017-02-16 23:41:20 +00:00
Derk-Jan Hartman b839b29008 Position image correctly inside the card
inline-blocks need to be forced to be aligned correctly on the baseline

Bug: T153840
Change-Id: Iec45caa4483b36b01261309e4895c71e3fc2e675
2017-02-16 23:35:15 +00:00
Translation updater bot 16c6d96c92 Localisation updates from https://translatewiki.net.
Change-Id: I1d0665a4d85c1ca30bbd8a7ad951bb74750c69dc
2017-02-16 22:57:52 +01:00
jenkins-bot abad4ba4a1 Merge "Hygiene: Move Popups.hooks into includes folder" 2017-02-15 22:00:04 +00:00
Translation updater bot 636bd416a9 Localisation updates from https://translatewiki.net.
Change-Id: Ifd6abb5e3e14b876456e8cea239640686a322cc4
2017-02-15 22:37:46 +01:00
Translation updater bot 7ef1899383 Localisation updates from https://translatewiki.net.
Change-Id: I6787a7d2f0e8b990e3d86b2815bcbb5fa18190f0
2017-02-14 22:46:12 +01:00
Piotr Miazga 2988a6e620 Hygiene: Move Popups.hooks into includes folder
Lets keep all extenion PHP files in one folder

Change-Id: I225019b895df038c1d43a082ac4244053d0b96dd
2017-02-14 21:04:49 +01:00
jdlrobson 6908b59ccf Merge remote-tracking branch 'gerrit/mpga'
Switch default branch to master

Change-Id: I4abbaae83e84a9666bbd5cef0150e25fc0fee0c6
2017-02-14 11:20:17 -08:00
joakin fa2b10a2e7 Hygiene: Move build/ext.popups/ to src/
This way, src contains sources, and dist contains distribution files.

Also, add some documentation about the folders in the README and an adr.

Change-Id: Ie0b9f6475b8423b90e927633d883bde3cd5d5e4d
2017-02-14 09:59:59 -08:00
joakin c593ed3502 CI: Check built assets are up to date with sources
When running the CI npm job in jenkins, make sure to check that the
compiled assets from the bundler are up to date with the sources.

That way, CI will not verify if the assets commited are not up to date
so that we don't have out-of-sync sources and built assets.

Change-Id: I56bc0097f5b4fa6c9b7afa3ae14b7db4ab480a94
2017-02-14 18:39:38 +01:00
joakin ba4844cdc2 Tooling: Separate built resources from RL resources
In order to automatically verify in CI that the built assets are up to
date with the commited sources, we need to keep the built assets in
a folder separate from the RL assets.

* Rename the compiled assets folder to industry standard `dist`

Change-Id: I8c5898f9bb29fee7164a7038b835a5f7efd33dbc
2017-02-14 18:39:38 +01:00
joakin 82afb169f6 Docs: Add a README.md with development instructions
Change-Id: I1ff47d0925a5c97cc4653df875b745a8666cbd8a
2017-02-14 18:39:38 +01:00
joakin 45046da7f1 Tooling: Add npm start script for development mode
Run webpack in watch mode for development. Scripts are documented in
a followup commit in the README.

Change-Id: Id1e2f8b8578169eee53a5e4f8c468d5426d4c2ea
2017-02-14 18:39:38 +01:00
jenkins-bot 0041b5bc1e Merge "Hygiene: Include sourcemaps in the repo in the compiled assets folder" into mpga 2017-02-14 17:18:20 +00:00
Sam Smith 454cf1843e Add missing ext.eventLogging.Schema dependency
Bug: T156333
Change-Id: I9daa38db4fada95d5c34415b2615c9c96790ca9d
2017-02-14 14:18:34 +00:00
joakin 908d4eed7e Hygiene: Include sourcemaps in the repo in the compiled assets folder
So that production code can be debugged properly. Independent source
maps files aren't loaded until the developer tools are open.

Change-Id: Ic8c3c10315d3a3be0f42505834005a3cab77d130
2017-02-13 17:59:03 -08:00
Translation updater bot 512f1a7dae Localisation updates from https://translatewiki.net.
Change-Id: Iabb72850dff0b2851a209c2977ac70943f41026d
2017-02-13 23:08:24 +01:00
jdlrobson f0f462ee0d Redux and redux-thunk now packaged inside ext.popups
Until this appears in core it makes sense to package it up as
part of ext.popups resource loader module.

Version numbers from npm are pinned to exact versions to control the
upgrade path of the libraries instead of leaving it to semver on
developers machines.

Bug: T156333
Change-Id: I33368ecc3c8e911d96f846669bcd831c182749f2
2017-02-13 14:15:30 +01:00
jdlrobson 20e7564bed Webpack: Complete transition to webpack for ext.popups module
boot.js is renamed to index.js and popups is now bundled
up inside popups.js

To support qunit tests, the library is still exposed as
mw.popups with a FIXME to remove later when it is no longer
necessary

Bug: T156333
Change-Id: Ieb6b4b0344af2701f99ef0fcc786d2378fd2fceb
2017-02-13 13:48:52 +01:00
jdlrobson 93b2428895 webpack: Build gateway via webpack
Bug: T156333
Change-Id: Ifbb696c5e615679c2c61bde7df7224bd5e55fcdb
2017-02-13 13:42:22 +01:00
jdlrobson c6ca8f173f Webpack: Build previews with webpack
Change-Id: Ieb9e3bf1bee550e4234a5796c0b51405ba458b1f
2017-02-13 13:42:22 +01:00
jdlrobson 915bf23627 Hygiene: Reducers packaged via webpack
Bug: T156333
Change-Id: I14b0a9faf063ac7e89b7a012fb47d27ef4ed9d82
2017-02-13 13:42:22 +01:00
jdlrobson 49df4b9572 Tooling: Begin to use webpack for JS code generation
Generate changeListeners via webpack
We now use a build folder to build the JavaScript for
our ResourceLoader modules. This is the first change
in a line of changes.
A source map is provided for debug support.

Bug: T156333
Change-Id: I771843d1ddb4b50adedc3fa53b30c2f1d8a76acb
2017-02-13 13:42:22 +01:00
jenkins-bot fa0426e008 Merge "Hygiene: Rename isEnabledByUser to shouldSendModuleToUser" into mpga 2017-02-10 18:57:27 +00:00
jenkins-bot 9e3ad908c7 Merge "Only add Popups code to output page where needed" into mpga 2017-02-10 18:55:09 +00:00
jdlrobson 64e7bfd620 Hygiene: Rename isEnabledByUser to shouldSendModuleToUser
Sometimes we make choices on the users behalf if we don't have
sufficient information, so this name is more applicable.

If beta features is disabled and the user is anon they have not
explicitly opted in.

Change-Id: I5d816f569fc54f8bf74d6e5a06246b7fa7036e06
2017-02-10 10:07:28 -08:00
jdlrobson 4e2ce1ce39 Only add Popups code to output page where needed
If the Popups code is enabled in beta feature mode only then
only add it to the page if the beta feature is enabled.

isEnabledByUser now returns false if the user is anonymous
and Popups is restricted to beta mode.

Bug: T156290
Change-Id: If152d2a67a079050173c6d642e0960b59730bc6d
2017-02-09 10:43:53 -08:00
jenkins-bot 398ffb0e43 Merge "Hygiene: Add to mw.popups in only one place" into mpga 2017-02-09 10:53:41 +00:00
jenkins-bot cd9451e538 Merge "Hygiene: Split and organize the gateways" into mpga 2017-02-08 21:20:18 +00:00
jenkins-bot d7b5f56665 Merge "Hygiene: Use factory functions instead of classes" into mpga 2017-02-08 19:38:53 +00:00
joakin 955189230a Hygiene: Split and organize the gateways
* Create new namespace mw.popups.gateway to contain them
* Create folder resources/ext.popups/gateway/
* Split gateway{,.test}.js into gateway/{mediawiki,rest}{.test,}.js
* Extract stateless functions out of factory scope now that there are no
  name collisions between the factories.

Bug: T123445
Change-Id: Ib256871c3e4cfe3f13361cb66d4e9a67e9823c7b
2017-02-08 18:58:46 +01:00
joakin 557fd113c8 Hygiene: Use factory functions instead of classes
Instead of using constructor functions, use factory functions to
generate the gateway objects, because of:

* Consistency on the approach in the repository, no constructor
  functions are used, the factory function pattern prevales.
* Real private data with closures
* No use of `this`, which is dynamic and unbound in JS and a source of
  errors. In contrast, by using a factory function, the
  function/methods-of-the-object are tightly bound to the internal data.

Additional changes:
* Specify more the type of createRESTBaseGateway's parameter to improve
clarity on the intent of the parameter
  * From: @param {jQuery} api
  * To:   @param {Function} ajax function from jQuery for example

Supporting documentation:
* https://medium.com/javascript-scene/javascript-factory-functions-vs-constructor-functions-vs-classes-2f22ceddf33e

Change-Id: Iacbb098b646843a01f459b15343057e2e4851d35
2017-02-08 18:28:21 +01:00