Commit graph

1827 commits

Author SHA1 Message Date
David Lynch 9762b096c8 Autosave: only try to remove autosave on teardown if the surface exists
It's possible for some load failure states to cause this teardown at a point
without a surface. I observed it in MobileFrontend, when restbase can't be
contacted.

Change-Id: I13489640759c73dad5730d0bbadbfb2a38cb8e53
2018-03-14 11:53:10 -05:00
Ed Sanders e0419f8388 Autosave section title when adding new section in source mode
Change-Id: Idcbe2f12e3eb0bb85e2c986885bd8084b16dbe5b
2018-03-12 12:25:12 +00:00
Ed Sanders e78379a395 Attach deactivate code to namespace tab ('Main'/'Article')
Bug: T189380
Change-Id: I9f05722b9a1c740f9f982d9c5690d48046f19fdd
2018-03-10 19:07:11 +00:00
Ed Sanders c3c3c60f1f Clear VE autosave whenever WikiEditor is loaded
Bug: T189381
Change-Id: I21a76dc32327d6c6e72a793d9b579cb7b6a5e32e
2018-03-10 18:34:17 +00:00
Ed Sanders ec6d9b235a Clear auto-save when switching to fallback wikitext editor
Bug: T189381
Change-Id: Id89fa2a673ad8aef3826c0ef862770bf522bbdcf
2018-03-10 18:04:44 +00:00
Ed Sanders 9678cdc7c8 Factor out isSaveable method from updateToolbarSaveButtonState
Change-Id: Ic1922ed26bae26a76e8149d48f3fb27fa9ba4330
2018-03-10 16:20:30 +00:00
Ed Sanders 8b208c80d5 Remove unnecessary attachToolbarSaveButton override
It's identical to the code inherited form ArticleTarget.

Change-Id: I7fe7a48b0614f2ac2665ece042bb95a6f77303ad
2018-03-10 16:20:30 +00:00
jenkins-bot 04e5f6f208 Merge "LinkCache: styleParsoidElements find mw:WikiLink with ~=" 2018-03-09 21:44:52 +00:00
jenkins-bot 8e79d85583 Merge "Blacklist Web of Trust junk from being added to pages" 2018-03-08 00:33:48 +00:00
David Lynch f8c5608caf LinkCache: styleParsoidElements find mw:WikiLink with ~=
`noopener` being added to the rel caused issues.

Bug: T189175
Change-Id: I33a456351ab025d0c81cfb1a1577d5a2ae9df51a
2018-03-08 00:14:16 +00:00
Bartosz Dziewoński b05ac142c6 Blacklist Web of Trust junk from being added to pages
Bug: T189148
Change-Id: Icc4b2d0ddf5104e26a3f563816f6f971d71e2531
2018-03-07 22:12:43 +01:00
Ed Sanders 045f3b7640 Follow-up I5357a909: Fix logic for autosave from edited state
Bug: T189071
Change-Id: I5439a73ffcf26795f58625720b1f1667ee3965cc
2018-03-07 18:43:28 +00:00
David Lynch 795b428477 MWNumberedExternalLinkNode: set an explicit type
This lets copy-paste between documents retain the numbered status rather than
falling back on pasting "<a>[3]</a>".

Update the part of LinkCache which selects on mw:ExtLink, so it will handle
possible multiple values in the link rel.

Bug: T188429
Change-Id: Ia5e4c9fa45e94da9cbfcd2a42d017d0fda1c511f
2018-03-05 11:59:41 -06:00
Ed Sanders 4c759e2587 autosave: Handle switched document with no transactions
Always store immediately if fromEditedState is true. Also
now that we only store if there is state to recover, remove
the check for transactions before deciding to show the notification.

Change-Id: I5357a9098b91e303f5c71881ea03a080d2969fff
2018-03-04 23:40:24 +00:00
Ed Sanders 007bb6fa09 Refactor diffpage init
Avoid re-rendering the diff if it hasn't changed.

Change-Id: Icbc8eb58625cf7c5485d0045e26993a170016309
2018-03-04 14:45:33 +00:00
Ed Sanders c8d0f62095 fetchSpecialCharList: Set directionality
Specifically, set arabic(extended) and hebrew to 'rtl'.

Logically depends on I14abd3e0c0d23f79aa01d96c216eea913024b4c8
to set the dir attribute in UI.

Bug: T56310
Change-Id: I1c7e28d3d2f20ca84115be6d49650cd9a81d78dd
2018-03-01 23:22:45 +00:00
Ed Sanders 11ac2736a1 autosave: Don't store initial document state until first change
1. It wastes valuable time during setup.
2. If a user reloads the page without making changes we
   should give them the latest html from the server to
   minimise the chance of an edit conflict.

Change-Id: I9a1f8cfd65ef2552fe2c3d6d2bbf975851b52003
2018-03-01 18:25:10 +00:00
Ed Sanders 90b6a1b5cf Clarify autosave comment
Change-Id: I0bdaf989886be8537ea45237ceea88a5cca11fc1
2018-02-28 14:36:58 +00:00
Ed Sanders 19d9e9eb98 Tag TODO comments with bug number
Change-Id: I965e8d4bed4fdfa24738ca5cce0ae3f51e7f2b40
2018-02-28 14:36:42 +00:00
jenkins-bot 8727ecd181 Merge "Do not use deprecated jquery.byteLength" 2018-02-27 22:10:23 +00:00
Bartosz Dziewoński 974ea82c50 Do not use deprecated jquery.byteLength
Change-Id: If3f921d60563bd614c269d1d26b745161f8cfc7b
2018-02-27 22:35:29 +01:00
jenkins-bot 12323a022e Merge "autosave: Use upstream methods in ve.dm.Surface" 2018-02-27 21:03:52 +00:00
jenkins-bot b3adaa5fc1 Merge "Show notification when document is recovered (or fails)" 2018-02-27 21:03:51 +00:00
Ed Sanders c670ce76ee autosave: Use upstream methods in ve.dm.Surface
Change-Id: I150b21d7767153d8457b5da658bb8b51b5464aa9
Depends-On: I859b57aef9d591597956f3d942dd2cf1b0aecee0
2018-02-27 20:54:59 +00:00
Ed Sanders a46b30a161 Show notification when document is recovered (or fails)
Change-Id: Id2f6651ba7743c05043bbbe64cd9cb7bd762d74b
2018-02-27 20:54:18 +00:00
jenkins-bot c44390e6f8 Merge "Use session storage to auto-save" 2018-02-27 20:20:31 +00:00
Ed Sanders 76caef6b4b Use session storage to auto-save
Ensure we start with the same HTML (i.e. if an edit has
been made since the crash-recovery):
* Whenever an article target is activated, stash the initial
  document html, other parsoid response data, and the request
  parameters (pageName, mode, section) in session storage.
* Whenever an article is fetched through the target loader,
  recover from session storage if the request parameters match.

Store transactions:
* On document transaction (debounced) append the latest
  changes to session storage.
* If a document state is recovered from session storage,
  attempt to re-apply the stored transactions.

Clear transactions:
* Whenever the target is torn down (i.e. save, deliberately
  closing the editor to go back to read mode)

Other:
* If writing to session storage fails once, disable future
  attempts for that session (assume storage quota exceeded)
* Disable tempWikitextEditor when recovering. We don't have
  the transaction code loaded yet to perform the recovery.

Bug: T57370
Depends-On: I3832243fc347a99641fcb7e39a887a153c9a3b22
Depends-On: I448fb566fe9f7f5b5a76e88b70ca000e3d35b415
Change-Id: Id9d877f903cf4796a52f90991c030417a9f8786f
2018-02-27 12:19:06 +00:00
Ed Sanders 31f7015260 Whitelist style tags from Parsoid, e.g. TemplateStyles
Bug: T188143
Change-Id: I7a30d8a8c40de8b786d59c8bf0ebcb77f2baeb2a
2018-02-26 16:52:01 +00:00
David Lynch abe3d0a4a5 DiffPage.init: Enforce a valid diff mode
Bug: T173400
Change-Id: I48b97e10fc6c6e2ca84563b58dd0bb8f42fa251f
2018-02-22 11:48:37 -06:00
Ed Sanders 05a504887d Drop IE10 support
Change-Id: Ib1cb8fb32c499ba0bdc87ec55e1e2e95d2eb39ec
Depends-On: I68c882e64fba95d5e1bf41f64658fcef7524dcf5
2018-02-22 00:47:38 +00:00
jenkins-bot 8d3e702976 Merge "Disable tempWikitextEditor for section=new on talk pages" 2018-02-21 01:29:58 +00:00
Derk-Jan Hartman 249c52b6a4 Hide historical diff controls when UA doesn't support JS
Bug: T187780
Change-Id: If29974323ef21016edbbb66870914a6dc37e7bbb
2018-02-20 16:54:31 +00:00
jenkins-bot 8f33fc6225 Merge "Add clearfix to diff page's visual diff element" 2018-02-20 16:52:39 +00:00
jenkins-bot d040645244 Merge "Avoid jQuery.parseHTML" 2018-02-20 16:50:06 +00:00
Ed Sanders 7fe496d8ef Avoid hiding generated #toc
Bug: T187636
Change-Id: I713479616feddb01c48c9bb6dda2f9c4aaf182e0
2018-02-20 16:18:27 +00:00
Ed Sanders fcf6ea9e67 Add clearfix to diff page's visual diff element
Bug: T187687
Change-Id: I4de925964fde7b0fffc6540ba821f9a8162cffe7
2018-02-20 15:04:25 +00:00
Ed Sanders ee5b80aeee Avoid jQuery.parseHTML
Bug: T187713
Change-Id: Ic156d6fb670fa2f79cf3c1d5fe0c6272b53b6440
2018-02-19 15:41:20 +00:00
Ed Sanders f2e7361460 Disable tempWikitextEditor for section=new on talk pages
The temp editor doesn't know about the title input
widget yet, so disable for now.

Bug: T185633
Change-Id: I3e44dcc30ee8372080c7cd8c5fc27eb167e24fc6
2018-02-16 18:32:41 +00:00
James D. Forrester dd3dddb98c Follow-up 0a7a845a4: Missed one
Change-Id: I252cb6678df9df503e07b635384a713f052a8abe
2018-02-14 14:25:07 -08:00
Ed Sanders 119e9ef0f6 Remove IE9 workaround
Change-Id: Ifcb1690934ece7d373c764591e00740d6f1238ee
2018-02-13 10:45:16 +00:00
Fomafix 8079d081d0 Remove /* global confirm, alert */
The browser functions alert() and confirm() are not used.

Change-Id: I1b069937fe1548298d55a3e6616e189b72c3e8fa
2018-02-12 10:49:11 +01:00
Ed Sanders cefa0ebf7b Add trailing linebreak to NWE's temporary wikitext editor
Bug: T185632
Change-Id: I8225b08484e535668e8b0bd33eb3b8b09b80ff35
2018-02-02 11:10:18 +00:00
Ed Sanders 9770c80615 Load modules for preview
Bug: T147702
Change-Id: I94f6bdf122d4e2c9fba3103f36c438980ce8228d
2018-01-29 22:35:00 +00:00
jenkins-bot 97fbd5619c Merge "Public API for the tempWikitextEditor" 2018-01-24 00:53:11 +00:00
jenkins-bot a77eea97b3 Merge "Sync tempWikitextEditor just before building target, not on every change" 2018-01-24 00:50:41 +00:00
jenkins-bot 14e557e936 Merge "Use jQuery 3 .catch( fn ) instead of .then( null, fn )" 2018-01-24 00:06:11 +00:00
Ed Sanders 8afe6c5c6d Public API for the tempWikitextEditor
Allows users to know when the widget has been constructed,
and access it (e.g. to set an initial selection)

Bug: T185279
Change-Id: I3678996bcf644cc889dd168ac3ce48b5c3633ec1
2018-01-23 15:30:51 -08:00
Bartosz Dziewoński a0e2afef8e Use jQuery 3 .catch( fn ) instead of .then( null, fn )
Change-Id: I676eec0acf25690c2b2dd0b9a414be5fee887395
2018-01-23 15:25:15 -08:00
Ed Sanders d294006d7b Sync tempWikitextEditor just before building target, not on every change
Also ensure tempWikitextEditor is always torn down, even if
target setup fails.

Change-Id: Idc30a9dc00491b8c85353d73cb9ff70afea1d51c
2018-01-23 15:13:10 -08:00
jenkins-bot f52ee56a02 Merge "Toolbars: Replace $.height with clientHeight/offsetHeight" 2018-01-23 23:01:37 +00:00
Ed Sanders 154f49e964 Toolbars: Replace $.height with clientHeight/offsetHeight
Bug: T185599
Change-Id: I43fbce8f221553e9ae03f8385f39a19de01e8eb7
2018-01-23 12:32:16 -08:00
Ed Sanders 3077bbe51c Remove Firefox support comment
This line isn't solely for supporting FF52, that is the order
in which it is called (move after attach, not before),
but that matches all our other widgets, so not sure
it needs commenting.

Change-Id: I6f3cc5687f1e4b995dff700d0765d14de1927d51
2018-01-22 11:27:46 -08:00
Ed Sanders f2568c8d7d NWE: Don't attempt to set selection on unattached textarea
Prevents an exception being thrown in Firefox <= 52.

Bug: T185304
Change-Id: Ic9a43e3cf12d4cc566cebb328f8e807e464af634
2018-01-22 18:58:26 +00:00
jenkins-bot 140ec5f2ab Merge "NWE: Show temporary wikitext input widget while loading" 2018-01-16 18:13:47 +00:00
Ed Sanders b1ea5d618a Don't pass wikitext to requestPageData if unmodified
Bug: T184875
Change-Id: I41a72a9c7546fafc834bf837e507d9359872ff11
2018-01-14 16:16:47 +00:00
jenkins-bot 2091b8634a Merge "Use section fragment after-save even if the query is empty" 2018-01-10 21:41:59 +00:00
jenkins-bot 2ea64bdd27 Merge "Change save dialog accesskey to be entirely off the trigger" 2018-01-10 21:30:51 +00:00
Ed Sanders 886faf2adc NWE: Show temporary wikitext input widget while loading
Bug: T184614
Change-Id: I2e4964cb6329660957815dcb9a74d2ad24d5256b
2018-01-10 21:34:53 +01:00
David Lynch 64944c119a Use mw.storage instead of localStorage
mw.storage catches errors, so we won't crash horribly when the user has
localStorage disabled / full.

Bug: T181822
Change-Id: I212994eb535b9a8fb5f6c09deaa10b16c3d7f10e
2018-01-10 11:44:24 -06:00
David Lynch a89c79dc79 Change save dialog accesskey to be entirely off the trigger
Accesskeys in this situation are unreliable cross-browser. Firefox won't
trigger the accesskey inside the dialog. We can manually simulate it, via the
existing trigger.

Bug: T121183
Change-Id: Ib919d8b9fcd9324a517037bcc6ef93a26d1488b9
2018-01-08 11:52:06 -06:00
David Lynch 874ba30ce8 Use section fragment after-save even if the query is empty
Bug: T181075
Change-Id: If2d1107982d3f947330c750c635ee221ab71610f
2018-01-05 11:55:38 -06:00
Bartosz Dziewoński 23158de319 Fix context menu for mobile TargetWidgets
Depends on Ica66325a8267d14f25fbc537b956573d1d3cc336 in VE core.

Bug: T157084
Change-Id: I9d9839d7e96eb1ef254e11554acfb955750a2915
2018-01-04 16:53:40 +00:00
jenkins-bot 683ac88fcc Merge "doc: Bump copyright year" 2018-01-03 19:20:07 +00:00
James D. Forrester 0a7a845a42 doc: Bump copyright year
Change-Id: I0b299c840ede1a1b8552cecfc70c5760ab036181
2018-01-03 17:45:07 +00:00
Bartosz Dziewoński 5f7e60e938 Remove unused files loading-ltr.gif, loading-rtl.gif
No longer in use since 6d8fbd8221.

Change-Id: If0392c49985fdd5b07c336e17eb5360e0a71770a
2018-01-02 10:47:32 +01:00
jenkins-bot 5457615129 Merge "Add section id to URI fragment on save" 2017-12-18 10:55:35 +00:00
David Lynch 6f2c829bd9 Add section id to URI fragment on save
Bug: T181075
Change-Id: Iea63112301bfa0860c3d68efc35648a5af7e4ae6
2017-12-15 00:03:52 +00:00
David Lynch 5bbda2b8c8 ArticleTargetEvents: Track editor mode on save events
Bug: T182610
Change-Id: I8b58bea8e4444478cde4c1340d13ddf97aab8f01
2017-12-14 16:23:08 -06:00
James D. Forrester af8428e861 trackSubscriber: Add timing data for 'loaded' state
Change-Id: I771764e5f40adcfc67d181cda68f60fc283a9cb2
2017-12-13 11:20:09 -08:00
David Lynch e66d58076f trackSubscriber: data isn't required
Editor-fixing caused errors on some events which don't pass data in.

Introduced in 8f612fbe64.

Change-Id: I5c9471e6ffe4cdda0bf5455c80ef70251690e20f
2017-12-13 11:56:35 -06:00
C. Scott Ananian d2d6d23522 Bump Parsoid HTML version to 1.6.0
It's a brave new world.

https://www.mediawiki.org/w/index.php?title=Parsoid/Deployments&oldid=2644817#Tuesday,_Dec._12,_2017_around_11:45_am_PT:_Y_Deployed_741fc5d

Change-Id: Ib22dc5370cd01bf5becdd639cc12d6a5ccc653a3
2017-12-13 00:10:16 +00:00
C. Scott Ananian b85caca493 Strip legacy section IDs from inside headings
We emit <span id="..." typeof="mw:FallbackId"></span> inside headings
when necessary to provide backward compatibility with pre-HTML5
section ids.  These are mostly harmless inside VE --- they become hidden
alienated nodes, which are then safely ignored by Parsoid during html2wt
even if they manage to migrate outside of a heading --- but it's a
little safer to strip them.

Change-Id: I07d0fcf54427ab02d4930cff183d3e5579a99306
2017-12-12 12:15:05 -05:00
Ed Sanders 8f612fbe64 Pass editor mode (visual/source) to tracking code
Change-Id: Iba5d3c66ecbd2872d76ea12f795ef3bebaae9d81
2017-12-07 11:14:00 +00:00
David Lynch 7a260ad1b7 Track action=loaded for consistency with WikiEditor
Change-Id: I1b92996e63dd85416755377dc14a5a997aac6657
2017-12-06 11:32:01 -06:00
jenkins-bot 7dd9cec01e Merge "DesktopArticleTarget: enable spellcheck on sectionTitle" 2017-11-29 00:38:47 +00:00
David Lynch 396ce6eb6b DesktopArticleTarget: enable spellcheck on sectionTitle
Tell browsers we explicitly want spellchecking on the section title. If
unspecified this is browser-dependent, so it was inconsistent.

This won't actually have an effect until the next OOjs-UI release (v0.24.3),
as this was a new feature added to TextInputWidget.

Bug: T179654
Depends-On: Ifdd44ead7d782288aaef0979322f0943f7304835
Change-Id: I588874efcff91c5be03da2fc03c268f883b718e2
2017-11-29 00:06:20 +00:00
Ed Sanders 267d60f61a Unwrap Parsoid sections
Section wrapping will be introduced in I0f4c19f7.

Change-Id: I43ced131d07a20318af37e830318e30db2eb451f
2017-11-23 12:19:57 +00:00
Ed Sanders 38dba57e95 Follow-up I80d82ad87: Only add linebreak to non-empty documents
This is the same behaviour as the old editor, and
unbreaks editors that use placeholders.

Change-Id: I7b5a18f1fb0d41c5dc08d1b893c90db2bf3dbd86
2017-11-21 17:14:08 +00:00
jenkins-bot 26e78ea946 Merge "Move source mode newline hack down to ArticleTarget" 2017-11-20 22:32:20 +00:00
Roan Kattouw f37caa6a6f Move source mode newline hack down to ArticleTarget
We need this hack when visually editing articles, but not in e.g. the
Flow integration. Move it down so that mw.Target has a clean
parseDocument method that can be used by Flow without undesirable
newlines being introduced.

Change-Id: I52bba88b3d33c3d6d16c4cf832f23f970a243abf
2017-11-17 13:15:27 -08:00
Ed Sanders 50217d2a19 Rename mediawikitheme -> wikimediatheme
Change-Id: I48e1fcc0b71dccdb6d8e034d686a4bfe5dbe39e6
2017-11-01 15:36:34 +00:00
jenkins-bot 2649a2123a Merge "Fix revslider colours in visual diff mode" 2017-10-31 17:50:53 +00:00
jenkins-bot 93c2da8e78 Merge "ArticleTarget: remember whether we preloaded, so it can affect the save button" 2017-10-30 22:07:19 +00:00
David Lynch 001b945513 ArticleTarget: remember whether we preloaded, so it can affect the save button
Idea being: preload use case is often "load content, maybe with parameters,
immediately save it", so we can treat it as being already-modified for saving
purposes.

Bug: T179063
Change-Id: I35ff04bc9cb5172edf8174832624145973aa1fdb
2017-10-30 16:40:57 -05:00
Ed Sanders 236d437875 Fix revslider colours in visual diff mode
Change-Id: If8a631812f3947b2260d66f832849eed3a0ad238
2017-10-27 11:41:02 +01:00
Ed Sanders dc3ed6cec0 build: Update stylelint 0.4.1->0.4.2
Change-Id: I9d67e4224eb6298e20574a201eeee559ab3a7504
2017-10-26 21:04:07 +01:00
jenkins-bot 600208453b Merge "Use more common 250ms transition for toolbar instead of 400ms" 2017-10-19 17:40:37 +00:00
Ed Sanders 4eb8f46234 Remove duplicate position:relative in toolbar css
Already set upstream.

Change-Id: Icf15dc82b7d57eb3591b0873e49fa9c598b2742d
2017-10-19 14:23:05 +01:00
Ed Sanders 6761a3619a Use more common 250ms transition for toolbar instead of 400ms
Change-Id: I8ad1a20753b7bd4a17db605d31502e57149b5348
2017-10-18 19:17:05 +01:00
jenkins-bot 1b54d6e75a Merge "Mobile: Rewrite toolbar centring CSS" 2017-10-17 20:37:14 +00:00
Ed Sanders afc9d2156b Mobile: Rewrite toolbar centring CSS
Change-Id: I43ada52231a0c9a91c98f2a482d2702528d995a2
2017-10-17 20:23:50 +01:00
jenkins-bot 45a5121853 Merge "requestParsoidData: Support 'wikitext' param in RESTBase-less environment" 2017-10-17 19:22:55 +00:00
Ed Sanders 0306f77fde Simplify mobile overrides using LESS
Change-Id: I9ffce148fede03dda6e78377a0d20355bb45e5fd
2017-10-17 19:44:03 +01:00
jenkins-bot 18e2ccdc96 Merge "init.mw.DesktopArticleTarget: properly set up section links" 2017-10-17 16:28:54 +00:00
David Lynch 80c813e08c init.mw.DesktopArticleTarget: properly set up section links
We were reimplementing (incompletely) the setup from the .init version. Just
call the original, modified slightly so it doesn't over-setup on repeated
calls.

Bug: T151021
Change-Id: I65bd7c5ecf75c478d6babeb13e7fb2a76a9842c8
2017-10-17 10:14:50 -05:00
Ed Sanders 8f11796c43 Convert mobile overrides to LESS
Change-Id: I44754f2d6e69ad9a8a6ce941962714a6d2617b5a
2017-10-17 11:46:17 +01:00
Ed Sanders 59955251fe Fix button alignment in MW mobile
Change-Id: I4b29dfef672f48bc6d2b6644b1e0da5a7ada521a
2017-10-17 11:32:58 +01:00
Ed Sanders 169ce28c44 Remove duplication from browser whitelist
The whitelist isn't checked for blacklisted browsers,
so if all non-blacklisted browsers are whitelisted,
set the whitelist definition to all (null).

Change-Id: I8ee3569d9d5be2eda9153f1b087c1be385f93d9c
2017-10-12 16:54:46 +01:00
Ed Sanders 58a226288b requestParsoidData: Support 'wikitext' param in RESTBase-less environment
Change-Id: I6154376be090655d3249ad7e74a0e90b39208a82
2017-10-11 21:26:18 +01:00
Ed Sanders 581847acb3 Show visual diffs in wikitext mode
Bug: T170371
Change-Id: I8fd9ed4f804444ec486c4df72125cdeb04da0d5f
2017-10-11 20:31:39 +01:00