Commit graph

2207 commits

Author SHA1 Message Date
Ed Sanders 2f1cf65233 Option to integrate VisualEditor instead of textarea
* Add config option $wgDiscussionToolsUseVisualEditor (default false).
* Add new modules ext.discussionTools.ReplyWidgetPlain and ...ReplyWidgetVisual,
  replacing ...ReplyWidget. Load only one of them depending on the config.

TODO:
* Also add the visual mode of VisualEditor, this only uses NWE now.
  There is already code to support saving from it, but no mode
  switcher tool

Co-Authored-By: Ed Sanders <esanders@wikimedia.org>
Co-Authored-By: Bartosz Dziewoński <matma.rex@gmail.com>
Change-Id: I9b6db865d51baf400fb715dc7aa68ccd8cdd4905
2020-01-07 22:15:03 +00:00
Ed Sanders c03cfde566 Fix 'escape' to teardown
Change-Id: Icc35ed83a1fa46ed592f617d0ff5dd60361c412d
2020-01-07 22:13:50 +00:00
Bartosz Dziewoński 25eb55000f Fix re-initialization after page is updated
I did this wrong in a6147ffac8, the
'dt-init-done' class was never cleared. Put it on another element.

Bug: T241861
Change-Id: I136bd9c12bcc80cff01f5d26a8a53524f0c533c6
2020-01-04 18:49:55 +01:00
Bartosz Dziewoński 0de5591889 ReplyWidget: Load modules required by the content when previewing
Unfortunately mw.Api#parse doesn't provide us with that part of the
response, so we have to manually construct the parameters.

Bug: T241193
Change-Id: Ie91d5ebc2ef483a69524b838dd3cb852e7c85cd2
2020-01-02 16:00:03 +01:00
Bartosz Dziewoński d7aded339c Fix crash when opening VisualEditor NWE while DiscussionTools enabled
The hook 'wikipage.content' fires whenever new "page content" is added
dynamically (e.g. after a VisualEditor edit). It's used by the code
for sortable tables, collapsible content, etc., to ensure they behave
correctly after the page content is changed without reloading the page.

We use this hook to add our "Reply" links. However, VisualEditor (and
NWE) also fires this hook for the contents of the edit notices box (to
support collapsible boxes there: T179315). Our code was crashing
because it could not find talk page content inside of that, and this
crashed VisualEditor as well.

Use .each() to handle any number of results (0, 1 or more), instead of
assuming there is always 1.

Bug: T241396
Change-Id: I877b1ae06bf1d7cd585ec6f9c1fb596cc3b86e7e
2020-01-02 14:44:18 +00:00
Translation updater bot 69f440c6bf Localisation updates from https://translatewiki.net.
Change-Id: If4101754bf23bd0ed0898957c1ddc00fcf57e611
2019-12-29 20:40:26 +01:00
Bartosz Dziewoński e9b1037ec6 ReplyWidget: Pass 'title' when previewing
Bug: T241221
Change-Id: Ibabc32c9e5aeec6acec3bab9ad67d6ba3c4f27e8
2019-12-27 19:30:24 +01:00
Translation updater bot ed553b2917 Localisation updates from https://translatewiki.net.
Change-Id: I23c559d5a336c5614eb147230c9d713d7d5d6eba
2019-12-24 10:01:51 +01:00
Translation updater bot 3537be6e83 Localisation updates from https://translatewiki.net.
Change-Id: Ia8158b4ef5ba15053af8436464e9dfe84ea80f67
2019-12-22 17:40:33 +01:00
Translation updater bot 1d9b67e63c Localisation updates from https://translatewiki.net.
Change-Id: I935e574fa939b11ce05f47dafbe96157aeb1ac7c
2019-12-19 09:14:33 +01:00
Translation updater bot f5e6310e5f Localisation updates from https://translatewiki.net.
Change-Id: I6dc2baca2ebb92b1d4f4d18be4639af78f8cab40
2019-12-18 09:25:15 +01:00
Translation updater bot 910031601d Localisation updates from https://translatewiki.net.
Change-Id: Id271111ffb53ff14d08937159096b72e1f56ff87
2019-12-17 10:07:12 +01:00
Translation updater bot d015132fd4 Localisation updates from https://translatewiki.net.
Change-Id: Ie19dcbe56608a7a0dbb609e352db5d2c3d7c45fe
2019-12-16 12:13:10 +01:00
David Lynch 5eea2d42fb ReplyWidget: calling undefined clear method
Caused by 49edbb82ab.

Bug: T240729
Change-Id: I23bf7fcb7e0265f9770629590702a07a3dbed2b1
2019-12-13 16:49:10 -06:00
jenkins-bot 2680307b37 Merge "Prompt users when pressing 'cancel' with content in the widget" 2019-12-13 19:00:41 +00:00
jenkins-bot b1d5e2953a Merge "Add beforeunload handlers" 2019-12-13 19:00:40 +00:00
Ed Sanders 49edbb82ab Prompt users when pressing 'cancel' with content in the widget
And actually discard the contents when they confirm.

For now this uses the generic editor message, but that can
be tweaked later.

Bug: T240271
Change-Id: I2dfa19b2cc7ac49d7efea37ac8c9429c75934a91
2019-12-13 18:15:48 +00:00
Ed Sanders 179b29a598 Add beforeunload handlers
Bug: T240259
Change-Id: I376ea116a0fd1fdf794d9eb9e1d15f3d34babd88
2019-12-13 18:11:22 +00:00
Bartosz Dziewoński 0568d42042 Correct typos to fix edit conflict detection
* Query parameters for the API must be in lowercase.
* Also, 'starttimestamp' was misspelled.

Bug: T240643
Change-Id: I6497770dfc3a9512af063b846c3f73aa5603b637
2019-12-13 15:29:42 +01:00
Translation updater bot f83d3ca568 Localisation updates from https://translatewiki.net.
Change-Id: I049a8fffb56644798d8efff60ebce506ac8453fe
2019-12-13 09:28:10 +01:00
Ed Sanders ccbbf386d2 Live preview
Change-Id: I1654e95e94686b27818cbc465d5a9e8600404634
2019-12-12 23:59:24 +00:00
Ed Sanders fc55b452b3 Show 'terms' message
Copied from Flow.

Change-Id: I5fe67948ba41a5a3364d8b0237583548c787d772
2019-12-12 22:26:22 +01:00
Ed Sanders 83ddc3d627 Show anon warning
Message copied from Flow.

Change-Id: Id003a1e57447b3087cd973964b3a88886d2cb7d6
2019-12-12 15:53:18 +00:00
Ed Sanders 763450db24 Create autoSign method and add whitespace trimming.
Method can be used by preview logic later. Whitespace trimming
avoids sig ending up on newline in a <pre>.

Change-Id: If6f06f17395af0c6645082c1b9493be87422c059
2019-12-12 15:28:42 +00:00
Translation updater bot c513a66d5a Localisation updates from https://translatewiki.net.
Change-Id: I73d42b63abbd29ca6dc574dec3476b0f75e52345
2019-12-12 09:56:35 +01:00
James D. Forrester f69381ce05 extension.json: Add link to the extension page
Change-Id: I8c9292bc4ad93425ae3f3d7b315f5b95b63afe1f
2019-12-12 01:41:33 +00:00
Bartosz Dziewoński 3e5a67010f Use module.exports/require() rather than mw.dt namespace for defining classes
The packageFiles system makes it easier to export site config data
from PHP to JS, which we need a lot of, but it's awkward when mixing
it with defining and accessing classes via a namespace like mw.dt.

The only thing remaining in mw.dt is mw.dt.pageThreads, which is
described to be "for debugging", so we should keep it easy to type.
Also we still use the namespace for documenting classes.

Everything else can be reached by require()'ing a ResourceLoader
module, for example instead of `mw.dt.ui.ReplyWidget`
you'd do `require( 'ext.discussionTools.ReplyWidget' )`.
(When debugging from browser console, use `mw.loader.require` instead.)

Change-Id: I6496abcf58c21658d6fd0f3fc1db1f7380a89df7
2019-12-10 22:47:40 +01:00
Translation updater bot 9b95f121cf Localisation updates from https://translatewiki.net.
Change-Id: If0634f569300badcec0c81c5f5043e02e76daf18
2019-12-10 09:29:32 +01:00
jenkins-bot 187bd718e9 Merge "Don't load DT on edit pages" 2019-12-09 19:24:12 +00:00
jenkins-bot 2c5e125fe3 Merge "Disable buttons while posting" 2019-12-09 19:17:50 +00:00
Ed Sanders e2c31a8450 Don't load DT on edit pages
Bug: T239873
Change-Id: I2aaa2f008d08dd5be9e0dfa980a68a9bfda91b44
2019-12-09 14:43:39 +00:00
Bartosz Dziewoński da668b72d5 Identify comments by username+timestamp+seq
Possible use cases:
* Matching comments between PHP and Parsoid HTML [implemented here]
* Finding the same comment in a different revision of a page
  (e.g. while resolving an edit conflict, or to allow resuming
  composition of autosaved comments) [implemented for highlighting
  user's own posted comment only]
* Permanent links to comments [future]

The reasoning for this form of ID is:
* _Timestamp_ by itself is a nearly unique identifier, so it's a good
  thing to start with
* Users may post multiple comments in one edit (or in many edits in
  one minute), so we need the _sequential number_ to distinguish them
* _Username_ is probably not required, but it may reduce the need
  for sequential numbers, and will help with human-readability if we
  add permanent links

The ID remains stable when a new comment is added anywhere by anyone
(excepts comments within the same minute by the same user), or when a
section is renamed.

It's not always stable when a comment is moved or when an entire
section is moved or deleted (archived), but you can't have everything.

Change-Id: Idaae6427d659d12b82e37f1791bd03833632c7c0
2019-12-09 13:45:31 +00:00
Ed Sanders f59482d638 Disable buttons while posting
Bug: T239865
Change-Id: Id32e35e223def1f31f52d26284638a0f00338ea7
2019-12-09 13:41:54 +00:00
Translation updater bot 98e17fefe1 Localisation updates from https://translatewiki.net.
Change-Id: If5ea62ba7ad3b7f0479803672d5bfa1db5342e6f
2019-12-09 09:35:02 +01:00
jenkins-bot a2ab3188eb Merge "i18n all the things" 2019-12-07 22:20:49 +00:00
Ed Sanders 682732897d i18n all the things
Change-Id: I01da9a88cd69facfeb33b37a727d1cd65c12a78d
2019-12-06 18:51:02 +00:00
Ed Sanders 1de021e570 Disable widget and show as pending while posting
Change-Id: I4a820fdbe8cdc0702dd48ba6ee7e999916cfb599
2019-12-06 17:55:29 +00:00
Ed Sanders 308375ca4b Submit on ctrl+enter
Bug: T239859
Change-Id: I05cca4b7f841c317b35faecf61e30950e17c0e09
2019-12-06 17:55:13 +00:00
Translation updater bot 5181777ae9 Localisation updates from https://translatewiki.net.
Change-Id: Ie7c434d8e4980e9e3d65023d23af0a0805df9c02
2019-12-06 09:30:14 +01:00
Translation updater bot 212a8e45c1 Localisation updates from https://translatewiki.net.
Change-Id: Ib6d99d5e1666760658bb309708ddfc7e66f75b65
2019-12-05 09:46:00 +01:00
Bartosz Dziewoński 8b86d1abbc Document how to update the test JSON files
(And rebuild them using this method, the properties are in different
order, it's actually nice for readability to have 'replies' last)

Change-Id: Ib586e1081fa36cb9125db1b0b1d41f092350641c
2019-12-03 21:07:16 +01:00
jenkins-bot 689945bde8 Merge "Use editfont (monospace by default) for ReplyWidget" 2019-12-03 19:38:31 +00:00
jenkins-bot a7db61d43f Merge "Highlight comment after saving" 2019-12-03 16:49:01 +00:00
Ed Sanders a6147ffac8 Highlight comment after saving
* Init on wikipage.content hook
* Update page state variables after save

Change-Id: I05a3c766668999f05cfe06473652429025595196
2019-12-03 16:40:35 +00:00
Ed Sanders 723622ab5c Use editfont (monospace by default) for ReplyWidget
Change-Id: I6ebcb02402526044c5aac135d57276f23589579e
2019-12-03 16:29:25 +00:00
jenkins-bot f64ecd9904 Merge "Reserve space for the "Reply" link when hiding it" 2019-12-02 16:54:28 +00:00
jenkins-bot 39cb7bedef Merge "Add missing dependency to ReplyWidget" 2019-12-02 11:42:04 +00:00
Translation updater bot f83b47870a Localisation updates from https://translatewiki.net.
Change-Id: Ifb317b3cc6c7d96487edf4d0ac9238d62ba41c4c
2019-11-29 09:28:03 +01:00
Translation updater bot 7066439bc6 Localisation updates from https://translatewiki.net.
Change-Id: Idaa51415864d5b7c4dcefef96b85a0d9585f9daa
2019-11-27 09:36:56 +01:00
Bartosz Dziewoński 872c73e1b2 Reserve space for the "Reply" link when hiding it
Otherwise the rest of the page may shift if hiding the link changes
line-wrapping. It felt super confusing when it happened to me while
I was testing an unrelated thing.
https://phabricator.wikimedia.org/F31254175

Change-Id: I53aecdbf3bfba579b48875532d251de0f1c81d6c
2019-11-25 16:23:00 +00:00