Commit Graph

1023 Commits

Author SHA1 Message Date
petarpetkovic
4dc988f6b9 Replace $.each usage in ext.uls.compactlinks with native JS
Change-Id: Icda997b910162b2c220e35ff360a70ade992b71b
2018-12-14 17:44:05 +01:00
Ed Sanders
7bf345669a build: Update linters
eslint-config-wikimedia      0.8.1  →   0.9.0
 stylelint-config-wikimedia   0.4.3  →   0.5.0

Change-Id: I0f55e743c2f38bb8910931c3989a6516e0527703
2018-12-10 14:24:24 +00:00
Volker E
e55d85453a Apply background-color of header for callout arrow
The callout has been carrying the wrong color for the elements it's
applied to.

Change-Id: Ifedc21f4686b94f368c3a41eed1d3e35b467d635
2018-11-26 06:08:25 +00:00
Volker E
aa15e2eda3 Update 'help' icon to standard
Bug: T90414
Change-Id: I3906d452bacb312dd6c97118ad5bf34168fe1da7
2018-11-21 06:47:31 +00:00
Fomafix
d052482cb0 Use <a> instead of <a href="#"> for JavaScript click events
* No status line with URL and "#".
* No new tab on middle click.

tabindex="0" ensures to have the normal tab order.

role="button" according to
https://www.mediawiki.org/wiki/Accessibility_guide_for_developers

Change-Id: I82f1923b3905f111ce7719c03a3919633271720a
2018-10-17 20:16:19 +00:00
Niklas Laxström
dd390d2ec0 Do not precompute href or autonym in #getInterlanguageList
Only store reference to the element, where they can easily be read
when needed.

Also removed one unnecessary use of `self` as an alias.

Change-Id: I39fa897002037a6d6478a3fb1f40ac60833e392e
2018-10-11 13:07:25 +00:00
Niklas Laxström
5ed2ff7d8f Update some outdated comments
Change-Id: I73c7b0549d7335019a1919229afa2e45a92ffacd
2018-10-10 16:14:05 +00:00
Timo Tijhof
1ad0c9c819 ext.uls.eventlogger: Remove use of removed setDefaults() method
Follows-up 2ac8a0a4b6, which removed this method. In checking
Codesearch, I somehow missed this one call among the false positive
results for Datepicker and TMH-related calls to a different method
also called "setDefaults".

Bug: T206588
Bug: T187207
Change-Id: I4f94ce6f8f1b85c192b69c5b50c3f090f7b4bfd2
2018-10-10 02:42:02 +00:00
Timo Tijhof
fcfa36ac77 compactlinks: Optimise performance of list creation logic
Add potential items directly to a single array with two indexOf
checks.

Previously, potential items were first put in a new temporary array,
then that array was filtered with indexOf checks into another temporary
array, and then the result of that combined with the previous results
into another temporary filtered array, and then the previous results
array replaced with the new one. This eliminates 2*2N filter+concat
calls an their overhead from calling functions, creating arrays,
copying arrays and the memory for those arrays. (Where N is the number
of language-list strategies). It also reduces the total number of
indexOf calls.

Below is a comparison of time spent in createCompactList() during
page load process, compared to master without this and the previous
commit. Measured on localhost with Vector, EventLogging, Interwiki,
and ULS installed; on a page that is a copy of en.wikipedia.org/Messier_87
and its 51 interlanguage links. This page was a featured article
last week. Its count of links seems average compared to other
featured and/or most-viewed articles last week (the other ones
I checked had 23, 43, 52, and 76 langlinks respectively).

|--------------|----------|--------|
|              | Before   | After  |
|--------------|----------|--------|
| Chrome 69    | 77.5ms   | 41.4ms |
| MacBook Pro  | 57.7ms   | 44.4ms |
| CPU 1/6th    | 63.8ms   | 45.3ms |
|--------------|----------|--------|
| Firefox 61   | 12ms     | 10ms   |
|              | 10ms     | 9ms    |
|              | 11ms     | 8ms    |
|--------------|----------|--------|
| Safari 11    | 3.5ms    | 2.7ms  |
|              | 3.3ms    | 2.6ms  |
|              | 3.4ms    | 2.8ms  |
|--------------|----------|--------|

Bug: T127328
Change-Id: I56052e7c01c6a667500773e12c755a7a5f5d9cd0
2018-09-24 17:19:45 +00:00
Niklas Laxström
d3cd069f7e Correct alignment of cog in interlanguage links in Vector skin
Bug: T162381
Change-Id: Ieaa75507d9c73eccbadc03d915bb7107e728fe0f
2018-09-17 18:44:47 +00:00
Timo Tijhof
effcd80471 compactlinks: Optimise performance of DOM logic
The createCompactList() function runs synchronously during the
module execution burst. Due to it visually changing the page, I
won't defer it with rIC for the time being, although that should
be considered for the future. For this commit, I'm trying to make
it fit the budget of <50ms because ULS is currently usually taking
80ms-180ms on desktop (MacBook/Chrome CPU/4), and that's during
batch execution with other modules as well, thus freezing the
UI thread for much longer than that.

constructor:
* Remove needless clone of jQuery object.
  Use $foo instead of $( $foo ).
* Remove creation of 'interlanguageList' and 'compactList' objects
  that are immediately removed and re-created by init().

init/getInterlanguageList:
* Use the HTMLElement.lang and HTMLAnchorElement.href properties
  directly instead of the DOM getAttribute().
  This means stores a full url instead of a relative url, which
  should help avoid other bugs in the future.
* Remove needless jQuery() constructor and jQuery.text() call.
  Use Node.textContent directly instead.
* Use HTMLElement#querySelectorAll instead of jQuery#find().

init/getCompactList/../filterByLangsInText:
* Avoid jQuery() constructor and jQuery.attr(),
  use the HTMLElement.lang property directly.
* Avoid jQuery() selector, call querySelectorAll directly.

init/getCompactList/../getCommonLanguages/../getFrequentLanguageList:
* Avoid temporary array copies from concat() and function overhead
  with forEach() and filter().
  Instead, keep only a single array, and iterate it once.

init/getCompactList/../filterByBadges (~10m -> ~0.5ms):
* Use one query via $(), instead of two queries $()+find().
* Use $.map() directly instead of map()+fakejQueryObject+toArray().
* Use querySelector(One) for the child instead of $()+find().
* Use HTMLElement.lang property directly.

init/hideOriginal (~5m -> ~0.8ms):
* Use querySelectorAll() directly instead of jQuery find().
* Set HTMLElement.style directly instead of jQuery() css().

init/render/addTrigger:
* Use createElement() and direct properties instead of $(), addClass(),
  prop() and text().
* The mw.msg() calls use text() and jqueryMsg#parser which is
  expensive.
  Use plain() for 'ext-uls-compact-link-info', which doesn't need parsing.
  Keep text() for the other message, and document why.

init/listen:
* Use async Deferred#then() instead of sometimes-sync Deferred#done().

Bug: T127328
Change-Id: I424c34fb82c8e95407f7b934e6d42019becbf909
2018-09-13 11:11:42 +00:00
Bartosz Dziewoński
f0ad6be4ab Avoid reflow (FOUC) due to ULS link on Special:Preferences
Rather than building the link in JS, which is delayed until the JS
code loads, we build it in PHP and hide it from no-JS users with CSS.

Change-Id: If0c3a4dc137d8bf6cf24957dd063bd0a39791d2e
2018-09-09 10:52:17 +00:00
Fomafix
971e4c742d Simplify by using native JavaScript instead of jQuery
Still use $.each for iterating over an Object because there is no
adequate function in ES5.

Change-Id: Idbec13c471e75a9cd5d67204d54bededdbd5582b
2018-09-07 22:35:13 +00:00
Timo Tijhof
4e067715dc Remove redundant closure aliases
'mw' are '$' are globals, always have been, and aren't going
anywhere. They're every bit as real as their longer versions.
If anything, the longer ones are less "real" or 'stable" because
they're not used internally by RL and easier to accidentally
replace or override. For anecdotes and history, see 91f950d6b0.

Change-Id: I526fb8c961d9477992d88f2780a0ff4cbdc51923
2018-09-07 19:23:17 +00:00
Timo Tijhof
e58be7c411 ext.uls.eventlogger: Remove unused $.Callbacks() indirection
It is created, unconditionally fired only once (right after creation),
and then used only with add(), which becomes a synchronous
self-call.

I've searched in Wikimedia Git and Codesearch, and found no uses
of `logEventQueue` or `mw.uls.eventlogger` outside this file.

Change-Id: I3832bcb409fc919c2078e583d50e20413dede163
2018-09-07 19:23:03 +00:00
Amire80
635cada69b Revert "Simplify by using native JavaScript instead of jQuery"
This reverts commit 0fbdbc2c41.

Bug: T203750
Change-Id: I1bca27b2087f6fc1bfad153f17f4650c52786a7f
2018-09-07 08:57:16 +00:00
Fomafix
0fbdbc2c41 Simplify by using native JavaScript instead of jQuery
Change-Id: I2ca5fbb21ac473f482579a944e5ab68c9374191c
2018-09-04 00:32:12 +00:00
Fomafix
72fb42cdba Remove support for MediaWiki 1.29 and earlier
extension.json already requires "MediaWiki": ">= 1.30.0".

Change-Id: Ic460e6364967cd7b0367e66f613077c424bd8f19
2018-08-31 21:41:42 +00:00
Niklas Laxström
fa9cea4627 Support UI language change when global preferences are present
Notable changes:
* First query global preferences to detect if global language setting
  is in use. If there is no global language setting, or if GlobalPreferences
  extension is not installed, it will fall back to changing the language
  as usual. If global language setting is found, it will add an override
  instead.
* If a local override is added, the undo tooltip is different and links to
  the global preferences page. The task design shows mw.notify style popup
  located on a bottom right corner (LTR). I deviate from the design and
  re-use the old undo tooltip with a different message instead, for
  consistency. The message is chosen depending on whether local storage
  value `uls-gp` is set to '1' (set in mw.uls.changeLanguage).
* I removed one use of deprecated mediawiki.api.options module. One other
  use still remains.
* I changed tooltip text generation from html acrobatics to use
  mw.message.parseDom. Because of that I also had to move the click handler
  to avoid buildup of click handlers.
* In message documentation fixed acronym -> autonym.

Bug: T198206
Change-Id: Ie2ed792e222be919522bd1cdea98042515a0619d
2018-08-30 22:40:17 +00:00
petarpetkovic
5a1da4dbaa Remove jQuery.inArray usages
Replace jQuery.inArray with JS native Array.prototype.indexOf

Change-Id: I0031f0385e440a34846334d158425182542a9ac9
2018-08-24 20:18:53 +00:00
petarpetkovic
54a3313e1a Remove jQuery.grep usages
Replace jQuery.grep with native JS Array.prototype.filter method.

Change-Id: Idbf88a516061ff46211f72e8b93e11f5fa838e88
2018-08-24 20:43:33 +02:00
petarpetkovic
6ce67b8dda Use JS native methods for array manipulations
* In mw.uls.addPreviousLanguage, jQuery.map was used for what is
essentially filtering, not mapping. Filtering was used to remove
one element from array. Use Array.prototype.splice instead.
* In mw.uls.getFrequentLanguageList, replace:
- jQuery.each with Array.prototype.forEach
- jQuery.inArray with Array.prototype.indexOf
- jQuery.grep with Array.prototype.filter

Change-Id: Id2208b3c89e982f91f49981d18e588ae8ce3b130
2018-08-24 20:07:49 +02:00
petarpetkovic
134c9b134f Remove duplicated usage of article "the"
Bug: T201491
Change-Id: Id6ee7ace11e7fbadd0323642c06021f89362e9f2
2018-08-08 14:36:33 +02:00
Amire80
cda999605a For the ULS instance in the IME selector, read the autonym from ULS data
Sometimes new languages don't appear in wgULSLanguages.
For these cases, read their autonym from ULS's own langdb.
Otherwise they are not shown at all.

Bug: T198080
Change-Id: I2bef16811c6a0bdaef5db94719d7b76fe00c6e04
2018-06-25 15:02:41 +03:00
petarpetkovic
9c0c918bab Replace jQuery.proxy() with Function.prototype.bind()
Also, one immediate invocation of jQuery.proxy() is replaced by
Function.prototype.call()

Change-Id: Ibbdbe6413793c113d4de1c67cfcb7d95676565b2
2018-06-18 06:56:09 +00:00
Fomafix
162cc56f02 Reorder functions to avoid forward references
Remove /* eslint-disable no-use-before-define */.

Change-Id: I001b50050d8c492aed99a3620b6fc03ffb29e135
2018-06-11 23:44:47 +00:00
Volker E
f3d48beef7 build: Bring SVGO optimization to build step
Enabling SVGO automation with 'grunt-svgmin' and conservative
plugin settings to build step, among those:
- enable removeRasterImages and sortAttrs,
- disable cleanupIDs, removeDesc, removeTitle, removeViewBox &
  removeXMLProcInst and
- make use of pretty, indent and multipass options.

Also updating SVG accordingly.

Bug: T185596
Change-Id: I0030a711a2947ca8c1eb4e56d8540661c72a2639
2018-05-20 08:55:05 +00:00
Santhosh Thottingal
c818cf2800 Remove temporarily forced postcss-less version
postcss-less issue is now resolved and new version released.
Also a spacing related error is fixed

Change-Id: I0d768d29d2003fb4373436d957efcf0cec84286f
2018-03-27 16:13:32 +05:30
Amire80
04a8eeb62c Switch the current tab to the new language only if it was not Ctrl/Command/Shift-Click
Bug: T189582
Change-Id: Ib497be874b3d559a8f1715d09160378f0c43881e
2018-03-26 15:40:56 +00:00
Amire80
75bf99124a Parse the parameters to no-results-found event as an object
This fixes a bug in
I2ff9ce9b40df16ed3c5e6970fb3b691af08cedec

Bug: T179402
Change-Id: I770211c666ad530f6a4bb618c6f2c3521aa05a8e
2018-03-20 09:17:55 +00:00
Amire80
d6630a4780 Log the context of the ULS in which no search results were found
Relies on updates to EventLogging schema. Diff:
https://meta.wikimedia.org/w/index.php?title=Schema%3AUniversalLanguageSelector&type=revision&diff=17799034&oldid=7327441

Bug: T179402
Change-Id: I2ff9ce9b40df16ed3c5e6970fb3b691af08cedec
2018-03-08 16:03:33 +02:00
Niklas Laxström
9a6e8a2bc9 Fix custom no results again
Since we added .i18n() call to upstream, it started overwriting
our text from the default data-i18n. Change data-i18n instead.

Bug: T188860
Change-Id: Ib7e9fb9590ace9c2a4ce2e2afb5a740ae4346be6
2018-03-05 14:17:12 +01:00
Kunal Mehta
67d470a9e7 Use SPDX 3.0 license identifier
SPDX released version 3 of their license list (<https://spdx.org/licenses/>),
which changed the FSF licenses to explicitly end in -only or -or-later
instead of relying on an easy to miss + symbol.

Bug: T183858
Change-Id: Id75a37eab27282ca7797fa3e6ceb92750c59477f
2018-03-03 19:27:21 +00:00
Fomafix
74d59bf306 Remove window.pluralRuleParser
The module 'jquery.i18n' was removed in 1312b905f2 because it is
already in core. The mapping from mw.libs.pluralRuleParser to
window.pluralRuleParser is not needed here anymore.

Change-Id: I00993d43578368ba3ebc1f4055cabf4904e45783
2018-02-16 16:32:59 +01:00
jenkins-bot
ee21e016be Merge "Custom no-results message for compact links search" 2018-02-13 13:11:29 +00:00
Niklas Laxström
fca9b5c0e6 Make ULS trigger and settings more keyboard accessible
It's now possible to tab to "display settings" and "input settings"
and access them with enter or space. Also escape can now be used
to close the settings screen.

The ULS trigger in interlanguage position is a button to get
native accessibility features.

Also removed `mw.hook( 'mw.uls.settings.open' ).fire( 'uls' );` as
it didn't seem very useful and there wasn't immediately obvious
place to put it. The existing click handler could be removed because
the settings dialog themselves place event listeners.

The patch is a bit longer than strictly necessary because the CSS
was mess (rules in different modules, poorly organized) and I had
to bring related rules together to understand them.

Bug: T52793
Change-Id: Id37c2665b1c97b81ef57be27a1abfae0db6b34d5
2018-02-12 17:57:04 +01:00
Santhosh Thottingal
75e80446cb Reduce the padding for ULS trigger icon in personal toolbar position
Bug: T175769
Change-Id: I49b533fd7adbbd5baa8dbbb0b0c6670ab8d1e692
2018-02-12 12:57:39 +05:30
Santhosh Thottingal
28c455feaf Custom no-results message for compact links search
Bug: T182539
Change-Id: I0e3bb7104015a5244290058dc0ac5b3c17b1ea20
2018-02-08 10:38:06 +05:30
Santhosh Thottingal
453a4458e6 Update jquery.uls to 3161b34
* language-data update: Add Western Armenian to known languages
* Stop rendering languages twice on initial display
* Style adjustments for no-results
* package.json: maintenance updates
* Localisation updates

In addition to the jquery.uls update, this patch contains local
style customization for no-results view as specified in T175235.

Bug: T175235
Bug: T185086
Change-Id: I51645554413dbaa80e02fec8f9115f4de409fb06
2018-02-06 08:17:20 +00:00
jenkins-bot
aed8d0bec2 Merge "Update jquery.uls to d122f37" 2018-01-30 11:45:06 +00:00
Santhosh Thottingal
fd7b9ec652 Update jquery.uls to d122f37
* Do not group search results by region
* Replace ULS trigger icon with monochromatic one
* Custom no-results message support
* Upgrade jquery in the example to 3.2.1
* Use .siblings to locate the suggestions, clear elements for efficiency
* Removing assigned ids to elements that are not guaranteed to be unique
* Use eslint and stylelint, fix all errors

Update the language icon in ext.uls.pt module with new monochromatic one
Also use custom style for monobook skin.

Bug: T182539
Bug: T175769
Change-Id: I7341064cd0de367d933048c4800f951568747d11
2018-01-30 15:10:01 +05:30
Santhosh Thottingal
f536b3969d Prevent page scroll to top while clicking on language settings icon
If the language settings window is not visible, all calculations
will go wrong and page will scroll to 0 position.

So call scrollIntoView only when the element is visible.

The $.fn.scrollIntoView defined in jquery.uls core may be unnecessary
now since it is available natively on DOM elements.

Bug: T178188
Change-Id: I461fa9eb7c51cd277bebd3a04cfcc0eed9793c4e
2018-01-04 10:17:03 +05:30
Kartik Mistry
d969c2a804 Remove non-default Saab font for Punjabi
* Not updated from upstream; last release is buggy as per upstream.
* Punjabi language has good font support in all modern operating
  systems.

Bug: T180422
Change-Id: I323953b4c6293df89034f05e0c2e13a96b42dc34
2017-12-05 06:19:13 +00:00
Volker E
e3ad0f3be5 Move “Language settings” dialog headline up
Moving “Language settings” dialog headline up to put on a
virtual line with ToggleButton and apply `#000` to it as
dialog titles elsewhere.

Bug: T175295
Change-Id: Id2d7a7b90996ec7be96e8bafd7bbe78eb8f0e1c9
2017-12-01 05:03:43 +00:00
jenkins-bot
603cfea7d0 Merge "Improve ULS language search api" 2017-12-01 04:47:30 +00:00
Ed Sanders
447c09d462 build: Update linters
Change-Id: I45540db95711b461ded3630894bd1f149c24ff19
2017-11-29 15:02:47 +00:00
Volker E
72cf0a7f23 BetaFeatures SVGs: Merge logo and title path
In the process of updating BetaFeatures logo it got
identified that the logo is better marked up as one
`<path>` element.
Follows up I57f2f4890e980992db2c25506bbdc330530d67b1

Bug: T180427
Change-Id: I3bd8eb032943e00c93975db2911a9f7d26c0bcb2
2017-11-28 16:06:05 -08:00
Volker E
300d69b92d Unify BetaFeatures SVG screenshot markup
Unifying BetaFeatures SVG screenshot markup by:
- changing `id`s for better readability,
- sorting attributes,
- using full pixel values where applicable and
- generalizing attributes on `g` where applicable

Also fixing a visual glitch in the RTL version.
Follows up Idace90e945a2bd5efa869ee717224274fd94e91a.

Bug: T180427
Change-Id: I57f2f4890e980992db2c25506bbdc330530d67b1
2017-11-27 19:40:49 -08:00
Niklas Laxström
e87dd20cdd Improve ULS language search api
* Store prefixes and infixes separately in the data
* First match language code, then prefixes, then infixes
* Try to use suggestion either in user language or autonym first
* use formatversion=2 to avoid escaping Unicode

Using Language::fetchLanguageName might can have a small
performance impact. On the other hand there is now check
to skip languages we already found, avoiding some fuzzy
matching.

This is in a preparation for a change in jquery.uls to use
the search API more, while trying to reduce the amount of
weird autocompletion suggestions we show to the user.

Bug: T73891
Change-Id: Id94c5352d9a591969bf90144d1d2d5e758d08301
2017-11-27 14:57:42 +01:00
Kartik Mistry
ca45dc7404 Update eslint and stylelint and fixes
Change-Id: I02e615e0efa95b673702f1ce8c957a37397ced13
2017-11-25 08:34:04 +05:30