Commit graph

19 commits

Author SHA1 Message Date
Ed Sanders 3801aa1bac Move var declarations inline
Change-Id: I12639c515e33b3d9e7a819581b5022ea42fd7046
2021-10-13 14:02:31 +01:00
Bartosz Dziewoński 91291d3e98 Parse relative hrefs on image nodes like on regular links (try 2)
Previous, reverted attempt: da9b6fffbd.
This attempt also includes 6037fefbe0,
and fixes minor conflicts with other changes.

* In normal images, parse relative 'href' attributes instead of
  expanding them to absolute. This resolves Parsoid generating
  |link= options for copy-pasted images (T193253).

  Keep them in the underscore-form to avoid causing dirty diffs like
  T237040 again. Unlike in the previous attempt, we don't need to be
  super-careful about the 'resource' attribute, thanks to the Parsoid
  changes in T108504.

* 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: I91131728a87c9406bf069d46d3c94c9a8905a003
2021-01-27 11:53:15 +00:00
Arlo Breault 895274c20b Switch back to using <span> for gallery images
Similar to I74fe96a47d8a4d7717891c16e49f5a4d6599018a

Bug: T266143
Change-Id: I632cff28ec428828d82fcd7cc66e5545c45c2161
2020-12-15 15:43:48 -05:00
Arlo Breault e3daaaf280 Preserve the passed in inline media tag name in gallery
Similar to Ic79aba4d4364227c3ecf7fb5411e90532b531f44

This only works if the gallery goes unedited.  Probably something needs
to be done in ve.ce.MWGalleryImageNode if we care to be complete.

However, as noted in T214648, the DOM diff'er doesn't traverse into
gallery content and notice these element names.  So, it's purely
academic to be doing this anyways.

Bug: T266143
Change-Id: I37799076852fa6f062c9d85bcebb15998fb44a80
2020-12-15 14:42:00 -05: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
Bartosz Dziewoński 353549003a Change gallery structure to match Parsoid
Bug: T214649
Change-Id: Ia5eb2057a8073488de2228315f08a20656ee946b
2020-02-04 20:02:18 +00: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
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 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 93351892da ve.dm.MWGalleryImageNode: Update for Parsoid changes to "broken" images
Change-Id: I49f4a06de207fbb4dad090f0325068d13bed9810
2019-02-22 18:10:56 +01:00
Ed Sanders 1a3e8a958c build: Use eslint-config-wikimedia v0.9.0 and make pass
Change-Id: Idb57fc12e7822cf17e10dbb726480fc7de0ae199
2018-11-21 16:51:20 +00:00
David Lynch e2cf367a95 Make RDF attribute splits more robust
Split on regexp for whitespace instead of a single space. Avoids multiple-
spaces causing `'foo  bar'` to become `['foo', '', 'bar']`.

See also: I1f467f51017e2deae30905163bf5e6b07048cecf

Change-Id: Id7a887a20fac99715b79045f01e861b4efe9f2c7
2018-10-02 16:11:58 -05:00
Bartosz Dziewoński 86f2057c81 Always generate empty wrapper paragraph inside image captions (slugs begone!)
While all of the following are valid in the model:

1. <mwBlockImage></mwBlockImage>
   Image with no caption. Must use the media dialog to insert one.
2. <mwBlockImage><mwImageCaption></mwImageCaption></mwBlockImage>
   Image with empty caption. There is a slug to insert a paragraph.
3. <mwBlockImage><mwImageCaption><paragraph></paragraph></mwImageCaption></mwBlockImage>
   Image with caption with empty paragraph. Nice and intuitive!

(Same for <mwGalleryImage> / <mwGalleryImageCaption>.)

The third option is the most convenient for the user. We should always
generate that when converting documents from HTML and from the editing
tools (MWGalleryDialog, MWMediaDialog/MWImageModel).

Previously, the editing tools generated option 2 if no caption text
was entered, and the converter generated option 2 if there was no
caption node or if it was empty. Curiously, option 1 was never used.

Wikitext for manual testing:

```
[[File:Foo.png|thumb]]
[[File:Foo.png|thumb|]]
[[File:Foo.png|thumb|Caption]]

<gallery mode="packed">
File:Foo.png
File:Foo.png|
File:Foo.png|Caption
</gallery>
```

Bug: T200387
Change-Id: Ie82fb339f6bd8ae1b289235bf5402490722d9a7c
2018-08-01 05:40:57 +02:00
Ed Sanders 43a8004abb Gallery: Use 'poster' attribute for video thumnails
Bug: T191098
Change-Id: I0f4e456ec7a52ee71dcfca581c73415fc8ee6178
2018-04-05 22:14:16 +01:00
Ed Sanders 8b42a5917c Add img.src's to gallery DM output
Bug: T191377
Bug: T191436
Change-Id: Ie6b3593876c92f8e6f08fb005d876304223491ed
2018-04-05 12:57:18 +01:00
Ed Sanders 1159471730 Improve diff description on gallery nodes
* Deep compare mw.attrs on gallery nodes, ignoring 'caption'
* Ignore computed attributes on gallery image node

Bug: T191441
Change-Id: If1d9ec15a45001f3c420d20481be43ae38ae201a
2018-04-04 17:38:48 +01:00
Thalia 367509287f Define childNodeTypes for gallery image node
Change-Id: I9ad78d26dfa16a7bc6da8bc94d7ef4e38fdec409
2018-04-03 19:40:12 +01:00
Ed Sanders f89856f0ba Match audio & video elements in gallery DOM
Bug: T190631
Change-Id: Ic09927728b449dda43cf115fa9612ebd7a2bf23f
2018-03-25 22:04:57 +01:00
Thalia 12cc56400b Make gallery dialog work with native gallery implementation
Updates the model and re-renders the gallery.

Bug: T150621
Bug: T149602
Bug: T149596
Change-Id: I1e93c3af02eeeff1fcdaa5549cccc61ea755ee04
2018-03-19 23:55:17 +01:00