Commit graph

124 commits

Author SHA1 Message Date
Fomafix b799a886ca Remove redundant closure for all modules with packageFiles
Modules loaded with packageFiles are always executed in module scope
(with a closure), even in debug mode.

The behaviour of non-packageFiles debug mode is the only reason files
have closures.

https: //www.mediawiki.org/wiki/Manual:Coding_conventions/JavaScript#Closure
Change-Id: Idd7ffde7900adbca914c43a6bf7cb1b3fbf92bfa
2024-03-06 15:07:43 +00:00
Ed Sanders 6b074036b4 build: Update linters
Change-Id: Id75edd20f605550f21266164c29e2c5f52254cbb
2023-08-16 17:10:28 +01:00
Jon Harald Søby 499c71114a Stop using autoMsg and use mw.messages directly instead
WikiEditor has a clever functionality where you can enter a message
key directly by using [key]Msg syntax in the object definition. While
that may have been a clever approach, it led to tons of messages
in this extension having to be marked as RawHtmlMessages because
they could potentially be parsed as HTML. Thus I am replacing all
of these instances with using mw.message explicitly instead, with
the necessary method attached.

The autoMsg (and its cloned autoSafeMsg) functions have had FIXME
comments attached since 2018 saying that these methods are
unnecessarily complex and should be replaced with using mw.messages
directly.

This solves a lot of problems for translators in Translatewiki, and
hopefully makes the code more straightforward and easier to understand
for those reading it down the line.

I would like to remove the autoMsg and autoSafeMsg functions
altogether, but their functionality is still in use in a few
extensions (and potentially on-wiki code), so we would have to
clean up that first.

Bug: T154891
Bug: T294760
Change-Id: I2835341867df85552579ea6927cd39a6f889fa6b
2023-07-06 10:39:24 +02:00
Jon Harald Søby 5c18abff00 Move reference-specific settings to the Cite extension
These config settings were specific to the Cite extension,
and are misleading on wikis that don't have that extension
installed. Move the functionality to the Cite extension
instead.

Bug: T339973
Depends-On: Ib3fdc897dd3330f69c5832003d4c3cb1e6dba2f3
Change-Id: Ib619706ddfca724990e1db2d51f12a2eb05f6a72
2023-06-22 14:07:29 +02:00
Sam Wilson 4da4db0472 URI-decode external link page names when turning them into local links
Decode local page names after the "looks like internal" dialog,
to avoid invalid page names. If it can't be decoded, use the full
page title string.

This doesn't decode text in the ArticlePath, but that sounds like it's
much rarer and could perhaps create other issues.

Bug: T25789
Change-Id: Iac03573515affbc509f674db155767a81bad8b9f
2022-04-21 11:03:04 +08:00
Thiemo Kreuz fa64decfce Partially revert mistake in JavaScript code optimization
The mistake here was that these are two different fields, but with
variable names that look very similar. Only 2 characters differ. :(

 insertLinkLinkTextField.…
 insertLinkLinkTypeField.…

Bug: T304476
Change-Id: I459133d3ba5c327e34c689ad0d3c046116f438a9
2022-03-23 08:47:19 +01:00
Thiemo Kreuz dbb6583bbb Streamline smaller pieces of JavaScript code
The main idea is to make the code shorter and easier to read.

One notable change is to use .test() for boolean tests instead of the
actual .match() function.

Change-Id: Ic43442b75f839906b644d4586c907601f4d5d521
2022-03-04 09:22:07 +00:00
Func fbecf46511 insertlink: Set url mode of title field when switching between modes automatically
Logic under LinkTypeField.setIsExternal() wouldn't emit events about
selection changes, at the mean time TitleInputField.setUrlMode() would
call setIsExternal() and handle everything correctly.
setTouched() is moved forward to actually prevent value being overwritten.

Bug: T302196
Bug: T302201
Change-Id: I5662556394a539073ebf0a17743a260a9d8b0c8c
2022-02-22 15:33:04 +00:00
Sam Wilson 64d5613172 Check for disabled button in click handler
For some reason, even though jQuery UI dialogs know about their
own buttons, they don't know if the buttons are disabled. This
means that it's still possible to submit the dialog when a button
is disabled.

This change (which is mostly whitespace) adds a check in the click
handler to return early if the 'insert link' button is disabled.
It also gives this button a class name, and so simplifies the other
place that refers to the button.

Bug: T298596
Change-Id: I39fea13b1874f851a68cf08243b3e7ccd355d775
2022-02-11 22:53:13 +01:00
Sam Wilson 5c9d867847 Remove out of date invalid link alert
The alert text is now added as a red message under the form field
for the link target text, and there's no need to have an additional
alert because the dialog's insert-link button can't be clicked
while there's an invalid internal link anyway.

Bug: T298596
Change-Id: Ib536b51baae24a6cfe7a7426d039fdf11c4cb150
2022-02-11 15:49:12 +08:00
jenkins-bot 84f26ccfd2 Merge "Properly disable insert-link button" 2022-02-08 04:21:55 +00:00
Ed Sanders 7fea791042 build: Update eslint-config-wikimedia to 0.21.0
Change-Id: I87bca80d107c965296af74e16961cd855d72b806
2022-02-07 17:27:27 +00:00
Sam Wilson 739b93310d Properly disable insert-link button
Use jQuery UI's proper button disabling system, rather than trying
to set attributes manually.

Also remove the alert which used to show when trying to insert a
blank link target, as it now has no use. The functionality was
removed in I3541f438fad9b7e0bf23ead2f2e164e84565d254
when the insert-link button was changed to always disable when an invalid
link was being attempted, but the alert was not noticed at that point
(and nor was this disabling bug).

Bug: T298596
Change-Id: I17c454d6ba336abd0b4eeee0d7166fdf81d25734
2022-01-10 15:35:04 +08:00
jenkins-bot 1e95619723 Merge "Set link type radio when confirming looks-like internal" 2021-12-21 19:51:38 +00:00
jenkins-bot 0fe853a748 Merge "Move insert-link mode constants to a better location" 2021-12-09 20:13:04 +00:00
Sam Wilson dd1173de39 Set link type radio when confirming looks-like internal
When closing the alert that appears when a link looks like an
internal URL, the link target text was changed but the radio
button was not. This patch rectifies this.

Bug: T295517
Change-Id: Ie0339f3aac8ccfd118c604602ce638539ff67e03
2021-12-08 14:34:11 +08:00
Sam Wilson b8a4fcc998 Fix link-inserter event value when dialog opens
When the insert-link dialog is opened, a change event is manually
fired in order to get the system in sync. This is not optimum,
but until we refactor jquery.wikiEditor.dialogs.config.js it's
a simple way to do it.

The issue was that this manual event was being given an empty string
as the title value, but it should've been the actual current field
value. The reason it's not the same is that when the dialog is
closed with the cancel button, the state of all the fields is not
reset (this is a long-standing design feature of the dialog).

Bug: T293167
Change-Id: I8e2a0a5169b5d2a6d706623dc0c879469acd9afa
2021-12-08 10:00:48 +08:00
Sam Wilson b296fc3578 Move insert-link mode constants to a better location
Also capitalize them and don't keep them in an array.

The data values for the radio buttons are also removed, because
they're not used for anything.

This is a follow-up to Ie40e8bdebe6f1330fc75ea1861f120e51ad58224.

Bug: T293168
Change-Id: I2f6de07f6f82e9e59ab67c771fcd60a68ad577dc
2021-12-07 16:39:11 +08:00
Sam Wilson d96435cd18 Prevent external links from showing as invalid
* When the link target text is changed, only change the URL mode if the user
  hasn't explicitely set the type (internal/external).
* Improve the conditions for the display of the 'external' and 'exists'
  link-target messages.
* Validate the link target (i.e. show messages) not only when the text is
  changed but also when the target type radio is changed.
* Rename the TitleInputWidget.isExternalLink() method to
  looksLikeExternalLink(), to make its purpose clearer.

Bug: T293168
Change-Id: Ie40e8bdebe6f1330fc75ea1861f120e51ad58224
2021-12-06 15:24:04 +08:00
Sam Wilson 79a0d3040e Disable link-insert button if target is empty
Set the opening state of the insertion button (in the insert-link
dialog) to disabled, and also disable it whenever the target field
is empty. This makes it unneccessary to show an alert when trying
to insert a blank target so that code is removed.

Bug: T293167
Change-Id: I3541f438fad9b7e0bf23ead2f2e164e84565d254
2021-11-26 12:45:48 +08:00
Sam Wilson a70bd3876e Fix bug when target looks like internal link
Refactor the code for selecting the first match, so it can also
be called from the look-like button method — this will be changed
once the whole link-inserter dialog is OOUI.

Bug: T295517
Change-Id: I56b289dbf07707b0391b263464bdfd6307142574
2021-11-17 09:27:34 +08:00
Sam Wilson 60be1db1d1 Remove template for insert-link dialog
The HTML template is no longer required, as all three fields are
now OOUI and so provide their own HTML.

Bug: T289214
Change-Id: Id7e02119f00e30244b8dc2048c1f694500151b25
2021-10-13 10:03:44 +08:00
Sam Wilson 0b14ae0666 Change insert-link radio buttons to OOUI
Add new OOUI field for the link-type radio buttons in the
insert-link dialog.

Bug: T289214
Change-Id: Idf80c533e5a17de3e9a57051c0608524b6d45098
2021-10-12 13:01:26 +08:00
Sam Wilson e3e9ebb6cb Change the (insert-link) title field to OOUI
Following-up on I9fb7e66bf925eb9a8260d6245d2a7db54a7a2fec
this converts the link-text field to OOUI.

Bug: T289214
Change-Id: I17f34a8cbf72b80f3916581867e5828d9b129789
2021-10-11 14:45:02 +00:00
Sam Wilson 6384498d75 Switch to OOUI TitleInputWidget for the link-inserter
In order to get a better look-up experience (images, description,
redirects, and disambigutation pages listed last), swich from
a custom title-autocomplete input (that used jquery.suggestions)
to OOUI's standard one (which is used in a bunch of other places
in MediaWiki).

This means a fair bit of code can be deleted from
jquery.wikiEditor.dialogs.config.js, and some of it moved to
the new OOUI classes.

This patch aims to be the minimum required, and so leaves a few
things for subsequent patches (such as converting the other parts
of the insert-link dialog to OOUI).

Bug: T289214
Change-Id: I9fb7e66bf925eb9a8260d6245d2a7db54a7a2fec
2021-10-08 12:43:55 +00:00
Ammarpad 2affca03b3 Revert "Support colon link escapes for categories and files"
This reverts commit e76eba6b96.

Bug: T290818
Change-Id: I88f86935f0686b98105ddb49ede4b773d5e6de54
2021-09-21 18:12:25 +01:00
Alexander Jones e76eba6b96 Support colon link escapes for categories and files
This commit adds bidirectional support for prefixed colons in
internal link targets, such as the ones required by links to files
and categories. It automatically adds a colon to links targeting
pages in the File and Category namespaces (as determined by mw.Title)
and allows an optional colon prefix for all internal links after
the optional whitespace.

Bug: T38227
Change-Id: Ie2801c42da4238555ad7c6544a8412610a528597
2021-07-30 21:59:20 -05:00
Ed Sanders 344da9de80 Move var declarations inline
Change-Id: I841ed46dfde9a6e2a5927e49ac3383d6e17bda66
2021-06-15 15:45:13 +01:00
Ed Sanders 137395538e Fix eslint warnings
Change-Id: I57b11c6b4c6e67bb38bb67a93b06d6d1d3009933
2021-05-23 15:49:49 +01:00
Umherirrender 54af531265 Remove suggest param from opensearch api request
Deprecated in 1.35 (Iec572012de171d02871b8dc3207d2b34d17bf9ef)

Change-Id: Ic9cca2ff6f7372a64a216c65c408454dc2dc7cbb
2021-04-28 19:49:50 +02:00
Umherirrender 3f95a63650 Swap new mw.Title to mw.Title.newFromText to handle invalid input
Avoid failure on invalid user input (like invalid tiles with <>)

Bug: T279298
Change-Id: Iaeb6ca3ab232bbb206f05acfa5c0a14e16945ffc
2021-04-28 01:21:58 +02:00
jdlrobson 9ac850b28a Dialog data attribute action is a DOMElement
After looking more closely at the code, I noticed that
dialogaction is set to e.target or this which is a
DOMElement, not a jQuery Object, thus it doesn't have
the trigger method which explains the error.

Follow up to 760f023f2

Bug: T261529
Change-Id: Ie5f58e33ad385f2abae19264bb2c3cd34a721788
2021-02-25 08:12:16 -08:00
jdlrobson 760f023f21 TypeError: $button.trigger is not a function
This error is generating a large amount of logspam.
Add a check to avoid it, and DRY up.

The issue is caused by line 1182 setting dialogaction to false when
a dialog is closed. Presumably references to this data attribute
remain.

Bug: T261529
Change-Id: Ie75f737980dfcbcc4829def1e5a6894262d73b31
2021-02-10 21:36:27 +00:00
Bartosz Dziewoński d77a69f236 Don't lowercase image caption/alt when prefilling image fields
Judging by the presence of this bug, no one ever uses this feature.

Change-Id: I46a986dd83cf98a8b9f5dcb5bd4c3acb04a6cf5b
2021-01-22 21:23:44 +00:00
Bartosz Dziewoński dc93bf1b37 Parse alternative magic word translations when prefilling image fields
In some languages, image options like 'alt' or 'thumb' can have
multiple synonyms. They were only handled for English (and were
hard-coded).

Change-Id: Ib03932d3d85a5540bea325f2717da3365756a90e
2021-01-22 22:15:16 +01:00
Ammar Abdulhamid ab287ade14 Allow specifying alt-text in File dialog
* Also add expandable help message to explain the alt text field

Bug: T260006
Change-Id: If16ff742d7a8dee4917884e73e9c95bf76350773
2021-01-22 21:37:17 +01:00
pcoombe a822d1c197 Add caption when inserting table
Data tables should always include a caption for accessibility reasons.
So add a placeholder caption when using the "insert table" button.

Bug: T252350
Change-Id: I6773e2274007946de516ae34e841f66ad20ebc0c
2020-05-11 11:09:23 +01:00
Alexander Jones 884991e4a0 Localize numbers before passing to mw.msg
This commit localizes numbers before passing to mw.msg. This occurs
in two places, the successful replacement count and the error message
where too many cells are used in the table tool. The comment above the
second call was not correct, as the existing message used a substitution.

Bug: T244812
Change-Id: I00f83bd478bc42cb536edceba2bcc9daf0b13b3d
2020-03-27 14:04:27 +00:00
Fomafix 9542561b9c Preload modules of the file upload dialog
This prevents a delay when showing the file upload dialog.

Change-Id: I0c29def8e65302078d4fd528abee7c07373803e7
2020-03-03 06:26:10 +01:00
Fomafix 47a7e21216 Lazy load the modules for the upload dialog
This reduces the initial loaded modules.

Also add the dependency on module 'oojs-ui-widgets' because
jquery.wikiEditor.toolbar.js uses OO.ui.ToggleButtonWidget.

Change-Id: I03d0f73fb77bb389dd4e5ad2aa15b3ff5a97e5f5
2020-03-03 06:25:51 +01:00
Fomafix 3def0a39fc Use document.body instead of 'body' as jQuery selector
Change-Id: I05737b760a4875a58101a520d18cd21528175410
2019-12-16 11:36:27 +01:00
Ed Sanders 85ac5f2e07 build: Update linters
Change-Id: Idcac2a782781a86dabd91f30a41adac1ea94ef16
2019-10-29 22:16:13 +00:00
jenkins-bot 9a25fc5557 Merge "Remove use of jquery.tabIndex (take 2)" 2019-10-16 21:49:54 +00:00
Timo Tijhof b505eaed24 Remove use of jquery.tabIndex (take 2)
This was used for setting incremental tabindex attributes
on the <button> elements of the "Find and replace" dialog
as opened from the "Advanced" toolbar section. I was unable to
find a difference in behaviour with and without this code running.

Both with and without this, when tabbing from the first input
field in the dialog, the buttons are in the tab order after
the input fields (matching the visual rendering). Unclear
what this was doing.

This re-applies commit 81b08daa48, which was reverted (5f356b1a),
because I forgot to remove the calls in  dialogs.config.js.

Bug: T234581
Bug: T235701
Change-Id: Ic51074c3d2b2e9b9b050c9f42862519a3e78af16
2019-10-16 22:03:29 +01:00
Ed Sanders 2112538387 build: Update linters
Change-Id: I3a50982ee652c4c1c9b357c793e07cccf014e261
2019-10-07 16:52:10 +01:00
Timo Tijhof 7e5b71b04e mediawiki.RegExp (deprecated) -> mediawiki.util
Bug: T218339
Change-Id: Idd56fbd34648eeb42434848119b118375562cd14
2019-09-09 17:55:24 +00:00
Alex Monk 20d3c66c2c Follow-up Ia75d685c: Fix the insert file dialog
This appears to have been an oversight in the above change. Since the magic
words variable was no longer set, magicWordsI18N became null which broke
things, and caused whitespace info to not get recorded, which broke the
ability to handle the dialog being submitted too.

Bug: T230078
Change-Id: I5c44ed348de6ac2363d3d789b38053caa3935f62
2019-08-07 23:02:19 +00:00
Roan Kattouw d23d096281 Convert ext.wikiEditor module to packageFiles
This allows us to bundle the wgWikiEditorMagicWords and
mw.msg.wikiEditor(?!) config vars that were previously exported globally
in the startup module.

This code is old and crufty, so this is a somewhat minimal conversion:
* Use require() for jquery.wikiEditor.{dialogs,toolbar}.config.js,
  and for jquery.wikiEditor.{dialogs,toolbar}.js
* Don't attempt to convert jquery.wikiEditor.js to something
  require-based, instead just run it and let it set the $.wikiEditor and
  $.fn.wikiEditor globals
* Consolidate ext.wikiEditor.{dialogs,toolbars}.js into
   ext.wikiEditor.js

Bug: T222828
Change-Id: Ia75d685cbde786e8fceb6db36f2436b2beea1499
2019-08-05 22:24:56 +00:00
Alexander Jones 2075d6d2dc Pre-fill fields in image dialog when image code is selected in editor
This commit adds a function to parse image syntax selected in the
editor and uses the parsed data to automatically fill the fields
of the WikiEditor image dialog. Surrounding whitespace in the
selected wikitext is now included in the result. This causes an
issue with the ownline option in line 840, which appends an extra
line regardless of the post text.

Bug: T40829
Change-Id: Ib117a2e6350400f9298d4892a00981ac41f3dbbf
2019-08-01 00:34:06 -05:00
jenkins-bot 7c75285577 Merge "Search: Add option to search whole words" 2019-05-19 18:21:54 +00:00