Commit graph

2670 commits

Author SHA1 Message Date
jenkins-bot f7ddbcaf3c Merge "Renamed settings local from simple to page" 2021-04-26 14:55:28 +00:00
jenkins-bot e9de7cb261 Merge "Localisation updates from https://translatewiki.net." 2021-04-26 07:16:16 +00:00
Translation updater bot f286bb1f7b Localisation updates from https://translatewiki.net.
Change-Id: I4471d310734726f923279eab767d6636fc3def8e
2021-04-26 09:10:42 +02:00
Translation updater bot 35a6a0c938 Localisation updates from https://translatewiki.net.
Change-Id: I4320d7a5678554f600ffbd4316279da7b5eccc11
2021-04-26 08:57:27 +02:00
anjali041 4f12a23794 build: Enforce check for uncompressed SVG files in CI
- 'dev-scripts/svg_check.sh' is added to the Popups repo
- `svg_check` is run during the npm test script

Bug: T280923
Change-Id: I02715a5a70f0effb3625694f0afb3cd6250ef46c
2021-04-25 13:29:44 +00:00
Svantje Lilienthal 3b6d9ccc9d Renamed settings local from simple to page
We changed the handling of the popup settings. They now contain popup types (pages and references). 
To not get confused with the old setting options (simple, advanced and off), 
we would like to rename the local for the simple setting to page. 
It should already contain the correct string.

Bug: T277639
Change-Id: I8847b890e9e31602277a92d82a188fcdd3eea855
2021-04-23 14:35:06 +00:00
jenkins-bot 5594191b6b Merge "Clean up popup type settings related code" 2021-04-23 13:46:15 +00:00
jenkins-bot a5786d63e5 Merge "Add tests for rewritten SETTINGS_CHANGE action reducer" 2021-04-23 13:43:24 +00:00
Thiemo Kreuz d0872e3025 Clean up popup type settings related code
* Change more places to not hard-code the popup types, but use
  loops and such.
* Change many `function ()` headers to use the more streamlined
  ES6 sytnax.

Bug: T277639
Bug: T277640
Change-Id: Ifece87d51012e0e069286453b27f5c9ae273710e
2021-04-23 15:38:38 +02:00
Thiemo Kreuz a2c8417d74 Add test case for syncUserSettings with reference previews
Code was introduced in I13acfb8, but not individually tested
so far.

Bug: T277639
Change-Id: Ica4527d3514246069cce7f5848c22764c6306531
2021-04-23 13:05:09 +02:00
Thiemo Kreuz 7f938bb077 Add tests for rewritten SETTINGS_CHANGE action reducer
The new code that is tested here was introduced in I860a1b3.

Bug: T277639
Change-Id: I128e69f8ca0415ff78d68a2fea2c9622c90029e0
2021-04-23 11:03:28 +00:00
Svantje Lilienthal e5909e06c5 Updated settings link for anonymous users
Bug: T277640
Change-Id: I5abfed7ba1d55286276d03141dd3af33008b7e04
2021-04-23 12:46:31 +02:00
Svantje Lilienthal 09c2c52945 Added popup types handling
We added reference preview as a checkbox the the
anonymous user settings. To handle both popup types
(pages and references), we changed the usage of
preview.enabled. We pass on all types as a map
inside preview.enabled. The footer link to edit the
settings will appear for anonymous users if at least
one type is disabled.

Bug: T277639
Change-Id: I860a1b35ac7749d8d0884575f6acb7186ad8e4d0
2021-04-23 12:14:23 +02:00
Translation updater bot abdeec417b Localisation updates from https://translatewiki.net.
Change-Id: I3d7eb7ba99b025e69f139356749fa9c60f078d36
2021-04-23 08:37:17 +02:00
jenkins-bot c3dc5f8e05 Merge "Clean up code enabling individual popup types" 2021-04-22 15:47:08 +00:00
jenkins-bot b3c865f32c Merge "Fix icon placement in reference previews" 2021-04-22 14:38:31 +00:00
Translation updater bot a17b5deb70 Localisation updates from https://translatewiki.net.
Change-Id: I0048cef61d4ea7805e7c873f6b95a10f18cbfd7b
2021-04-22 09:32:05 +02:00
jenkins-bot a6e4fd5def Merge "build: Replace Grunt tasks with npm scripts for eslint, stylelint, banana-checker & svgo." 2021-04-21 23:48:41 +00:00
bwang 2081ab4bf3 build: Replace Grunt tasks with npm scripts for eslint, stylelint, banana-checker & svgo.
Changes of note:
- The doc and node-debug jobs are moved to ensure that all test prefixed
jobs are together in the package.json manifest.
- 2 additional scripts are added (linter:js & linter:styles) to match WVUI's NPM script naming convention.

Bug: T206462
Change-Id: Ib84f93c20f13aefb2d8f8755261b1f14e5902f16
2021-04-21 22:25:17 +00:00
Thiemo Kreuz 25e7143f4c Fix icon placement in reference previews
The icons are all slightly misplaced since Iba5367f (T277663).

This patch also replaces the deprecated variable @iconSize.
This is only about the variable name, the value doesn't change.

Bug: T280762
Change-Id: I9ce00aed5a91a95b64427d63881784196f94169b
2021-04-21 17:50:08 +00:00
Thiemo Kreuz c281bb9302 Clean up code enabling individual popup types
We still have 2 different mechanisms in place, maybe even 3:
* We simplify the CSS selector when we know a popup type is
  disabled, and it's impossible an anonymous user can enable it
  at run-time.
* We create that "initiallyEnabled" map that allows anonymous
  users to toggle the individual popup types at run-time.
* This map is also used to check if the footer link should be
  shown.
* There is also a wgPopupsReferencePreviews global that acts as
  a "kill switch". However, this is not a pure feature flag,
  but incorporates the user setting for registered users. This
  is currently partly redundant (checking
  `mw.user.options.get( 'popupsreferencepreviews' )` does the
  same) and can be removed later when the feature flag is not
  needed any more.

The footer link currently acts odd because anonymous users are
unable to enable ReferencePreviews, but get the footer link.

This patch introduces a 3-state model:
* `true` acts as before.
* `false` means a popup type is disabled, but anonymous users
  can enable it (i.e. this is the opt-out behavior for anonymous
  users).
* `null` means a popup type is not available at run-time, for
  nobody. Anonymous users can't do anything about this.
  Registered users must leave the page and change a setting.

Bug: T277640
Change-Id: Id8d1396c09cf0f706034a66f9cd3c880a8b33df8
2021-04-21 19:38:25 +02:00
Svantje Lilienthal cf9258b0c5 Changed radio button to checkbox in anonymous user settings window
Bug: T277639
Change-Id: Ifa84dda88a8a167fc8ed2cef17254c1b722ade2d
2021-04-21 14:13:47 +02:00
jenkins-bot fa3f2fe4af Merge "Fix bottom margin as long as settings icon isn't shown" 2021-04-21 11:04:21 +00:00
Thiemo Kreuz e19b557227 Merge duplicate ReferencePreviews Beta feature flag
Change-Id: Ia7f1c9128460bc5a139e37eb16fff649e80cd20f
2021-04-21 10:46:05 +02:00
jenkins-bot 700f8ed306 Merge "Minor cleanups to QUnit test setups" 2021-04-21 07:46:29 +00:00
Translation updater bot fadf62f691 Localisation updates from https://translatewiki.net.
Change-Id: I994d91b48283de0f42f9064144d38dc85a5a5411
2021-04-21 08:53:06 +02:00
bwang 6c7a922547 Update package-lock.json
This patch removes "optional" from the package-lock.json, which is a property introduced in npm v6.6+, while our nvm specifies npm v6.4.1

Change-Id: I43983688d8f26e68b454e42410760b270dced48c
2021-04-20 20:54:30 +00:00
jenkins-bot a2478add67 Merge "Remove dead code around cog wheel dialogue" 2021-04-20 07:43:08 +00:00
Translation updater bot e7485da092 Localisation updates from https://translatewiki.net.
Change-Id: Icf29c65a6069b7edc2dd5551a0efd492d9be8ee1
2021-04-19 08:51:13 +02:00
Thiemo Kreuz 3466e66995 Minor cleanups to QUnit test setups
* That `this.user` is unused.
* Some tests missed a module name. This means they are reported
  as part of the previous module. While this is purely cosmetic,
  it's confusing to see the wrong module name in the report.

Change-Id: I73915d3c4fd9a03bda1ddc8dff6dd5539113c3cd
2021-04-16 13:23:10 +02:00
WMDE-Fisch 190962cc5b Remove dead code around cog wheel dialogue
An "advanced" option was first introduced in 2014 via patch I374805e
(originally named "monitor-or-edit", renamed via patch I7b4f6d2).

The isNavPopupsEnabled() function was added in 2016 via patch
Ic660f48.

The code that disables the extension entirely the moment the NavPopups
gadget is enabled was added in 2017 via patch Ia474b1b (T151058) and
patch Ia837816 (T160081).

As of now, the "advanced" option can only be seen in an extreme edge
case:
* Only for anonymous users.
* Only if NavPopups is enabled by default for anonymous users.
* Only if the $wgPopupsConflictingNavPopupsGadgetName setting is
  misconfigured.
* … or if NavPopups is not a gadget in the first place, but e.g.
  loaded via Common.js.

In this situation the settings dialog opens with all *3* options. This
is broken for several reasons:
* The "simple" option enables the extension, but doesn't disable
  NavPopups. Both trigger, resulting in both popups being displayed
  the same time.
* Since "simple" is the default, this bogus behavior is the default
  for anonymous users.
* The "off" option doesn't stick. Every time the settings dialog opens
  "advanced" is checked instead.
* "Off" can't work anyway. There is no code to disable the gadget.
* Only the "advanced" option "works", but more by accident.

It's unclear how to fix this:
* There is no code that does anything with the "advanced" option. It's
  not even stored. The behavior of the option is identical to "off".
* The code appears as if "advanced" was meant to be shown instead of
  "off". I.e. anonymous users can only choose one of the popups, but
  not disable both. But there is no code to hide the "off" option.
* The bug when both popups are displayed was fixed in 2017 via an
  entirely different mechanism. Re-introducing "advanced" does not
  only mean duplication, it's unclear how the 2 mechanisms are meant
  to work together.

It really, really feels like this was just forgotten.

Bug: T278949
Change-Id: Iab21f3a649a5b2f19ebb0d0dbb45ce1450c65678
2021-04-15 15:29:16 +02:00
Andrew Kostka 398565b1d6 Track anonymous enables/disables of reference previews
Bug: T277641
Change-Id: I89ee3ff280e79f560bf613a110a1c9e0b3ba6648
2021-04-15 14:21:32 +02:00
Thiemo Kreuz 622fb6c5e8 Allow to disable/enable popup types individually
Bug: T277639
Change-Id: I0742b8ab1c5ed0b374d4f9447bebc46a35207339
2021-04-15 11:30:36 +02:00
Thiemo Kreuz 4b1f020b9d Avoid hard to read jQuery.extend() in tests
… as well as in one place in production code. The motivation
for this change is to make the code easier and faster to read.
There is a little bit of duplication in the test setup now.
But I would like to argue this is a good thing. The values are
rather trivial. The difference (or absense of a difference) is
much easier to see now.

Change-Id: I9aa95b59f0c45ea7c9257970e2fcdba3a000d234
2021-04-15 10:47:44 +02:00
Thiemo Kreuz b28f48d6d6 Rename variables in change listeners for clarity
This patch does nothing but rename a pair of variables:
"prevState/state" becomes "oldState/newState". Reasoning:

1. The abbreviated "prev" is confusing, especially because we
are in a codebase that is all about "previews".

2. We are in a context that is all about a state **change**.
Change listeners get notified about the change from one state
to another. While it would be possible to stick to the already
mentioned "previous/current" terminology, I find the word
"current" confusing. What is "current" in this context? Did
the state already change? Am I notified about a change that is
**going** to happen or already happened? Is this even relevant?
I don't think it is. Therefor "old/new".

Another possibility is "previous/next".

Change-Id: Id886e1a095967fe86fb9021f59e335c62da8994e
2021-04-15 10:19:40 +02:00
Translation updater bot b25a9d7935 Localisation updates from https://translatewiki.net.
Change-Id: I674dce17b80a01eb1a9a124cce91f033588af9e2
2021-04-15 08:43:55 +02:00
Thiemo Kreuz a35e35e3b3 Expand userSettings module for reference previews
Bug: T277639
Change-Id: I13acfb8bcc6e95fc28969072ec5420fd075d5096
2021-04-13 12:19:49 +02:00
Thiemo Kreuz 51dd4b2807 Make nextState support non-flat updates
The nextState() function was not able to understand updates that
are deeper than a single level. Example:

nextState( state, { pagePreviews: { enabled: true } } )

Before, this would replace whatever was in the "pagePreviews"
property with { enabled: true }, but not merge it. In some places
a single level of recursion was done manually because of this.
This can be removed now.

This is done in preparation for splitting the "enabled" flag into
separate ones for each popup type.

Bug: T277639
Change-Id: I35911c18018ba7cd1633a4c882b978656c3fee36
2021-04-12 13:46:18 +02:00
Translation updater bot 6dd616bab9 Localisation updates from https://translatewiki.net.
Change-Id: I5b1097b3e04bbbe19747ff14ea0574f051d5e983
2021-04-12 08:38:37 +02:00
Translation updater bot c09031c177 Localisation updates from https://translatewiki.net.
Change-Id: I716dc607010a31408ec699a874bc43ace1527817
2021-04-09 08:59:02 +02:00
Thiemo Kreuz ddf574afa3 Remove not needed userSettings.hasIsEnabled()
Note how getIsEnabled() is documented: "if the user hasn't
previously enabled or disabled Page Previews […] then they
are treated as if they have enabled them."

In other words: The idea that the default should be true is
encoded twice in this code. This is just not necessary. We can
remove one without loosing anything.

Motivtion: Simplifying the code and reducing the package size.

Since the code fundamentally depends on this default value
anyway, we can clear the users localStorage when they decide
to go back to the default – instead of storing a "1" which
does the same as the default.

Change-Id: I2814a1e9269979918609162a508eeee6944d9e52
2021-04-08 11:57:52 +02:00
Thiemo Kreuz c5accc0300 Rename many functions and files for clarity
The main motivation here is to dramatically reduce the number
of places that use the same property name "enabled" for values
on different objects (e.g. "state", "actions", and "updates"
are all different things) with slightly different meanings. I
tried hard to come up with names that reflect better what each
meaning is.

Bug: T277639
Change-Id: Ie766259793f716262e3d4622ca55156d11f4842c
2021-04-08 11:04:02 +02:00
Thiemo Kreuz 1f052e0dcb Make syncUserSettings support dot-separated paths
… instead of only 2 hard-coded nesting levels, as it was before.

This is done in preparation for splitting the "enabled" flag into
separate ones for each popup type. This patch here doesn't change
any behavior or internal representation of the states.

Bug: T277639
Change-Id: Icad669d1c9675ad6de22f478e254debe5d1936d7
2021-04-06 17:46:21 +02:00
Translation updater bot 941b5e156d Localisation updates from https://translatewiki.net.
Change-Id: I3414a093fb1c816ba4099b6d78e91f9e9fe756a8
2021-04-06 12:03:06 +02:00
jenkins-bot cc1ba5b82a Merge "Add title attribute to settings gear icon" 2021-04-02 19:57:18 +00:00
Clare Ming 4908f82c01 Add title attribute to settings gear icon
Add message, description, extension for title. Update createPagePreview, renderPagePreview methods to add title attribute to settings gear icon. Add test for title attribute. Increase maxSize, maxAssetSize, maxEntrypointSize. Add compiled js files.

Bug: T274887
Change-Id: Ibb29deb3418569d8283b954b4b22074423e78bda
2021-04-02 13:30:07 -06:00
Translation updater bot 90f40f6526 Localisation updates from https://translatewiki.net.
Change-Id: I85314a52614db07b1dd78275ebf7a0648ad8aedb
2021-04-02 09:49:16 +02:00
Translation updater bot 57f3814a0b Localisation updates from https://translatewiki.net.
Change-Id: I31ef156d9ad578660d8f891ac599e6b16a16e635
2021-04-01 08:37:55 +02:00
jenkins-bot 5ded058c42 Merge "Fix popup footer covering reference content" 2021-03-31 07:26:05 +00:00
Translation updater bot d252f4c35d Localisation updates from https://translatewiki.net.
Change-Id: I3245065dc8521312698503279d25baee6ba53702
2021-03-31 08:36:24 +02:00