Commit graph

40 commits

Author SHA1 Message Date
Eric Gardner
5ddd90fd76 Add polyfills for ES6 array methods
Adds the MDN polyfills for Array.prototype.find, findIndex, and
includes to core, along with a skip function. Polyfills live a
single "es6-polyfills" module in case additional similar polyfills
need to be introduced in the future.

Introducing these in core will allow certain extensions
to stop shipping local copies.

Bug: T264135
Change-Id: I37953f6fcad693a8d25e1a19764abd55bbbbb242
2021-04-21 14:43:27 -07:00
James D. Forrester
5a622b6a2e build: Upgrade eslint-config-wikimedia from 0.17.0 to 0.18.1
Change-Id: I5e3687be2b197134578126e1b890ee37dbc1bc1b
2021-02-18 08:39:09 -08:00
James D. Forrester
b78aa4e959 Update OOUI to v0.39.2
Release notes:
 https://gerrit.wikimedia.org/g/oojs/ui/+/v0.39.2/History.md

Bug: T214477
Bug: T254800
Bug: T255162
Bug: T255316
Change-Id: I6de36ca2ba279dc11d18bdff3c5d138444a13361
Depends-On: I21e2ac16e1a963042a6d5d0513f7f041332793da
2020-06-24 15:22:57 +01:00
Ed Sanders
a0b717fcb0 Documentation fixes for upcoming ESLint config change
Change-Id: I1ca2bf9d31b20317e8f8c5992ebccc4b0a05451a
2020-05-16 20:02:13 +00:00
suecarmol
6224ffd03c Replace toast with OOUI popup on watchlist message
When watching a page, a toast appears with a message to confirm it has been
watched/unwatched successfully. This replaces the toast with a OOUI popup.

Bug: T249259
Change-Id: Ib1b8e31ce8e6fe271cb0d6e5fbaf80bc65360da1
2020-05-06 19:53:22 -05:00
Timo Tijhof
01dae6ff8a jquery.color: Merge $.colorUtil back into this module
I split this out of it back in 2011 with 83a7822df7.

I don't remember why. I think it had something to do with
Special:JavaScriptTest where I wanted to do something with colors.
Having those functions is useful in theory, but that doesn't require
its own module.

Change-Id: I8815d32c7072da83ddb9fbf955534d1f954692ba
2019-09-11 05:12:22 +01:00
James D. Forrester
cefb64f9d8 resources: Upgrade OOjs from v2.2.2 to v3.0.0
Change-Id: I2eaf300015b2954479f5d1d0711ec934a9aa294b
2019-09-04 15:53:45 -07:00
Timo Tijhof
ed6e38178b resourceloader: Merge mediawiki.legacy.wikibits into mediawiki.base
Still executed under the same conditional, but no longer exposed
as its own public module bundle.

Change-Id: Ifba3a73b184ce02eeeeb2ccce6d4aece732dea13
2019-08-03 21:49:20 +00:00
Volker E
fe3f47ce3b Update OOUI to v0.31.3
Release notes:
 https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md;v0.31.3

Bug: T193731
Bug: T194523
Bug: T217381
Bug: T218408
Bug: T219033
Bug: T219826
Depends-On: I94d1fd4398ec92c2ec63ebf1e57b3b4fc72bd76a
Change-Id: Ibb276860815fc29beaea131401bb5dfeca5159d6
2019-04-04 14:58:58 -07:00
James D. Forrester
7cadf392f6 resources: Rename oojs-ui file paths to ooui per general branding
No change to the module names yet.

Change-Id: Ica33520b0128bd56dc06c8951bdc6932fce041fe
2018-09-10 14:35:45 -07:00
Timo Tijhof
8260f606da jquery.expandableField: Remove module unused since 1.22
Was originally created for Vector, which was originally part
of MediaWiki core. It hasn't been used for a while, and Vector
is in its own repository now.

Found 0 uses of this anywhere in Wikimedia Git, nor elsewhere
indexed by MediaWiki Codesearch.

Bug: T202154
Change-Id: I72ab5ad7f25be87b2f6d2f5f41a672b6a48b8005
2018-08-17 20:08:08 +01:00
Timo Tijhof
b7b84d55d4 resourceloader: Embed 'mediawiki' directly in startup response
Embed the essential files to define mw.loader directly as part of
the startup module.

* This means the internal 'mediawiki' module no longer exists.
  This is safe to remove because:
  1) While registered server-side for loading from startup.js, a PHPUnit
     structure test disallowed being specified as a dependency.
  2) Anything that attempted to load it client-side failed because the
     module was marked in the registry as 'raw', thereby excluding it
     from the data sent to the client-side. As such, it was seen as an
     unknown module that the client refused to fetch from the server.

* Deprecate getStartupModules() and getLegacyModules().
  These are no longer needed. There are no known callers anywhere in
  Wikimedia Git or elsewhere indexed by Codesearch, but easy enough
  to leave as no-op for one release.

* Remove ResourceLoaderRawFileModule class.
  No longer needed. Was created as a hack specifically for the 'mediawiki'
  module so that it would not leak global variables in debug mode.
  It has no usage anywhere in Wikimedia Git, nor elsewhere in Codesearch.
  Remove without deprecation given this was meant to be a 'private' class.

* Introduce (private) getBaseModules(). Previously, this list only existed
  locally in getStartupModulesUrl() by merging getStartupModules() and
  getLegacyModules(). This value was factored out into its own method.

* Make getStartupModulesUrl() private and rename to getBaseModulesUrl().
  It is only used internally to export the 'baseModulesUri' value.
  Its name was already confusing before, but it would've been even more
  confusing now given it doesn't even call getStartupModules() any more.

Bug: T192623
Change-Id: I14ba282d7b65e99ca54b7c2f77ba6e1adaddd11c
2018-06-27 17:06:35 +00:00
Timo Tijhof
5bf64e7f72 Remove the unused 'jquery.farbtastic' module
This was added in (r99923; 4d8c7e96ed) while reviewing the
'gadget-preferences' branch in SVN of the Gadgets extension during
development of MediaWiki 1.18, intended for use in a color picker
on Special:Gadgets as part of an experimental feature that was
never completed (r94051).

The module has no usage anywhere in Wikimedia Git, nor in any
third-party hosted repos indexed by MediaWiki Codesearch, nor
anywhere on-wiki at WMF in site scripts (per mwgrep).

Bug: T193826
Bug: T192623
Change-Id: I8ed6c09dc7efd750ad4688b895b2e3f808a0e52b
2018-05-23 16:42:32 +00:00
Timo Tijhof
16c8d89357 resources: Move the remaining src/mediawiki/ files
Single-file modules to src/, the remaining as sub directories.

A few highlights:
* mediawiki.Upload.BookletLayout. (stylesheet: no image references)
* mediawiki.feedback - Also move the image to its own images/ subdir.
* mediawiki.searchSuggest. (stylesheet: no image references)
* mediawiki.toc. (stylesheet: no image references)

Also updated any other references to 'src/mediawiki/' that I could find
in core:
* Fixed references in docs/uidesign/*.html
* Remove redundant exclude from jsduck.json.

After this, there are 4 files remaining in src/mediawiki,
which are the 4 files used by the actual 'mediawiki' base module.

Bug: T193826
Change-Id: I8058652892a78b3f5976397bd850741dd5c92427
2018-05-09 23:44:22 +01:00
Timo Tijhof
544f42899c build: Convert jsduck.json whitelist to blacklist
This will make it a lot easier to move files from src/mediawiki/
to src/ without having to enumerate each file because previously
it was included by "src/mediawiki" entirely, but we can't include
"src/" entirely because of the implicitly excluded files.

Bug: T193826
Change-Id: Ib1b1a2e851d2cb8f1426a0d16343adcd6344a14f
2018-05-09 19:35:44 +01:00
Timo Tijhof
5924bdd50d mediawiki.notification: Move files to their own directory
* Reduce clutter in src/mediawiki/.
* Make it easier to see from the repo structure which files
  belong to this module, and which files not. For example,
  'mediawiki.notification.convertmessagebox' and 'mediawiki.notify' are
  logically related, but not actually part of this 4-file module.

Bug: T193826
Change-Id: I274323dffa8af1d046beb21d88f633f432a6ebbc
2018-05-09 17:31:07 +00:00
Bartosz Dziewoński
777336288b Rename jquery.byteLimit→lengthLimit, mediawiki.widgets.visibleByteLimit→visibleLengthLimit
In change Ia1269fd898dabbcf1582618eab46cef97e10a3b1 I want to add
functions that deal with codepoints instead of bytes to these modules,
after which the names wouldn't make sense. Doing this in a separate
commit to make the diffs clearer.

Change-Id: Ia554eb2265248e72b04fce69a662a9db1a5f1275
2018-02-23 20:18:02 +01:00
Bartosz Dziewoński
4f82383582 Add mediawiki.widgets.visibleByteLimit to JSDuck index
Change-Id: Iaad0e4aad3e78294667e82b4fbd009e241f765e8
2018-02-10 20:58:14 +00:00
Bartosz Dziewoński
657ff95613 jquery.textSelection: Document methods and parameters
Change-Id: I9e4112a75ae7abc8c479efc39a438c3b59933418
2018-02-06 20:41:47 +00:00
James D. Forrester
e5a906ae07 resources: Remove deprecated 'jquery.autoEllipsis' module
Change-Id: Ib181b814953bac0153dead95a25040ed2d4ca7ca
2017-10-31 17:35:21 -07:00
James D. Forrester
caaae4e6db resources: Remove the deprecated 'jquery.badge' module
Bug: T178450
Change-Id: I4540e5959ea15323b1f54be51fbeea6ca3f35169
Depends-On: I78543abe412d04d61a05e76702cb7681d5fad61d
2017-10-25 21:10:57 +00:00
James D. Forrester
d666212a47 jsduck: Explcitly name library files so we don't pull in CSS files
Change-Id: I8ee7c8a609543237f8280c190a9806cf5079de96
2017-08-01 13:57:36 -07:00
Roan Kattouw
1cf0acaa62 Enable jsduck for resources/src/mediawiki.rcfilters and make pass
Change-Id: I2a29689e2697108a5c5206cc61b36b5fb838182f
2017-07-27 18:16:47 -07:00
Timo Tijhof
f53fd6fd47 Remove unused 'jquery.arrowSteps' (deprecated in 1.28)
Was only used by UploadWizard, and no-where else in Wikimedia Git.
UploadWizard has its own copy as of last year. (T144974)

Change-Id: I3d426f67f8ba061d10434469f261cb725bd672d6
2017-03-17 17:13:26 -07:00
Ed Sanders
edf4dfe756 Add exceptions in mw.Title where mb_strtoupper doesn't match String.toUpperCase
Bug: T147646
Bug: T141723
Change-Id: Ic7a3d0cebbf4aec507db195ba8f587cecc1992aa
2016-11-23 18:45:44 +01:00
Bartosz Dziewoński
e2ba8f7591 Revert "Remove jquery.arrowSteps module"
It should probably be deprecated first after all.

This reverts commit 6fba9a7dc6.

Bug: T144974
Change-Id: I830fbfc2e453be6b18d43775a8aa1a366690907c
2016-09-15 16:28:42 +00:00
Paladox
6fba9a7dc6 Remove jquery.arrowSteps module
It was unused by any other extension
https://github.com/search?q=user%3Awikimedia+jquery.arrowSteps&ref=searchresults&type=Code&utf8=%E2%9C%93

and only used for UploadWizard so it was merged into there with
I054674c7025ad37a8592ca82ce7ce0efd41d393f

Depends-On: I054674c7025ad37a8592ca82ce7ce0efd41d393f

Bug: T144974
Change-Id: Id9b6af1f1774bc33ceb024126030eefdc43beba0
2016-09-13 15:32:19 +00:00
Timo Tijhof
debe691b63 jsduck: Sort list of globals in jsduck.json
Change-Id: Ifb920c055740575edcda0b4f460cc8c5b377ba87
2016-05-20 03:34:44 +00:00
Timo Tijhof
a40190f5a5 mw.loader: Optimise hot code paths in addEmbeddedCSS()
addEmbeddedCSS() is a big part of the hot code path that moves a module from
state "loaded" to "ready". Especially on repeat views (where most loads
are cache hits from local storage), this is the main thing that JS spends time
on before running scripts (which must wait for the styles to apply first).

* newStyleTag: Avoid use of jQuery.
  Before
  - jQuery()
    - jQuery#init
  - jQuery#before
    - jQuery#domManip, jQuery#buildFragment, jQuery#inArray
    - Node#insertBefore
  - Node#appendChild
  After
  - Node#insertBefore
  - Node#appendChild

* getMarker: Store raw Node instead of jQuery object. Makes it easy for other
  code to avoid jQuery. And for those that don't, creating a jQuery object is cheap.
  Also use querySelector directly since it's ensured by our feature test.
  The only cases jQuery/Sizzle accounts with querySelector is IE8 (already excluded
  by our feature test), and Opera 12 (in an edge case that doesn't apply to this
  selector).

  Before
  - jQuery
    - jQuery#init
  - jQuery#find
    - Sizzle
    - querySelectorAll
  - jQuery#pushStack
  After
  - querySelector

* addEmbeddedCSS: This was needlessly calling the fairly slow .data() method for
  all style tags in all browsers. It should've been guarded by IE<=9 if-statement.
  The consumer of this data property already had that check. The setter did not.

  Before:
  - getMarker
    - ..
  - newStyleTag
    - ..
  - jQuery#data
    - jQuery#each, jQuery#data, internalData, ..
  - fireCallbacks
    - ..
  After
  - getMarker
  - newStyleTag
  - fireCallbacks
    - ..

Change-Id: Ie5b5195d337b5d88f0c2ca69d15b13a4fb9d87e2
2016-05-19 19:03:22 +01:00
Mark Holmquist
7b5194988e Add Blob to accepted types for uploads
From https://developer.mozilla.org/en-US/docs/Web/API/File :

A File object is specific kind of a Blob, and can be used in any
context that a Blob can. In particular, FileReader, URL.createObjectURL(),
createImageBitmap(), and XMLHttpRequest.send() accept both Blobs and Files.

Change-Id: I171f884fc4ada6180e5c605a44b27044fc03f26e
2016-02-02 21:09:22 +01:00
Timo Tijhof
46a01c422b Restructure /resources/src/mediawiki.page/
Follows-up 0bfdd927.

Change-Id: I65b9343ea002c332323ededf4e328e4463faf698
2015-09-28 20:18:17 -07:00
Timo Tijhof
0bfdd927be Restructure /resources/src/mediawiki.api/
Re-do Ifbb0f6751 in a smaller scope as a first step.

Change-Id: I346f3587d3bfeaf0fe3467cd1f4dcf2d134ecc08
2015-09-28 20:09:21 -07:00
Mark Holmquist
c642d2c1a1 Add frontend API for uploading via iframe
Coming next: File API support, stash support

Bug: T64513
Change-Id: I06fa61e7155efe8126ba12cda9376c37f1c45e8e
2015-07-13 17:40:50 +00:00
James D. Forrester
9069b9ce85 Follow-up 727454f: Add mediawiki.widgets to jsduck
Change-Id: I1715c5bbca8735de8c391dee4e2cec8269414acf
2015-06-01 16:33:21 -07:00
jenkins-bot
b2f4fd38db Merge "Add pluggable talk page poster and use it for mediawiki.feedback" 2015-04-06 22:14:11 +00:00
Matthew Flaschen
061b987f1c Add pluggable talk page poster and use it for mediawiki.feedback
The core implementation will only support wikitext.
Flow will add its own implementation, and it can be used for any talk
page system identifiable by content model.

Bug: T91805
Change-Id: Ic69acafb24aa737536fe3a074e1958690732f0a7
2015-04-06 14:10:23 -07:00
Timo Tijhof
cf3e0e2efb jquery.suggestions: Convert documentation to JSDuck format
Change-Id: I39aba7f3f0c9d397f26934446e3a5ef686d84d86
2015-04-03 21:48:28 +01:00
Željko Filipin
2cc78fd8f8 Fixed Style/FileName RuboCop offense
$ bundle exec rubocop
Inspecting 25 files
.C.......................

Offenses:

maintenance/jsduck/CustomTags.rb:1:1: C: Use snake_case for source file
names.
^

25 files inspected, 1 offense detected

Bug: T91485
Change-Id: I91b43362f265a05284495727dab5465e1c4f0542
2015-03-18 18:45:54 +01:00
James D. Forrester
97c4e93eef resources: Move to library version of jquery.client
The jQuery Client library is no longer mastered in MediaWiki, and is
instead a proper, published library, which is now tagged as v1.0.0.

Change-Id: Idd19d738b392a5f742fef6f98c885e8c391a5cbf
2015-03-11 16:47:16 -07:00
Timo Tijhof
3bbd27aa49 Rename JSDuck config to standard 'jsduck'
* Move configuration to /jsduck.json per standard. This way
  it can be run as plain '$ jsduck' without needing a maintenance
  script or custom Jenkins job. Similar to JSHint, JSCS, Grunt,
  and Gem etc.

* Move --processes=0 from maintenace script into config file.
  This should've been in the config file all along and serves as
  workaround for https://github.com/senchalabs/jsduck/issues/525.

* Use grunt-contrib-copy instead of a symlink for resources.
  For local development a symlink works fine, but for publishing
  from Jenkins to doc.wikimedia.org the /docs/js/ directory needs
  to be standalone. This was previously done with a manual post-build
  step that added an additional rsync, but this logic should be
  in the repository so that the doc entry point can be simplified
  and standardised to 'npm run-script doc' for all projects.

Change-Id: Iaaaac50ee78dd9ff8f24f1ef3a3685ad51cf33b2
2015-03-09 18:10:00 +00:00