Commit graph

620 commits

Author SHA1 Message Date
Bartosz Dziewoński 80691d9404 ve.dm.MWInlineImageNode: Alienate malformed figures
Parsoid sometimes emits empty <figure-inline> tags. We can't edit
that, so alienate them, instead of throwing exceptions.

Bug: T267282
Change-Id: Ie6a659a9137a1c5e82f10e0a51abb5d60f68d43e
2020-11-05 22:47:35 +01:00
jenkins-bot 46678e1d57 Merge "Allow alien extension node encapsulation wrappers to be of various types" 2020-11-05 00:55:37 +00:00
Arlo Breault d02c0bbf45 Allow alien extension node encapsulation wrappers to be of various types
Like transclusions, extensions can contain nodes of other types.  This
hasn't been an issue because the legacy parser doesn't generate content
with these annotations.  But, moving forward, as Parsoid becoming
responsible for more extensions.  This is the case for the new ImageMap
implementation.

Matches I95767e466803f0744b6626204a0a3a1514fff174

Change-Id: I6ff81a01207e2734090c626b177e5f4d10bb6d61
2020-10-20 11:44:54 -04:00
James D. Forrester 8539f75b54 MWCategoryMetaItem: Allow trailing whitespace (e.g. \n) in category names
Encountered on a page with [[d:Template:Translation_categories]].

Change-Id: Ib2df3518e3047d32626a156c32d5ef9e37ea9b3a
2020-10-06 12:17:30 -07:00
Ed Sanders 9811b36fc7 Don't set alt text if attribute was originally 'null'
Bug: T264533
Change-Id: I0ae1f6e6b770f90579ea1cefa2ac564f655d43ae
2020-10-04 17:57:02 +01:00
Thiemo Kreuz 99b0a1e6c0 Fix copy-paste mistake in MWTransclusionContentModel
I'm not 100% sure, but this looks like a copy-paste mistake to
me. Something like this (a subclass modifying the base class)
is not done anywhere else.

Change-Id: I24677c2deb721b68d1b534f1569c925b386d4d3d
2020-09-09 10:31:27 +02:00
Ed Sanders 4545f53245 build: Update eslint-config-wikimedia to 0.17.0
Fix instances of variable shadowing.

Change-Id: I6e2befb020d7d4b506c7b46131eafacd951aa6d1
2020-08-18 13:16:49 +01:00
C. Scott Ananian ed3579245e French spacing (mw:DisplaySpace) doesn't have mw:Placeholder any more
The mw:Placeholder attribute semantically means, "don't touch this,"
but french spacing should be freely editable.  It's just a funny way
to write a plain wikitext space.

Bug: T254502
Depends-On: Ia164dd1318d45924aa965919e7939c6f817f5d0d
Change-Id: I56e0f0c6526649ea041e023698a48936176dec4b
2020-07-15 20:14:30 +00:00
Ed Sanders 5a017602c6 MWSignatureNode: Use template's rendering hash object
Bug: T256969
Change-Id: Ie573c677d1bf7f4e0306bcfcb0052e2b64025e89
2020-07-08 22:18:35 +02:00
Ed Sanders a8753df147 MWSignatureNode: Don't inherit from TransclusionNode
We don't share much functionality, and we have to do a bunch
of hacks to disable functionality we don't want.

Change-Id: I9861123d8f1cbab1923f1aa5be713c2dadaed53d
2020-07-08 22:18:35 +02:00
Mvolz 842a728488 Revert "Allow generic params to be passed to getWikitextFragment"
This reverts commit e5c1ef651b.

This change caused an error where templates failed to be inserted
into wikitext in the 2017 wikitext editor.

Bug: T255785
Change-Id: Ie57c49e68e594be22af2b1b479840f29e46131db
2020-06-19 13:15:23 +00:00
jenkins-bot 15443d35c5 Merge "Allow generic params to be passed to getWikitextFragment" 2020-06-15 20:42:45 +00:00
Ed Sanders 310b4d6e4c ve.dm.Node: blacklistedAnnotationTypes -> disallowedAnnotationTypes
Pulls through I69bea8829091b72f52e8486f7171d70e3194c6ef

Bug: T254646
Change-Id: Ibe880de0436e58416a857756d45fa4dc194196b1
2020-06-12 11:11:34 +01:00
Bartosz Dziewoński 89b6a8d71c ve.dm.MWIncludesNode: Change label for includeonly nodes per feedback
<includeonly /> is not valid wikitext markup, which is distracting.
Let's use <includeonly>…</includeonly> instead.

Bug: T250937
Change-Id: I9eac8b265eca16118d390da2628e0da7ca409ed8
2020-06-09 21:37:10 +02:00
Ed Sanders e5c1ef651b Allow generic params to be passed to getWikitextFragment
mw.Target doesn't know about revid and etag, so move that logic
to ArticleTarget, where the param can still just be a boolean.

Change-Id: Idf4632cd28554aaf5bbf5f2b44ded047c0c4b182
2020-06-04 22:45:09 +01:00
jenkins-bot be3ad7d93a Merge "Handle <noinclude> etc. as nodes rather than metaitems" 2020-06-03 13:23:03 +00:00
Ed Sanders 6076708ff3 build: Update eslint-config-wikimedia to 0.16.0
Change-Id: I638e0f82949597e2a2e4ea18fc2f0258f225358c
2020-06-02 21:30:00 +01:00
Bartosz Dziewoński 1fc11e0146 Handle <noinclude> etc. as nodes rather than metaitems
The difference is that metaitems are not visible on the editing
surface, and their exact position is not preserved when the paragraph
containing them is edited.

This behavior is desirable for e.g. categories, but not for
<noinclude> and related tags, which are intentionally placed in
specific places in the text.

Note that we don't really have any editing interface for these nodes
yet. But you can see them (and they come with descriptions and links
to documentation pages), and delete or copy-paste them.

Bug: T250937
Change-Id: I104e7abbd650567df0e59813653c46a66d955d58
2020-06-01 18:47:14 +02:00
Bartosz Dziewoński a6647a258a ve.dm.MWAlienMetaItem: Never match mw:Extension nodes
Bug: T247001
Change-Id: I11771fc2537585622852e6756e800c3d5e530ac8
2020-05-25 19:14:46 +00:00
Ed Sanders 651756c4fc eslint: Enable the mediawiki/class-doc rule and make pass
Also minor other adjustments

Change-Id: I9ee48359e3e53799f2f6240e44b53972283ce328
2020-04-17 22:59:11 +01:00
Ed Sanders de47496b19 Move MWutils to preinit and rename to parsoid utils
Bring in ve.dm.MWInternalLinkAnnotation.static.getTargetDataFromHref
and ve.resolveUrl, so that the file has no dependencies on VE.

Change-Id: I03bc455d5484a6c51f3fa2397c64936b829fe7e3
2020-03-24 23:13:16 +01:00
jenkins-bot 95a20dbc08 Merge "ve.dm.MWGalleryNode: Preserve 'class' attribute unchanged" 2020-02-15 16:59:56 +00:00
Bartosz Dziewoński 26062fd3a0 ve.dm.MWGalleryNode: Preserve 'class' attribute unchanged
By removing this line, we fall back to the default behavior,
which is to copy the attribute from the original DOM element.

The gallery is supposed to have a class indicating the type (packed,
traditional, etc.). However, Parsoid doesn't care about that and
instead reads the type from 'data-mw'. Instead, changing the attribute
is causing dirty diffs.

Bug: T214649
Change-Id: I96b5a21777046b1caf07a3b1def9fad81bb15939
2020-02-14 22:05:50 +01:00
Bartosz Dziewoński 9119e57a2e Improve rendering of audio files (for real this time)
ve.dm.MWImageNode:
* Define sensible scalable properties for audio files. They are now
  scalable to any width but have a fixed height. (Ideally they would
  have no concept of height, but that would require many more changes.)
  This prevents them from resetting to 0x0 when resized.

ve.ce.MWBlockImageNode:
* Remove override for #isResizable, audio files can be resized now.
* Move #updateMediaType to MWImageNode mixin so it applies to
  MWInlineImageNode as well.

ve.ce.MWImageNode:
* Add #updateMediaType from MWBlockImageNode.
* Hide the real image 'src' using CSS rather than changing the
  attribute. It seems the previous solution depended on the order in
  which methods are called, because it stopped working when I moved
  the code here. (This depends on VE/VE change If5b1b5b5d.)

audioPlayer.svg:
* Make the file nicely resizeable. The dimensions of the "play" icon
  and time are fixed, the bar adjusts to the width of the container.

Bug: T206022
Change-Id: Ia0f38ca11e0d55a5b725fd9aeb6c79ec1345376d
2020-02-14 04:18:28 +01:00
Esanders c9b2e8b4d2 Only preserve data-parsoid/RESTBase ID on transclusion nodes
The previous attempt to fix this didn't preserve any attributes
but removing data-parsoid can result in a loss of wikitext formatting.

This reverts commit bdfd4b6d8f.

Bug: T207325
Change-Id: I2a38e651d17262889eddb149c72c9e08b4e56ed0
2020-02-12 22:51:43 +00:00
Bartosz Dziewoński a816baedd9 Fix handling of pasted internal red links
Bug: T239550
Change-Id: Iacfba4b46bea8294f12a0c010344fda317f75df6
2020-02-07 17:41:19 +01:00
jenkins-bot 582b99781c Merge "Change gallery structure to match Parsoid" 2020-02-05 00:52:51 +00:00
Bartosz Dziewoński 353549003a Change gallery structure to match Parsoid
Bug: T214649
Change-Id: Ia5eb2057a8073488de2228315f08a20656ee946b
2020-02-04 20:02:18 +00:00
Máté Szabó ff4f382322 Use autogenerated parameter info for templates without TemplateData
When a template does not have user-provided TemplateData documentation,
the TemplateData API falls back to extracting possible parameters from the raw wikitext
to generate an API response with a list of potential parameters. However, it also
sets the "notemplatedata" field in the response, causing the VisualEditor to think
the response contains no useful information and ignore it. This appears to have been
an unintended side-effect of I97a1bfc9f9ead082a673a91b9d2053630a90309c.

This patch ensures that the VisualEditor will correctly consider such responses from
TemplateData by modifying ve.dm.MWTransclusionModel to check if the response contains
a parameter map. Some unit tests were added for the class to verify this behavior.

Bug: T243868
Change-Id: I72005880d9301a53224473900efe2917379e8708
2020-01-31 13:43:56 +01:00
jenkins-bot bc2204b6c0 Merge "Add handling for mw:DisplaySpace" 2020-01-08 22:26:08 +00:00
James D. Forrester 2c77e88d2c doc: Bump copyright year for 2020
Change-Id: I30539877543dc2a57bd1428a00d10ac46d8fc294
2020-01-08 09:13:24 -08:00
Bartosz Dziewoński 8341f96217 Add handling for mw:DisplaySpace
It's supposed to be non-editable but deletable text, like mw:Entity.
We decided to handle them this way in 2015 but never implemented it
(T94509). Currently, accidentally editing text inside of
mw:DisplaySpace node causes the changes to be lost when saving.

Bug: T241906
Change-Id: I78a0cc7a75061a7eefb8b677898b5756326615d6
2020-01-08 01:40:12 +01:00
Ed Sanders e1db46612c Paste plaintext if conversion fails
Change-Id: I3891888f5d1d1de0c47e7bbcb1897d23b49bfa00
Depends-On: I3e9d5e167274440a424a47c266d8af67574c70b5
2019-11-24 09:37:40 +00:00
Ed Sanders 4c86c54e46 Replace $.when with ve.promiseAll
Add linting guards, except in preinit

Change-Id: I999641eddb0e0f5b112ec2259dbafc1e816e3437
2019-11-04 22:06:54 +08:00
Ed Sanders cc217cef29 Avoid use of $.parseHTML in model
Change-Id: Ide671e7459b14bfbb7385261221c2edd17bd1153
2019-11-04 13:23:12 +00:00
Ed Sanders 2d4234fac8 Remove jQuery from ve.dm.MWLanguageVariantNode
Change-Id: I849cb6756171aa7bba43dc390cbd390b323328d2
2019-11-02 16:28:32 +00:00
David Chan 22098d6b16 Convert $.Deferred() to ve.createDeferred(), except in preinit
Follow-up to a8e07e026dea4f54241d1dbb6b7bcdbd8c670db2 in core.

Change-Id: I09333adb4876c6e584a4a6b6a1628227c4cd2616
2019-11-02 13:06:28 +08:00
Bartosz Dziewoński 00eb79d4d7 Revert "Parse relative hrefs on image nodes like on regular links"
This reverts commit 6037fefbe0.
This reverts commit da9b6fffbd.

Bug: T237040
Change-Id: Id6ea5784512e4d4c3cb00927b859d713c3814f89
2019-10-31 22:40:42 +01:00
Ed Sanders 2846144e96 eslint: Add extra restrictions to ve-mw/dm/ folder
Same as in core, follow up to I63fa04598e.

Change-Id: I4b63ef9d07205d91d6c20db310ab350f4160c3bc
2019-10-18 23:26:26 +01:00
Bartosz Dziewoński 6037fefbe0 Fix media embeds which don't link to the file page
Follow-up to da9b6fffbd.

Bug: T235707
Change-Id: Ie5a12bf274ae6178106f81a4c84686a88307c9fb
2019-10-17 22:12:58 +02:00
jenkins-bot cc1bd58e83 Merge "Parse relative hrefs on image nodes like on regular links" 2019-10-11 15:22:29 +00:00
Bartosz Dziewoński da9b6fffbd Parse relative hrefs on image nodes like on regular links
* In normal images, parse relative 'href' attributes instead of
  expanding them to absolute, and parse 'resource' to keep it
  identical to 'href' if they refer to the same page (including
  same percent-encoding and space/underscore). This resolves Parsoid
  generating |link= options for copy-pasted images (T193253).

* In gallery images stuff, prefix the 'resource' attribute with './',
  same as normal images do. This causes no functional changes, but it
  makes updating tests easier, and the consistency is probably good.

* Update test examples to also prefix 'resource' and relative 'href'
  attributes with './', like the real Parsoid does.

Bug: T193253
Change-Id: If2d7f080d9d693568054f8311c1e1b15ca27ea5c
2019-09-25 00:25:04 +02:00
Bartosz Dziewoński e472a4bbd3 Fix mw:MediaLink support
* Handle mw:MediaLinks pointing to to non-existent files, which come
  with typeof="mw:Error" (similar to image nodes).

* Fix regression from c66f8e0547, which
  caused all mw:MediaLinks to be treated as plain external links again.

* Add test cases.

Bug: T232754
Change-Id: I9ae5bcfc4e24e8c0d22ef77d6a4d03f817fc9768
2019-09-24 22:46:03 +02:00
Ed Sanders 4a8947686d Docs: Standardise "messages used" comments
Change-Id: Ic563901a9439e86ca85ac6210323a35ab34736c3
2019-08-28 16:41:19 +01:00
Bartosz Dziewoński 84d548e7b1 Remove redundant @method annotations
A @method annotation is only necessary when the docblock is not
directly followed by a function declaration (in which case JSDuck
assumes it documents a property), e.g. when defining an abstract
function or referencing a function from another library.

I verified that JSDuck generates exactly the same output before and
after this change (docs/data-<hash>.js files are identical).

Change-Id: I7edf51a8560ab9978b42800ab1026f0b5555c3bf
2019-08-21 23:33:15 +02:00
Bartosz Dziewoński 8dd0bd23d4 Work around a Parsoid bug with creating interwiki links
As detailed in T95850#5078990, Parsoid incorrectly converts HTML to
wikitext when a link `href` refers to an interwiki page and contains
percent-encoded colon characters ':'. VisualEditor doesn't know
anything about interwiki pages (it treats those links as normal local
links, and expects MediaWiki and Parsoid to handle them specially),
so we can't easily special-case them. But since leaving the colon
unencoded is valid for all links anyway, we can just do that.

Bug: T103635
Change-Id: I87d7e6952983a72d90ea739b0bc8488d9f6a9be3
2019-07-26 01:01:01 +02:00
Bartosz Dziewoński 3ca8319dfc ve.dm.MWTransclusionNode: Protect <style> nodes too when copying
Bug: T226374
Change-Id: Ie7853382642336638e0a1de9ca506d750ce054ce
2019-07-16 22:51:28 +02:00
David Lynch c66f8e0547 MWInternalLinkAnnotation: handle non-internal links that say they're mw:WikiLink
The likely case for this is: copying from within VE in one wiki, and pasting
into VE in another wiki. This change will notice this happening, and fall back
to treat it as an external link. (For the wiki-internal links, this will turn
them into interwiki links rather than raw external links.)

Bug: T223322
Change-Id: Ie0157fc3aee6e5fd9973a2889be7ebd287bc90a5
2019-05-14 14:35:39 -05:00
Ed Sanders 934572cdf7 API: Use formatversion=2 by default
V2 has better handling for booleans.

Change-Id: I5388bd2cc64ae0c9ed4a185adce1e3bb4cdd92fc
2019-04-30 19:31:28 +01:00
Ed Sanders 258965c8b2 Improve rendering of audio files
Use a static image of an audio player.

Also disable resizeable handle.

Bug: T206022
Change-Id: Ic41f381e65c40c3682f470b9993b2c9dbbb506c5
2019-04-28 23:56:08 +01:00