Commit graph

353 commits

Author SHA1 Message Date
Ed Sanders 58f6d8ca56 Trigger username sequence even when deleting
This is helpful when you ping the wrong person and need to correct your input.

Logically depends on I4c34e9368692b0ee4e7ca0f18ba2940406c62a9a

Change-Id: Iea89bdb5d93fe64902b692f04dd3a2e84e5517c3
2020-06-26 17:19:10 +01:00
jenkins-bot ea20ec6257 Merge "Improve ThreadItem documentation" 2020-06-26 13:12:58 +00:00
Ed Sanders d5376e28fc Improve ThreadItem documentation
Change-Id: Ia266fc22b02af0edbb32f356b4e0d92fe3a4da5f
2020-06-26 14:56:19 +02:00
jenkins-bot dc07a5c2b1 Merge "Fire window-open-from-tool event for username completion from toolbar" 2020-06-25 20:29:18 +00:00
jenkins-bot c7b7fe5d66 Merge "Another attempt to fix page re-initialization after updating" 2020-06-24 21:48:14 +00:00
jenkins-bot dafb465481 Merge "Allow non-lists to be passed to unwrapList" 2020-06-24 21:09:45 +00:00
jenkins-bot b51799ec2e Merge "Load VisualEditor plugin modules with ReplyWidgetVisual" 2020-06-24 21:09:36 +00:00
Bartosz Dziewoński ffafc1a752 Another attempt to fix page re-initialization after updating
* Run the 'wikipage.content' hook before our initialization.
  This way collapsible elements and other changes to the page layout
  are processed before we measure where the new reply is and try to
  highlight and scroll it into view. (T252903)

* Remove the code dealing with 'mw-parser-output' and 'dt-init-done'.
  This was needed to avoid initializing twice on the same element,
  which can't happen now. (T254807)

This is much closer to the original approach Ed proposed in
I05a3c766668999f05cfe06473652429025595196 before I changed it:
https://gerrit.wikimedia.org/r/c/mediawiki/extensions/DiscussionTools/+/550693/7..8

Bug: T252903
Bug: T254807
Change-Id: Ibc3fcbd3c92c8eceda19b68cee9e69f6e92456f5
2020-06-24 22:56:40 +02:00
jenkins-bot e55ac1ef79 Merge "Scroll the after-reply highlight into view" 2020-06-24 19:24:55 +00:00
Ed Sanders 811f8bdf02 Allow non-lists to be passed to unwrapList
Bug: T256292
Change-Id: I036e0fdf3dde51c33f64abb7df142e26ebe66554
2020-06-24 19:19:06 +01:00
Ed Sanders e4645a47e6 Scroll the after-reply highlight into view
Bug: T252903
Change-Id: If9db634153572a045dd468cfa7f6316e93fddccd
2020-06-24 20:15:52 +02:00
Ed Sanders e7a9185ab1 Load VisualEditor plugin modules with ReplyWidgetVisual
Bug: T256292
Change-Id: Id05ad1871093e8941e54b2db8c9a76cecaac1033
2020-06-24 19:09:27 +01:00
Ed Sanders 8ca9da66fd UsernameCompletionTool: Use 'userAdd' icon
Depends-On: I6de36ca2ba279dc11d18bdff3c5d138444a13361
Change-Id: Ic09e18bf284b97bb135c3e8b0129fb9bc96cf72f
2020-06-24 12:33:33 +01:00
David Lynch 02fafccd23 Fire window-open-from-tool event for username completion from toolbar
The automatic event from core didn't catch this, because it's not an action
method called "open".

Bug: T255638
Change-Id: Ifa456e850a8edb374df098e21b46bb872416ae55
2020-06-23 10:25:03 -05:00
Bartosz Dziewoński b6edd8ddef CommentController: Apply pre-save transform when switching to visual
Parsoid doesn't understand syntax expanded during pre-save transform,
e.g. [[User:Foo|]] or ~~~~, and it gets nowikied when switching back.

Change-Id: I791426d9d6c0a1399b1e95039b11e43a3e5bf79f
2020-06-22 21:01:55 +02:00
Ed Sanders 03665de09e Move VE components to dt-ve
Change-Id: I4fba23e83d9ace833b55e67d1c3ef8b8da5ed19f
2020-06-22 20:09:18 +02:00
jenkins-bot a2b31efb19 Merge "Remove unsupported argument from getWikitextFragment" 2020-06-22 17:59:57 +00:00
Ed Sanders b38e380ebf insertAndOpen: Call this.open directly now there is no precedingCharacter check
Change-Id: I82b2fdd58fe512638a8f69d4df9adc4be98e814e
2020-06-22 12:22:08 +01:00
David Lynch d7557d5ab3 Don't try to avoid username completion appearing in email addresses
Current code breaks in other languages which don't use whitespace as a
word separator. The word-separator message is (for reasons) not reliably
set to something other than " " on wikis for those languages, so we
can't use it as a trigger for just not caring.

Bug: T255153
Change-Id: I1ff929811af59fd7a7bf7e8dfc1cd121a2c4db4e
2020-06-22 12:21:32 +01:00
Ed Sanders 83968e4c00 Remove unsupported argument from getWikitextFragment
This was removed upstream due to a regression.

We don't need it right now, but may need it in the future to
support editing, so replace with a TODO.

Change-Id: Ia73657080241319df309f3b6566ac0ac36a5909d
2020-06-20 13:07:49 +01:00
jenkins-bot e4fc21ad37 Merge "Check the right page for lint errors by title" 2020-06-16 16:14:47 +00:00
jenkins-bot c678fffd49 Merge "Add user mention tool" 2020-06-15 19:46:19 +00:00
James D. Forrester d6c3df31f5 Remove various phan suppressions and fix issues
Change-Id: I73b535f284566a0a8876a3198b9784b47567fac6
2020-06-12 20:35:59 +01:00
Ed Sanders 7be0cc3209 Create ThreadItem classes
Change-Id: Id2c5324d74eccb1209ccb76768c557722c6d9400
2020-06-12 20:35:59 +01:00
jenkins-bot b6695dae58 Merge "Strip RESTBase IDs when switching to VE" 2020-06-12 18:49:20 +00:00
jenkins-bot 02d049affe Merge "Only re-focus the reply link when reply is abandoned" 2020-06-12 18:17:13 +00:00
jenkins-bot f115f3ce3d Merge "Tweak appearance of find-and-replace toolbar" 2020-06-12 18:16:48 +00:00
jenkins-bot 6eb9824e8c Merge "Add square brackets around reply link and use lower case (when possible)" 2020-06-12 18:11:20 +00:00
Ed Sanders 38d85268f0 Add user mention tool
Uses userAvatar for now while we wait on userAdd to be upstreamed.

Bug: T254366
Change-Id: Ifa512c518efa9740a138d3d42fc607f2840b4040
2020-06-11 20:53:49 +01:00
Ed Sanders f2d3a00a7b Follow-up Icb14766: Fix formatversion:2 param
Bug: T255083
Change-Id: I5636e8e21f45c50df31d05d535227cf909a45269
2020-06-11 18:27:30 +01:00
Ed Sanders 09857e13f1 Only re-focus the reply link when reply is abandoned
Bug: T252903
Change-Id: Iabac3eb2258ecd48f61e027950446f59dca68df3
2020-06-11 17:36:00 +01:00
Ed Sanders de84a27e88 Tweak appearance of find-and-replace toolbar
Change-Id: Ia61e765217ee9d4c249af0a2494ba427e29a0d54
2020-06-11 16:02:37 +01:00
Ed Sanders d6d9aec3ee Strip RESTBase IDs when switching to VE
Bug: T253584
Depends-On: If5d15dd4e7e0d3704ca8d75c0a25c529b06f17fb
Change-Id: Ia310fcc873960d0d3c1b17410e33dc4f47c5c734
2020-06-11 14:06:07 +00:00
Ed Sanders a4d767d97c CommentModifier.php: Remove unnecessary toLowerCase
We only need .toLowerCase() or strtolower() when doing
case insensitive comparisons.

Change-Id: I19caca50139a42d86ff20e1ee0224cd3deb0d092
2020-06-10 22:06:16 +01:00
jenkins-bot edba40b1b6 Merge "Always use API formatversion: 2" 2020-06-09 19:25:15 +00:00
Ed Sanders 06eab3d961 Add square brackets around reply link and use lower case (when possible)
Bug: T249578
Change-Id: I5846106b10dc82231250d04a1f9ff025cfc1ca30
2020-06-09 19:55:14 +01:00
Bartosz Dziewoński 745b65f254 Check the right page for lint errors by title
Bug: T254930
Depends-On: Ic34617e2f56d1055388ea6e8a93ff641f0342240
Change-Id: I86679ce0f641f12bd9d99e4b7baed1294103e3a2
2020-06-09 20:52:51 +02:00
Ed Sanders efd847c7df build: Update devDependencies
Change-Id: I94a455e52f2c216ccab40e360ce24fc0adc332a0
2020-06-09 19:42:05 +01:00
jenkins-bot 5907cde5e5 Merge "ReplyWidgetVisual: Disable template sequence" 2020-06-09 15:54:08 +00:00
Ed Sanders 0cfc84aa29 Always use API formatversion: 2
Change-Id: Icb14766488beab76e24d1fedcc4b6214c6b04d98
2020-06-09 00:32:11 +00:00
David Lynch 36cd435895 Tweak editor-switch mode label so it's consistent with the naming in VisualEditor
Bug: T254291
Change-Id: Iab800561f6a5e81e1e48907366e874b44924d60a
2020-06-08 17:59:05 -05:00
David Lynch 5fa7d713d8 Logging: editor_interface should be visualeditor not visual.
Also, it should switch when the editor switches.

Bug: T254291
Change-Id: I2550529f51a8417586d6f0791d958fcf4b9d4fc6
2020-06-08 17:22:35 -05:00
jenkins-bot e4da8b10f3 Merge "Track more events for VisualEditorFeatureUse" 2020-06-08 22:12:17 +00:00
jenkins-bot 0179e00197 Merge "Hook up VisualEditorFeatureUse logging" 2020-06-08 22:12:13 +00:00
David Lynch c92fad4fe7 Track more events for VisualEditorFeatureUse
* Track editor mode switching between visual and source (plain)
* Track interactions with checkboxes
* Fix the tracking of firstChange when switching with content

Bug: T254291
Change-Id: I0e243e393b02952684f34dbbe1697633c0b2561a
2020-06-04 12:19:46 -05:00
jenkins-bot 94bbaa846f Merge "Depend on Linter" 2020-06-04 16:46:57 +00:00
jenkins-bot 203df3aabc Merge "Call the linter API directly if installed" 2020-06-04 16:24:36 +00:00
David Lynch 068ff29e88 Depend on Linter
Depends-On: I8b183d816748245722ca1a459203333614f58f32
Change-Id: If2252d54a39a9d12744ccdee08e334a211f41d46
2020-06-04 18:23:57 +02:00
David Lynch 5ccb0538fd Hook up VisualEditorFeatureUse logging
Bug: T252924
Depends-On: I77b2dabc39b730bc50c67029e67fedc1f173d248
Change-Id: I0189038d09ffe023b6c06be8250b412dc06d9b81
2020-06-04 09:53:20 -05:00
Ed Sanders e9f2bb80d1 Call the linter API directly if installed
If the Linter extension is not installed, just allow the page
to be edited.

Bug: T253799
Change-Id: Id3e4c9c2d48aa7ab0b270f41d33ec19184af9a48
2020-06-04 09:46:07 -05:00
Ed Sanders 70fb4a6a10 ReplyWidgetVisual: Disable template sequence
Any template that outputs wikitext spanning more than one line
will break. As we can't enforce that in VE, we should just disable
all templates for now. The can still be inserted in source mode,
and will be eventually supported when we have multi-line syntax.

Bug: T253667
Change-Id: I72a7e4c09f83bcfc2a9cc7ab33a3d5303ced851d
2020-06-03 19:28:21 +01:00
Ed Sanders 62c0080850 Fix whitespace handling in unwrapList
Update 'referenceNode' before modifying the DOM.

Bug: T254308
Change-Id: I76af898e238c1e6d3db96d3e6156e80e55c87820
2020-06-03 13:54:36 +01:00
Ed Sanders 0d14fcea6a wt->visual: Don't unwrap template lists
Bug: T253150
Change-Id: I1584d9834e29c38edf4234f2f022c1c48bfd485f
2020-06-01 22:32:23 +01:00
Ed Sanders da433037a3 Move getTranscludedFromElement to Utils
Change-Id: I8bdd757f949c013ba426150a192d71243fadf45d
2020-06-01 22:32:23 +01:00
jenkins-bot 576fe0ca36 Merge "Use current preference each time we open a new reply widget" 2020-06-01 19:10:59 +00:00
jenkins-bot 431ba1c87f Merge "Make signature prefix customisable" 2020-06-01 17:18:04 +00:00
Ed Sanders dada23e0f4 Make signature prefix customisable
Bug: T249861
Change-Id: I506a0c1b803275f5505fdf8ee29cc535814d7742
2020-06-01 18:55:04 +02:00
Ed Sanders 03a94badfe Use current preference each time we open a new reply widget
TODO: Switch already setup widgets when we re-open them.

Bug: T253888
Change-Id: I6c541f27edbfe373f62b8508381bb5182681bda4
2020-05-29 13:06:36 +01:00
Bartosz Dziewoński 79ae8a32c5 Support parsing when timestamp is wrapped in a link
Bug: T252059
Change-Id: Ib8952fb80503bad407e8d0fe725103a0fae12a6a
2020-05-27 22:47:17 +02:00
Bartosz Dziewoński 01b4a8f4f4 Support replying when timestamp is template-generated
* Move modifier#getFullyCoveredWrapper to utils
* Use that method to find the node where we start searching for
  template wrappers, rather than using endContainer

Bug: T252058
Change-Id: I55de58102f3468fce01290bd413a7fdc96d322d6
2020-05-27 21:16:03 +02:00
Bartosz Dziewoński c7575b49f6 Work around invalid ranges in #getNativeRange
Change-Id: I46a54654acb15fb1ef7b80495cf1be8103b7688f
2020-05-27 21:16:03 +02:00
jenkins-bot 9f2ead06eb Merge "Insert replies outside of decorative comment frames" 2020-05-25 19:30:28 +00:00
jenkins-bot bb0a4c80d8 Merge "Remove empty lines in visual mode too" 2020-05-25 17:15:50 +00:00
jenkins-bot 08e6db455d Merge "Use the faster childIndexOf() approach in JS too" 2020-05-25 16:37:17 +00:00
Ed Sanders e064f43499 Remove empty lines in visual mode too
We already do this in source mode (sanitizeWikitextLinebreaks).

Bug: T253402
Change-Id: I10390b3173d22e8db735f5cd60180b1f48b94fff
2020-05-22 20:21:46 +01:00
Ed Sanders ac476eb4cf Initialize tab state to avoid flicker
Also set 'defaultMode' before calling parent constructor.

Bug: T234403
Change-Id: I08320bd539419ddf7ba22a5dc316177d751bcb8d
2020-05-22 18:25:04 +00:00
Bartosz Dziewoński 8f583a23be Use the faster childIndexOf() approach in JS too
I was wondering if the different approach to childIndexOf()
implemented in PHP in b8d7a75c34 would
be faster in JS as well, and yes, it is.

Our test suite now takes (on my machine):
* Chrome: 8337 ms → 7355 ms (average over 5 tries)
* Firefox: 5321 ms → 5044 ms (average over 5 tries)

Change-Id: I71963eeb92dcea9bfd59cbf01a7aa0b7de5d9cf1
2020-05-22 19:33:35 +02:00
Bartosz Dziewoński 420c514091 Insert replies outside of decorative comment frames
When there is a wrapper element whose range matches the range of
a comment, any replies will now be added outside of that wrapper,
instead of directly after the comment (inside the wrapper).

Bug: T250126
Change-Id: I6b42c4db019ae998e91eebd324f9cbd2aa791b4f
2020-05-22 15:01:12 +01:00
Bartosz Dziewoński fbd6338331 ReplyWidget: Avoid buttons shifting when switching to source
When the preview loads, the "Reply" / "Cancel" buttons shift downwards,
which looks ugly. Try to wait for the preview before showing the source
editor interface.

Bug: T234403
Change-Id: I70989fb9fbcac17e1a0672eda8d34bf26003bb96
2020-05-21 23:43:51 +02:00
jenkins-bot 54db24f1f5 Merge "Don't allow users to switch to a mode they are already in" 2020-05-21 18:21:42 +00:00
Ed Sanders 2d9a760d4e ReplyWidget: Use interface dir for UI
* Reset to content dir for preview.
* <textarea> gets dir from the `.sitedir-* textarea` rule.
* VE already sets the content dir in the editor.

Bug: T253255
Change-Id: I76df093490e86a730ccd5610c43c9b3fc7e07a54
2020-05-21 18:28:03 +01:00
Ed Sanders ade5f7cb6c Visual: Use createModelFromDom when setting document
Ensures that MW target sets the correct dir and lang on the document.

We should consider upstreaming this.

Bug: T253258
Change-Id: Ibc9ae7b4b105055291c941ce932f499bd6e13657
2020-05-21 18:26:59 +01:00
Ed Sanders 406aed0577 Don't allow users to switch to a mode they are already in
Change-Id: I082108c81ab871b64df76b6f9ba5cf4314ce6458
2020-05-21 18:26:08 +01:00
jenkins-bot d0dd4cf036 Merge "Add autosave support to visual mode" 2020-05-21 17:06:39 +00:00
jenkins-bot c53cecac10 Merge "Create a user preference to store visual/source mode" 2020-05-21 16:21:34 +00:00
Ed Sanders 9fbafef652 Add autosave support to visual mode
Bug: T240257
Change-Id: I87f8b68a5afee8d03c81cb283c9bee68ef9d4a5d
2020-05-20 22:16:20 +01:00
Ed Sanders 5feb69612f Create a user preference to store visual/source mode
Bug: T250523
Depends-On: I5b3b47feeeca2085fcd283d55d7e9ceafa73be70
Change-Id: I18f5d38f9d694b12e5f983be7b3b165f135a890d
2020-05-20 22:16:19 +01:00
Ed Sanders 66d3c95f23 Prefix '@' to username auto-complete output
Bug: T252460
Change-Id: I932ccddcacbe15efe9ea08d6a6d028cd84d8815c
2020-05-20 12:28:31 +01:00
Bartosz Dziewoński 515af82061 Reduce duplication between PHP parser and data gen for JS parser
Also, make the handling of TranslateNumerals and digitsRegexp the same
between PHP and JS.

Change-Id: I1d81343d0b59ab3ecd59ba1c2ad99a729d983ac4
2020-05-19 20:54:44 +02:00
jenkins-bot f5ac86528b Merge "Show real error message when an exception is thrown" 2020-05-18 23:08:34 +00:00
jenkins-bot 366aca2ccd Merge "Stop printing console warnings" 2020-05-18 22:52:30 +00:00
Bartosz Dziewoński 219339551c Stop printing console warnings
It was useful when I was debugging those parts of the code, but now
it's usually annoying.

The warnings can still sometimes be useful for understanding how the
tool parses some discussion, though. To keep that functionality, add
displaying warnings for each comment in the debug mode.

Change-Id: I2d218a8a394f179bcc0990ff988a0567c275ccf2
2020-05-18 23:37:37 +02:00
Ed Sanders 607440498e Spell check pass
Change-Id: Ia20da358297126bd52a968bd77c960f81fe82b8f
2020-05-18 21:24:14 +00:00
Bartosz Dziewoński c848d8a90e Parser tweaks
Follow-up to Ic1438d516e223db462cb227f6668e856672f538c.
Minor corrections and comment improvements in PHP parser,
and "backporting" some changes to JS parser that I like.

Change-Id: I5e54121914ec6b323e556dd133bcb71b3aefbb61
2020-05-18 19:53:26 +00:00
Ed Sanders d1e58841af Rename removeListItem to removeAddedListItem and remove in PHP
This method shouldn't be required on the server. Leave comments
relating to it in addListItem so JS & PHP can be kept in sync.

Change-Id: I849fac660faf6e750272c20776f96b9250f96b1b
2020-05-18 19:25:08 +00:00
jenkins-bot 2b7cca1380 Merge "ReplyWidget: Move all events bind to setup" 2020-05-18 19:19:47 +00:00
jenkins-bot a41eadfc51 Merge "Modifier: Pass document to createWikitext" 2020-05-18 17:54:15 +00:00
jenkins-bot 54ea65b27e Merge "Give username completion a min width of 10em" 2020-05-18 02:51:33 +00:00
jenkins-bot 55640a8a0d Merge "Show no remote users when input is empty" 2020-05-18 02:51:32 +00:00
Ed Sanders d56b512f2e ReplyWidget: Move all events bind to setup
Bug: T252439
Change-Id: I3c76e6364b63679fcbe40d256d9ba0c3eaba1578
2020-05-17 21:12:23 +01:00
Ed Sanders 5e996fdfdd Modifier: Pass document to createWikitext
Change-Id: I1793e1d690835af746a4e25a50e2e0a474811e8e
2020-05-15 22:47:54 +01:00
Ed Sanders b78fb3f4c1 Move all PHP to the MediaWiki\Extension\DiscussionTools namespace
Change-Id: I654ebb3e646a6d8d62f7bd14d48805e39f836d7e
2020-05-15 21:57:13 +02:00
Ed Sanders 340572bc05 Create a Utils class in PHP
Also move htmlTrim to utils in JS.

Change-Id: Ia5356d713c1c5d521c396cc28bcd4ecc7ee5bbbb
2020-05-15 00:25:32 +01:00
Bartosz Dziewoński 76289cdf73 tests: Fix failures due to CDATA handling in PHP
It appears PHP's DOM library always uses CDATA nodes for the contents of
<style> tags, even if there is no such markup in the source HTML.

Change-Id: Id04b27086c5e7a0b016a3a440b2b4895d6b13c93
2020-05-14 22:37:23 +00:00
Bartosz Dziewoński 33d69e26c9 tests: Fix different whitespace trimming in PHP and JS
Notably, JS trims the no-break space, while PHP doesn't. There are
some other differences that don't come up in our tests. What we really
want is to trim the ASCII whitespace as defined in the HTML spec.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim
https://www.php.net/manual/en/function.trim.php
https://infra.spec.whatwg.org/#ascii-whitespace

Change-Id: I95b8fb38878716a2fa7ec84c9f2e8065ebe77c0d
2020-05-14 21:37:26 +00:00
Ed Sanders 076c6d828a Parser: Use Element instead of Node when appropriate
Change-Id: I67015989954e61810302bf8931d05419f007ffeb
2020-05-13 14:46:36 +01:00
jenkins-bot 8415b44837 Merge "Modifier: Fix missing docs and variable names" 2020-05-11 22:17:41 +00:00
Ed Sanders 07439609c4 Modifier: Fix missing docs and variable names
Change-Id: Ia5a7974f1efbe7465235fd1f1f548f53848ca960
2020-05-11 22:56:21 +02:00
Ed Sanders 6aa2fac2f8 Give username completion a min width of 10em
Change-Id: Id98643714e092f33034dcc84a97845fb2945bfb0
2020-05-11 19:44:52 +01:00
Ed Sanders 76bd22fe59 Show no remote users when input is empty
This could cause unrelated remote users to be shown
if you typed '@x<backspace>'.

Change-Id: I03c63ede4fce53c201398b6ba5256b68aa90391c
2020-05-11 19:35:48 +01:00