Commit graph

672 commits

Author SHA1 Message Date
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
Ed Sanders 0db4ae6e00 eslint: Enable valid-jsdoc
Change-Id: Ia0d1e57246a1c567d73022ceca9b8c02850f9bc8
2019-04-17 17:13:39 +01:00
Ed Sanders dbd692b5ed InternalLink: Add special case for fragment with no title
Bug: T218581
Change-Id: I11e2de90e582d184a3f8cdd65dfc0858571aa397
2019-04-09 14:43:24 +01:00
Bartosz Dziewoński 362df66b47 Remove support for page title "hrefPrefix" other than './'
Parsoid does not use relative links anywhere anymore (T72743). There
is no reason for us to support this. And previous code allowed
"hrefPrefix" to be empty '' sometimes, which is scary, as it could
lead to XSS vulnerabilities if titles starting with 'JavaScript:' are
not handled correctly elsewhere.

Bug: T206357
Depends-On: I8728f63084902c76d1c61193be4367939b069f1a
Change-Id: I99be18877aae2b505cf261bd7cdef6cf0d7a8670
2019-04-03 20:10:05 +00:00
jenkins-bot 42eb7e0cf4 Merge "Suppress slugs between floated images" 2019-04-03 15:59:09 +00:00
David Lynch a976f0508f MWInlineImageNode: don't discard alt text when serializing
Bug: T216285
Change-Id: If81a9925cf32204f825e4da713aa07e860a29a46
2019-03-29 10:29:26 -05:00
Bartosz Dziewoński 21e9db7d13 Respect user preference for default thumbnail size while editing
Bug: T69047
Change-Id: Ibf90d290df5634cd89651a427a6aa1c6f9d7a553
2019-03-26 22:15:26 +01:00
Ed Sanders 970cca735d Suppress slugs between floated images
Logically depends on Idb4a58fa616 in core.

Bug: T107745
Depends-On: Idb4a58fa616dedb29d42bdf659a7497451f8eb6c
Change-Id: I206bf1a15cbac487b0d937a1b0447e0b9113156e
2019-03-21 11:33:27 +00:00
Ed Sanders 9aee6bb5d1 MWTransclusionNode: Comment strange matchTagNames values
Change-Id: Ica207be94e5cc888c4454989d2fd6e9b5579a8ea
2019-03-01 16:16:20 +00: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 3269d53632 Support only surfacing part of the document
Bug: T76541
Depends-On: I227a0d704b9b337cff2102d424be9795d6362ed7
Change-Id: Iac71a51c8696434658f24fbb41c8142237bd810e
2019-02-13 19:03:44 +00:00
Bartosz Dziewoński 18fb16c81d ve.dm.MWInternalLinkAnnotation: Correctly generate relative links
We could generate incorrect links to pages whose title contains a
colon ':' and therefore looks like a fully-qualified URL.

Bug: T206231
Bug: T206357
Change-Id: Ie34694d903a6d97589cc46417f70659559494619
2019-02-04 20:08:01 +01:00
jenkins-bot ca03c085a2 Merge "Revert "Don't preserveHtmlAttributes on transclusion nodes"" 2019-01-17 12:54:58 +00:00
Bartosz Dziewoński bdfd4b6d8f Revert "Don't preserveHtmlAttributes on transclusion nodes"
This reverts commit 48db45df76.

Bug: T213922
Change-Id: I7b0bf081fd5a9ab71db1ede3ce6e149cfb4b675a
2019-01-17 01:42:15 +00:00
Bartosz Dziewoński 18f8697703 ve.dm.MWTransclusionModel: Remove workaround for T135127
The bug this works around seems to be fixed.

Change-Id: I62837ad795ee6bd35663b163f6de76572e1a6594
2019-01-10 21:16:32 +00:00
Ed Sanders 74f6c4899c build: Update eslint-config-wikimedia to 0.10.0
Change-Id: I63a0ebf0b31a0d5d4e680a4e2a5a0be4850be165
2019-01-08 17:00:09 +00:00
jenkins-bot bebbff8bab Merge "Don't preserveHtmlAttributes on transclusion nodes" 2019-01-02 18:58:13 +00:00
Ed Sanders 48db45df76 Don't preserveHtmlAttributes on transclusion nodes
Bug: T207325
Change-Id: I9c92f18c58c044e7f2257aa6993db227896a1468
2019-01-02 17:11:31 +00:00
James D. Forrester 3c293ea00c doc: Bump copyright year for 2019
Change-Id: I8991b97c980d4149f53eb5601036220ef3c0c440
2019-01-01 13:24:23 +00:00
Thalia a5c5bc5116 ve.dm.MWExtensionNode: check for body in describeChanges
Bug: T210257
Change-Id: Iffda3dc0b5b9dc84d294240546193e4b55c45bb7
2018-11-23 12:27:13 +00: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
Ed Sanders 3564006e91 $.extend -> ve.extendObject
Change-Id: I1def4d63c231da153a52a649e7bab584e789b6d1
2018-11-07 16:51:39 +00:00
jenkins-bot 6016cad43f Merge "ve.dm.MWImageModel: Drop back-compatibility with old versions of VE selections" 2018-11-07 11:23:27 +00:00
James D. Forrester 17377ce65c ve.dm.MWImageModel: Drop back-compatibility with old versions of VE selections
Change-Id: I38b309ca240b8305a0b29e11f822e1ad6e1ed3da
2018-11-05 12:44:57 -08:00
Ed Sanders 66972356cf MWTransclusionNode: Change HTML messages to plain DOM
Bug: T208732
Change-Id: I61a958292984586dc90262989ebb6c181f28a605
2018-11-05 16:28:11 +00:00
jenkins-bot 62c81905e6 Merge "Use changed ve.dm.Selection interface, if present" 2018-11-01 13:39:18 +00:00
David Chan 2c3e33b759 Use changed ve.dm.Selection interface, if present
Bug: T208228
Change-Id: Ie2027c4d16e0ac591512e90dbdeea012f11ff875
2018-10-31 12:07:14 +08:00
James D. Forrester c36f3d2214 Revert "Update VE core submodule to master (02f5f0ca4)"
This reverts commit be628a5b7e.

87b20f9b Revert "[BREAKING CHANGE] Do not cache document model data in DM selections"

Change-Id: I47bbf757a4ad227346d3734f6e50d928a2de1409
2018-10-30 15:12:30 -07:00
jenkins-bot b2c529e499 Merge ".eslintrc: Enable and fix "max-statements-per-line": 1" 2018-10-30 15:46:05 +00:00
Ed Sanders be628a5b7e Update VE core submodule to master (02f5f0ca4)
New changes:
ccb4de82c [BREAKING CHANGE] Do not cache document model data in DM selections

Bug: T208228
Change-Id: I564399ad864751d1690077b45a06e098b5509a93
2018-10-30 08:11:02 -07:00
Bartosz Dziewoński e7fd1ac847 .eslintrc: Enable and fix "max-statements-per-line": 1
I am surprised this was disabled. I investigated this after reviewing
some code by a new contributor which I was certain should have failed
the lint check, but passed.

Change-Id: I5b3c837b8ca3292f6e268b3922443bd9587eadbe
2018-10-30 00:19:16 +01:00
David Lynch 8c2a34b732 Handle mw:MediaLink
Bug: T198511
Change-Id: Ia7fbb9db79c9b776e0cf44b065c03b1aa090da79
2018-10-17 21:43:07 -05: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
jenkins-bot 542004dcb9 Merge "Require Parsoid HTML 2.0.0, and handle its <audio> tags" 2018-10-02 20:47:59 +00:00
Ed Sanders d5d23ee4be Require Parsoid HTML 2.0.0, and handle its <audio> tags
Bug: T201081
Depends-On: I6514b9b0a85588c7eaae5e6989789656cfc3253a
Change-Id: I6052dcf3e414d9506ff7ec7a6b5d8f4eeb4a703a
2018-10-02 12:15:45 -07:00
Ed Sanders 349c2f3638 Avoid jQuery in ve.dm.Model.static.describeChange(s)
Change-Id: Ide3ad119f8c111b78b9adfe4a07079d143070fd1
2018-09-27 20:26:47 +01:00
Bartosz Dziewoński 42ebd10090 Correct some doc comments' syntax
I ran Closure Compiler over the codebase just to see what would happen,
and it printed some useful warnings.

Change-Id: I56d40b11e6d1dd7ce68a5e59da511f66e928647f
2018-09-26 14:49:52 +02:00
jenkins-bot bb6afe3e8b Merge "MWTemplateSpecModel: Factor out getLocalValue, avoid isPlainObject" 2018-09-24 18:48:50 +00:00
Ed Sanders e2a5bfd224 MWTemplateSpecModel: Factor out getLocalValue, avoid isPlainObject
Change-Id: I0fe009c899e8b6f44658253bf5c21c3b767067da
2018-09-24 18:36:31 +00:00
jenkins-bot add7b4d96f Merge "Change type from 'frame' to 'thumb' when resizing" 2018-09-24 16:07:19 +00:00
Ed Sanders 985a94777a Change type from 'frame' to 'thumb' when resizing
Bug: T204185
Change-Id: If40c70a074263b870aee4e5c87c3f4b5e98d0c4b
2018-09-24 15:31:58 +01:00
Thalia bbed4307d7 Separate node classes into individual files
Bug: T205231
Change-Id: I84a6f2f7a842ab44e1f7103c0f288deda0451e79
2018-09-24 12:44:45 +01:00
David Lynch e050bb9ecf dm.MWTableNode: include paragraph in suggestedParentNodeTypes
This allows cleanup of empty paragraphs following block-level insertions to
work.

Bug: T201573
Change-Id: Id537d86c72c01ab2c71d2043e906f4c32ef755eb
2018-09-17 09:26:38 -05:00
Ed Sanders 4ee09f75af Replace Bugzilla numbers with Phab numbers
Change-Id: I0e91d63b3872520b8f66002615967b2cfe235bf5
2018-08-09 15:11:27 +01: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
petarpetkovic 50d556e8d2 Make link annotations more flexible
* When ve.ui.MWLinkAnnotationInspector is being initialized,
internal and external annotation inspectors are hardcoded to
new ve.ui.MWInternalLinkAnnotationWidget and
new ve.ui.MWExternalLinkAnnotationWidget. Make this creation
more flexible by creating these inspectors through a method,
which inheriting classes can override.
* In ve.ui.MWLinkAnnotationInspector.getAnnotationFromFragment,
factor out the creation of link annotations, so overriding
classes have the ability to provide different internal and
external annotations.
* In newFromTitle, static method of MWInternalLinkAnnotation,
creation of `element` isn't flexible for reusability with
slight changes to attributes passed to the constructor. By
factoring out the creation of attributes, inheriting classes
can reuse the existing structure and alter the attributes if
needed.

Bug: T195064
Change-Id: I2037464a7be77783837e9810691c8e372c8197c6
2018-07-26 15:12:19 +02:00
Santhosh Thottingal 2eb493bfcf
ve.dm.MWInlineImageNode: Fix undefined data-mw in toDomElements output
Bug: T198941
Change-Id: I52c670dcc1a4dfe03c954b053d344c22e7b48a8d
2018-07-18 16:46:07 +05:30
Ed Sanders 5cdbc17899 Pass video thumbtime to thumbnail metadata request
Bug: T198150
Change-Id: Ic8895c359a92fcc60ac486e3daf86db02599d3ff
2018-06-28 15:52:50 +01:00
Ed Sanders 534b3d66cb Update VE core submodule to master (a1fd90540)
New changes:
71baf1c02 Create an 'htmlMsg' function for HTML messages with HTML or DOM arguments
9a7af223e Use ve.htmlMsg to highlight values in attribute changes
a1fd90540 DiffElement: Refactor describeChanges tests

Local changes:
Implement getHtmlMessage in mw.Platform and use for DiffElement

Bug: T195243
Depends-On: Ib4ad16858e4241d33d018830dbcfded63ff703af
Change-Id: Ib5fa39e4f2f529948354b03a141542e23d169fe0
2018-06-20 12:53:43 +02:00
jenkins-bot 59e59a5fdf Merge "VisualDiff: Don't compare images with different src's" 2018-06-11 17:44:48 +00:00
jenkins-bot c04e934361 Merge "Simplify conversion of images" 2018-06-07 20:51:51 +00:00
Ed Sanders b79c98f1e3 Simplify conversion of images
Assume that images provided by Parsoid will adhere to the DOMspec.

Change-Id: I52eb4f27e6b1e1cd092133c3e27e42021ae83783
2018-06-05 13:05:40 +01:00
Ed Sanders bb6cd33821 VisualDiff: Don't compare images with different src's
Bug: T196343
Change-Id: I99ddce806e044ca427bf01b41d164c89dd2e15fd
2018-06-04 18:49:18 +01:00
Ed Sanders cb36c6ded3 Fix parsing of external links, now Parsoid adds 'external' classes
Bug: T196025
Bug: T188656
Change-Id: I89b8ba378108bde6c8db0144ed306cbc8471111b
2018-06-01 08:47:46 +00:00
Ed Sanders 9386d54be9 Fix template param diff when value is empty string
Bug: T195764
Change-Id: I0bd5fe71996a2ffeaa201e549f8515439c07996d
2018-05-28 14:56:53 +01:00
Ed Sanders eb70a1c371 $.isEmptyObject -> ve.isEmptyObject
Change-Id: I309337fcffce7b1759bfca32215461171e869c5c
2018-05-20 12:00:09 +02:00
jenkins-bot 6cc9e81238 Merge "dm.MWInternalLinkAnnotation: account for ? in fragment" 2018-05-18 18:48:16 +00:00
jenkins-bot 3999f76346 Merge "Use ve.ce.nodeFactory.createFromModel" 2018-05-18 18:27:31 +00:00
jenkins-bot e0e8f84322 Merge "Use CE rendering for invisible templates" 2018-05-18 18:27:29 +00:00
David Lynch 909aecbd26 dm.MWInternalLinkAnnotation: account for ? in fragment
It was failing to properly ignore the fragment if it contained a ?. This
resulted in such fragment-selflinks being considered a link to a wikipage with
a title of their full URL. As such, only consider the pre-# section for ?s.

Bug: T194463
Change-Id: I205f86d2b4abcf91dd6a84e3013e899e953a6842
2018-05-18 19:58:21 +02:00
Ed Sanders 3c1ef8cff8 Simplify valign code with a loop
Change-Id: I90cc74d19b46ea2f5a603b1fd39393debefc8e7c
2018-05-15 11:57:41 +00:00
Ed Sanders 7254fbe2cf Use better align change descriptions
Adds support for align=none.

Also don't show changes from class names.

Change-Id: Ia00a51dd52af73183e98c8a87f4c60ee5380d81f
Depends-On: Ic668454c4b4b069dab46a608530c85a5bb7e7ad8
2018-05-15 11:57:33 +00:00
Ed Sanders d7d4eb3126 Use ve.ce.nodeFactory.createFromModel
Change-Id: I1a826c3c0985ef0d8ad0b669886e29aa021c90c1
Depends-On: I259face33154b795143c8820abdfb6b4a495f141
2018-05-11 17:05:09 +00:00
Ed Sanders c2e16186a0 Use CE rendering for invisible templates
Bug: T170107
Change-Id: I7bce9e7b77ce22953bb0141d81871b53a4f005db
2018-05-11 17:05:03 +00:00
Ed Sanders 478b0bcbb9 Create getters for localised APIs (getContentApi/getLocalApi)
Pass through the current document when available, otherwise
assume the current surface's document.

Also add a getter for getPageName, so that can vary based
on the target document.

Bug: T193856
Change-Id: Ifdc951fdc6a43b924d102e3fcd7e59e52023757b
2018-05-05 14:32:55 +01:00
Ed Sanders 1bd430c9d1 Convert most uses of isForClipboard to doesModeNeedRendering
Depends-On: I0f1b90056e9d1a4fa0e188700604709297593924
Change-Id: I6fa1cde51ffc859b57ab557e3ddf8a76d92bf94f
2018-04-30 16:10:27 +00:00
Ed Sanders 95258a9969 Visual diff: Describe redirect changes
Change-Id: Id31e8399556dab9b47bc1d21c62cb82af3a0e7bb
2018-04-27 21:07:41 +01:00
jenkins-bot 5ae421d715 Merge "Refactor ve.dm.MWTransclusionNode.static.describeChanges" 2018-04-18 07:26:10 +00:00
jenkins-bot bc12e25b35 Merge "MWExtensionNode: Diff mw.attrs" 2018-04-18 07:26:08 +00:00
Ed Sanders b38500f102 Only resolve wikitext promise when progress dialog has closed
Logically depends on I0cdb004011 to fix the bug.

Bug: T182402
Change-Id: I8ecd695c052a6c759b8261e81fb25c771bdf3d56
2018-04-17 16:33:14 +00:00
Ed Sanders bcf3783c1c Refactor ve.dm.MWTransclusionNode.static.describeChanges
Removes some duplication.

Change-Id: If68401617cde60cf151bf132f33e5d9dc42bbf72
2018-04-12 17:46:47 +01:00
Ed Sanders 4fdf5b08b4 MWExtensionNode: Diff mw.attrs
Bug: T191450
Change-Id: Ia6bfc4d2f04243970d6f65fd0ccfd650aee5da06
2018-04-12 17:46:47 +01:00
Ed Sanders 637d869d99 Convert href-less links to spans
Bug: T191598
Change-Id: I0993869ed53842f9de60ff7e68f79a69da1d23c7
2018-04-09 18:04:08 +00:00
Ed Sanders 16211cdc09 Abstract API calls to 'parsefragment'
Change-Id: Id0be3207219a6d93cebff2b6b5061cd24898d5cb
2018-04-06 13:49:16 +01: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 63f94f929f GalleryNode: Pass through all arguments in describeChanges override
Change-Id: I66bb6bc2a5e95607beee103e925b3fa641f432d5
2018-04-04 18:00:41 +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
jenkins-bot 5aa1bb8537 Merge "MWTransclusionNode: describe parameter changes for Visual Diffs" 2018-03-21 20:03:21 +00:00
Ed Sanders c245dd9ca0 Improve media context item to show Image/Video/Audio instead of 'Media'
Change-Id: Ie3b7ec62483e725d3ce073095a2a958c1db930d5
2018-03-20 17:45:48 +00:00
David Lynch a228991181 MWTransclusionNode: describe parameter changes for Visual Diffs
Currently limited to single-template transclusions.

Bug: T188389
Depends-On: Id03d6a9866b56c00e11a030ed60b3c6fb7ead3d1
Change-Id: I332b5f5aa789fdc00510e9f03ea96e4058a28961
2018-03-20 10:35:03 -05:00
jenkins-bot e23dd5fb6d Merge "Make gallery dialog work with native gallery implementation" 2018-03-19 23:39:00 +00: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
David Lynch 4e10d5b975 Update rel attribute checks to be aware of multiple rel values
Various checks didn't think a rel attribute could contain multiple values.
Mostly they don't, but to play it safe let's adjust the checks.

Change-Id: I29823b7c8c65ef6b2ff41ce9a801840000972e9c
Depends-On: I33a456351ab025d0c81cfb1a1577d5a2ae9df51a
2018-03-08 14:34:56 -06:00
Jforrester 16437646fe Merge "Update VE core submodule to master (ca771b8bc)" 2018-03-06 13:14:21 +00:00
James D. Forrester d144599cea Update VE core submodule to master (ca771b8bc)
New changes:
7551f6c66 [BREAKING CHANGE] Rename class ve.dm.IndexValueStore->ve.dm.HashValueStore

Local changes:
Follow-through rename of IndexValueStore->HashValueStore

Bug: T188900
Change-Id: If60d0c637fe92f0e7afe916c064fafb17980d063
2018-03-06 12:55:30 +00:00
jenkins-bot eb125877e2 Merge "Revert "For empty / whitespace-only headings, output <p> instead of <h#>"" 2018-03-06 12:22:31 +00:00
Ed Sanders a274bdb8f7 Revert "For empty / whitespace-only headings, output <p> instead of <h#>"
Parsoid now handles empty headings for us in
scrub_wikitext mode (which we use).

This reverts commit 884f301aa0.

Bug: T187913
Change-Id: I8690bbced64be76622929f78f9c9e0d8f85d4be8
2018-03-05 23:27:52 +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
Bartosz Dziewoński 98a1bb09c0 Centralize Parsoid resource name parsing logic
Let's keep the ugly regexp and the comments about why we do this in a
single place.

This is mostly without behavior changes, with three exceptions:
* ve.dm.MWImageModel#attachScalable now passes a title with spaces
  instead of underscores to the Scalable (this doesn't matter because
  it's normalized to use spaces later anyway).
* ve.dm.MWImageNode#getFilename now returns a title with spaces
  instead of underscores. This is used in some API queries and when
  rendering thumbnails for missing files, and this format is actually
  more correct for both of these.
* ve.dm.MWTemplateModel now URI-decodes the template title. This
  actually fixes a bug where trying to edit a template transclusion
  whose title contains a '?' would throw an exception about invalid
  title.

Also, clarify that the return value of ve.dm.MWImageModel#getFilename
and ve.dm.MWImageNode#getFilename is different :(

Change-Id: I8e09015cea82308017ed925ec755b7231518126e
2018-02-28 03:01:05 +01:00
Ed Sanders 366219e953 Always set sourceMode=true on dm.MWWikitextSurface
Change-Id: Id46d5ef9c8a585784b8fbd55418d012fff96823f
2018-02-27 12:19:06 +00:00
Ed Sanders d17121d1f3 MWImageNode: getHashObject -> getHashObjectForRendering
The latter was introduced for this very purpose: defining
which attributes affect the rendering (in this case the
thumbnail URL). getHashObject should be reserved for making
full semantic comparisons.

Bonus: Don't distinguish between block/inline images
for URL caching purposes.

Change-Id: I6e6d2547a0d110f07c4d18b8179c168d8c251059
2018-02-24 12:44:53 +00:00
Ed Sanders c41fd90a15 MWImageModel: Check selectedNode exists before asking for property
Bug: T180521
Change-Id: I1c10929abd6f5c4afa03a65904bc76fc82f8fcbb
2018-01-08 15:31:13 +00:00
James D. Forrester 0a7a845a42 doc: Bump copyright year
Change-Id: I0b299c840ede1a1b8552cecfc70c5760ab036181
2018-01-03 17:45:07 +00:00
C. Scott Ananian fde0c180aa Interwiki links are a type of external link
Bug: T97093
Change-Id: I13325075deba127dc620adb0ad1d18ef99352ab2
2017-12-13 15:56:58 +00:00
Ed Sanders 88e8a9f7a7 Convert empty doc to empty string in convertToSource
Change-Id: I8753169ff206b5ce23cfd4c0dc7f97ac6fd1fff0
2017-11-04 21:16:35 +00:00
Ed Sanders 1b8f8d8908 Replace wg(Relevant)PageName with target#pageName
The default value of target#pageName is wgRelevantPageName
but other targets my override this, or change it dynamically
(e.g. ContentTranslation).

Also remove duplicate setter of pageName in mw.ArticleTarget,
already set in mw.Target.

Change-Id: Iebd1def1d4142978a673afec584a0b663644d176
2017-09-26 13:22:00 +01:00
jenkins-bot 0357252601 Merge "Use figure-inline instead of span for inline media" 2017-09-19 16:11:58 +00:00
Bartosz Dziewoński 98351fbcf3 Do not "resolve attributes" in toDomElements() overrides
Resolving attributes means turning 'href' and 'src' URLs from possibly
relative to absolute, so that they don't depend on the base URI of the
document.

This is necessary when rendering for clipboard (and in some other
cases), but at the point when toDomElements() is called, the document
these elements are in does not necessary have a sane base URI set,
giving us hrefs pointing to nonexistent pages.

Don't do it here; it will happen later when we know what the right
document (and right base URI) is, e.g. in ve.ce.Surface#onCopy or
ve.ui.PreviewElement#replaceWithModelDom.

Bug: T169675
Bug: T175157
Change-Id: Ie0a5d6e1c57b8efdbbfba0c24f31ca91d156e200
2017-09-07 14:06:24 +02:00
Arlo Breault 3e96d8ed5a Use figure-inline instead of span for inline media
Bug: T118520
Depends-On: I0681c39301e52a3368b53d38ed518ac66e18f0d6
Change-Id: Id8ec5b77207f43fc7c379b35859dc09f264e2c04
2017-09-05 12:17:14 -04:00
Ed Sanders eb2ee52de0 Create wrapper paragraph when converting block image to inline
This prevents the image jumping into another paragraph,
e.g. in a different table cell.

Move the logic for removing the old image out of MWMediaDialog
and into MWImageModel#insertImageNode.

Bug: T121449
Change-Id: Ibd7c92f3f90c382ceffd3e0defb12ba36a3786d2
2017-08-24 15:56:22 +01:00
jenkins-bot 6f12d066d1 Merge "Rename LanguageConverter markup fields" 2017-08-11 14:28:11 +00:00
C. Scott Ananian 4ff740fe21 Rename LanguageConverter markup fields
Avoid confusion by using `twoway` instead of `bidir`, which could be
confused with the Unicode bidirectional layout algorithm.

Depends-On: Ib59dff22e64f235e30778a5a5b3e525e4fc7fdd3
Change-Id: I7efb35245d48125b167dc0f0ef8f12aa0fff94e5
2017-08-10 10:59:57 -04:00
Roan Kattouw 448944de3b Standardize on /^(\.\.?\/)*/ for interpreting Parsoid hrefs
We used (\.+\/)* instead of (\.\.?\/)* in some places,
but that doesn't make much sense since we won't and shouldn't
ever see stuff like '.../'

Change-Id: I9efcff2d2a34499ca57321dfbae29392ecb422d7
2017-08-02 21:30:31 +00:00
Ed Sanders 539a1cab43 Compare template names when diffing, not just type
As type is always 'mwTransclusionInline/Block'.

Bug: T166801
Change-Id: I76cdf0add780d556206c439797cfcca19133d94d
Depends-On: I0f24d9d81b5491a8f09bc59e5f544f99751fd506
2017-07-28 21:32:32 +01:00
C. Scott Ananian 9ee713d480 Display LanguageConverter markup in VisualEditor
Implement special node types for language variant markup, so that they
display appropriately based on the currently-selected variant.

(Parsoid uses empty elements to represent this markup, so without this
patch anything in -{ ... }- is alienated and disappears.)

A follow-up patch will implement context items and inspectors to
allow editing these nodes.  This patch is basic "read-only" support.

Depends on I4fcdebc2290ec35ba188f4c2e69d578791fbcd67 in Parsoid to
generate the appropriate markup, but this patch is safe to merge
independently.

Bug: T49411
Change-Id: Ie11e9301d2513bfe4a36036481cee9a047f46d37
2017-07-25 15:26:41 +00:00
Ed Sanders 835a775a49 build: Upgrade grunt-eslint from 19.0.0 to 20.0.0
Mostly indent and regex fixes.

Change-Id: Iaf9d02363c78cb71deec5c4cab53a05b67f60600
2017-07-18 12:55:33 +01:00
Ed Sanders dd54c9c95d Return truthy object when image info not found
A missing image should return some data to say the
image is missing, not just reject the promise.

Bug: T169337
Change-Id: Ib41a64a783c1baca88f428417c98e7fb913d14a1
2017-07-03 18:01:33 +00:00
Ed Sanders b3d44c1ccd Normalize to template namespace when comparing
Bug: T169307
Change-Id: Ic3524819fb026713b27b193e4a03338fffd97229
2017-07-03 16:41:08 +00:00
Bartosz Dziewoński 624211a60f Use Parsoid data for template names rather than detect from wikitext
We were incorrectly handling transclusions with trailing
newlines after the template name.

This also improves handling of non-template transclusions,
e.g. parser functions like `{{int:mainpage}}`, which are
no longer mangled as if they were page names.

ve.dm.MWTransclusionNode#isSingleTemplate will now match
a template even if it's name is itself template-generated.

Logic for turning Parsoid's hrefs into page names stolen
from ve.dm.MWImageNode.prototype.getFilename.

Bug: T167613
Change-Id: Ibecf71338eb37bb3da81a7372e4ed41140a9af57
2017-06-14 23:15:18 +00:00
Ed Sanders 9ccdf15695 dm.MWTransclusionNode: Move mixin comment, remove duplicated static property
Change-Id: Id8f8205db92a70dde7ba22b39e90e37590efb3d1
2017-06-06 16:28:01 +01:00
David Lynch 07e4d5fd17 dm.MWTransclusionNode: remove TableCellableNode mixin
Change-Id: Ic08c7ba03ad2bee35a96a750377450475d0efeed
2017-05-19 20:55:14 +02:00
Ed Sanders 153f7b034d Allow extension nodes to convert to a specified type of dataElement
Sub-classes want to dynamically change type, e.g. inlineFoo/blockFoo,
but doing this after storeGeneratedContents invalidates the cache,
so ensure this is done as soon as the element is generated.

Bug: T151130
Change-Id: I80e2f2587cff8e9d9fe6ded5d8581263268deaa8
2017-05-19 16:08:01 +02:00
jenkins-bot cfa8de994e Merge "MWTransclusionNode: Implement MWTransclusionTableCell" 2017-05-15 18:05:01 +00:00
David Lynch 0eb6b94b4c MWTransclusionNode: Implement MWTransclusionTableCell
Back in de98382a55, references to MWTransclusionTableCell were introduced,
but weren't followed through on. So, actually add it. Have cellable
Transclusions use it as their type.

Bug: T144122
Depends-On: I054f12f4218102a12d7a9ea843f9c61e8825c52c
Change-Id: I367f878bfd1c58e20b62368cb78120604b48d791
2017-05-15 12:09:11 -05:00
jenkins-bot 75b762d5c4 Merge "Specify suggested parent node types for tables" 2017-05-04 18:50:48 +00:00
Ed Sanders 9d83efc747 Specify suggested parent node types for tables
This won't do anything useful until T164017 is resolved.

Bug: T164016
Change-Id: I39bffe2dc59a97888b81bdbe990e55ba95b0dd94
2017-05-04 14:50:49 +00:00
Ed Sanders 8e6105fec8 Allow headings in divs
Bug: T164453
Change-Id: I986b1b376a592095c94d29a102278d4fde0a621f
2017-05-04 12:43:36 +01:00
James D. Forrester 486bbd7609 Follow-up 57a06a6: Use the same attribute name on read and on write
Bug: T164054
Change-Id: I6770f6c91248fcd9ab39322413874e20a1b65552
2017-05-02 14:42:22 -07:00
Ed Sanders 7c0fc8d3b9 Fix minor lint errors and typos
* Commas that should be semicolons
* Unnecessary 'call's

Change-Id: I11a80702b5396a36e3deecc6e706a397cc354bd8
2017-04-29 12:36:17 +01:00
jenkins-bot 323f2479ea Merge "Add basic support for Parsoid HTML5 video/audio" 2017-04-28 15:26:44 +00:00
Ed Sanders 0c2bb3da9c Add basic support for Parsoid HTML5 video/audio
Change-Id: I30b787261c57e912e571170d8aa2d04726b6aa3a
2017-04-28 14:08:18 +01:00
David Lynch 88f3191926 tests: MWInternalLinkAnnotation getFragment
Also, fix docs for it. It could also return null for a missing fragment.

Change-Id: Ib6df379c5c3686a59026b6b66f26b3050ede231a
2017-04-27 11:21:58 -05:00
James D. Forrester 8fd621ad74 MWTransclusionModel: Update for change in TemplateData
Depends-On: I7905502d0c419a04e4487095214634f1513b461c
Change-Id: I97a1bfc9f9ead082a673a91b9d2053630a90309c
2017-04-24 19:13:59 +00:00
Ed Sanders f20b9b0aa0 doc: Tag mixin inheritance hacks with bug
Also mixin dm.MWResiazble to dm.MWImage (already done
in CE).

Bug: T92540
Change-Id: I32215873993a7e9a7f775ce3f39e2d378e0f31cd
2017-04-13 11:00:17 -07:00
James D. Forrester 57a06a6e75 dm.metaitems: Turn grouped metas into variadic ones
We're getting rid of meta item grouping, so we need to prepare.

Merged:
* ve.dm.MWIndexMetaItem
  from ve.dm.MWIndexDisableMetaItem and ve.dm.MWIndexForceMetaItem
* ve.dm.MWNewSectionEditMetaItem
  from ve.dm.MWNewSectionEditDisableMetaItem and ve.dm.MWNewSectionEditForceMetaItem
* ve.dm.MWTOCMetaItem
  from ve.dm.MWTOCDisableMetaItem and ve.dm.MWTOCForceMetaItem

These three now inherit from ve.dm.MWFlaggedMetaItem to avoid code duplication.

Change-Id: Ic8a9cdb1226dccac2c27e7f4b965c1590a7387c0
2017-04-11 11:13:18 -07:00
David Lynch d5ac18a466 LinkCache: don't treat a link with a fragment as a selflink
This matches the rendered output for the page.

Bug: T162669
Change-Id: I1ea0ab37a2751c0b4669da8a23adf0ce271facea
2017-04-11 12:19:01 -05:00
Ed Sanders 55368c1170 VisualDiff: Ignore changes to originalMw
Can happen when switching edit modes.

Also fix typo in describeChanges.

Change-Id: I2c02adc34aef975b9f6f902a74907d24b7edc54a
2017-04-10 21:22:16 +01:00
Ed Sanders d50f49de82 MWExtension describeChanges: Actually return value of parent
Bug: T161357
Change-Id: I7a81ab68dc2f632bd6f380caafef2cba326ad0ef
2017-04-03 22:57:49 +02:00
jenkins-bot 34fa4dcda6 Merge "Use original title or normalized title when inserting link text" 2017-03-24 22:27:33 +00:00
Ed Sanders 738d3aff47 Use original title or normalized title when inserting link text
Original title will preserve the case of what the user entered
into the inspector. Noramlized title will remove any unwanted
leading colons from file/category links.

Bug: T118408
Bug: T124410
Bug: T160977
Change-Id: I92ffc19eab4eead0d124e84afc1e5a0a3e535867
2017-03-24 22:16:31 +00:00
James D. Forrester c70526f0a2 ve.dm.MWImageNode#describeChanges: Ignore borderImage noise from the model
Also follow-up 335b56728a by adding the visualeditor-changedesc-align
i18n which was missed.

Change-Id: I801f66c0028f71cf2cdbcb8f1675ba1f5a3cde31
2017-03-22 17:28:41 -07:00
Ed Sanders 9cd8faea8b VisualDiff: Add custom messages for change descriptions
Bug: T151403
Change-Id: I469a3c7897f2417c1850364f65da51c0deca2386
2017-03-16 14:36:09 -07:00
Bartosz Dziewoński 49f603c703 Update <pre> support for Parsoid changes
After 79ccfb9372cb57afa569036ef39ead13abfba673, MediaWiki's `<pre>`
tags get rendered as `<pre typeof="mw:Extension/pre">` in Parsoid HTML.
MediaWiki's indent-pre syntax (block indented by a single space) is
still rendered as `<pre>` in Parsoid HTML, however.

Indent-pre is still handled by MWPreformattedNode (no changes).
Introducing MWPreNode, which will handle `<pre>` extension tags,
and MWPreDialog to change its contents (and allow converting
to MWPreformattedNode).

Pieces copied from MWGalleryNode, MWLinkNodeInspector, CommentInspector.

Possible future improvements:
* Add a specific icon for MWPreContextItem
* Avoid API roundtrips for rendering (but rendering wikitext <pre>
  is not as simple as it looks)
* Consider a way to insert these other than '<pre' sequence

Bug: T159900
Change-Id: I5bc4ea6e5d893736f65ef0dd43b08c18cb1a1e85
2017-03-14 14:08:50 -07:00
James D. Forrester 6fd475e8ec MWWikitextSurfaceFragment#convertFromSource: Don't make an invalid doc
Though neat, this hack to get the internal list doesn't seem to be used
and creates an invalid document (just an internal list with no content,
so the internal list is at the start and the default selection position
is inside it). Instead, use the ve.dm.Document.static.newBlankDocument()
utility function that was made for this use case.

Bug: T153509
Change-Id: Iba5931cb5e3f939a803c1d59fa0d8f30a0513f84
2017-03-02 05:43:03 +00:00
Bartosz Dziewoński 461f99e9da Document usages of ve.dm.Node.static.suggestedParentNodeTypes
Ed told me this.

Change-Id: I5e3160d3e5c38f9babc133db8977a6e6b8bbd610
2017-03-02 00:11:54 +01:00
Ed Sanders 501d0c94d2 Cache generated content request when inserting templates
We request the generated content of a template to determine
if it will be block or inline. This is the same request as
the view makes later to show the rendering, so we should cache
this repsonse.

Bug: T156698
Change-Id: I0ffd36ccd0aa821aa44d99328f2e3a2abc23dc0f
2017-02-22 04:00:38 +00:00
Ed Sanders 9337e6ecbd Tables: Add support for editing mw-collapsible/mw-collapsed
We don't support editing <div>s right now (as they're BranchNodes) nor
<span>s (as they're annotations), but most of those are inside templates
and so not editable in VE anyway.

Bug: T157989
Change-Id: I647b2a544fd16952696d0de8d07cb72189b27ecb
2017-02-16 17:21:44 +01:00
Ed Sanders f2cf73eaaf Define default HTML types for extension nodes
Use span/div for inline/block nodes respectively.

Bug: T157389
Change-Id: I4c501a6af88a490eec83af26adaa515a2b1d18d1
2017-02-07 20:12:39 +00:00
jenkins-bot 50e7fd0653 Merge "Fix MWInternalLinkAnnotation.getTargetDataFromHref's behaviour with URLs containing query parts" 2017-01-05 15:08:33 +00:00
James D. Forrester 122f49b2dd build: Bump file copyright notices for 2017
Change-Id: I3c20809e71cc0da58123e1b5f29c4f3aac945496
2017-01-03 08:58:33 -08:00
Alex Monk 4c061de2e0 Fix MWInternalLinkAnnotation.getTargetDataFromHref's behaviour with URLs containing query parts
ve.dm.MWInternalLinkAnnotation.static.getTargetDataFromHref(
	'http://mediawiki.krenair.dev/mediawiki_dev/wiki/Main_Page?veaction=editsource',
	ve.init.target.surface.model.documentModel.htmlDocument
)

Wrong, current result:
Object {
	title: "Main Page?veaction=editsource",
	rawTitle: "Main_Page?veaction=editsource",
	hrefPrefix: "",
	isInternal: true
}

New result:
Object {
	title: "http://mediawiki.krenair.dev/mediawiki dev/wiki/Main Page?veaction=editsource",
	rawTitle: "http://mediawiki.krenair.dev/mediawiki_dev/wiki/Main_Page?veaction=editsource",
	hrefPrefix: "",
	isInternal: false
}

Change-Id: I3d6d7fcfeb0d8354623026c831605c7633c3e11a
2016-12-24 20:12:44 +01:00
Ed Sanders 854256bb8e Use deep clone for empty convertFromSource
Bug: T153254
Change-Id: I0dc6be0d20020e3fb385c9d065f9395dbda5a6b6
2016-12-14 22:09:25 +00:00
Alex Monk c843824c97 Batch gallery imageinfo requests via ImageInfoCache subclass
Also get rid of .join( '|' ) for API request parameters per Bartosz

Bug: T147067
Change-Id: If4444cca300d65e28d6fb9003fcac5e076a5129a
2016-12-06 22:10:19 +00:00
Ed Sanders f01d617c53 Bypass API call when wikitext is empty string
Change-Id: Ie0cedfaae286f73e73bcde7bfca3cb2ae6197924
2016-12-03 17:44:04 +00:00
Ed Sanders c97e0b58d4 NWE: Disable progress bar when pre-parsing for WindowAction's
The progress bar dialogs interfere with the life cycle
of the window you are trying to open. Just disable these
progress bars for now to avoid catastrophic behaviour.

Change-Id: I77c8ae67a2d502bbd189836deb320cd55c3cb11a
2016-12-03 17:20:24 +00:00
Ed Sanders 9ceb13ce60 Update VE core submodule to master (5be61ce)
New changes:
860954b [BREAKING CHANGE] Parse selection before applying source tools

Local changes:
Implement convertFromSource/convertToSource in WikitextSurfaceFragment

Depends-On: Iaa41c49e2f8e28af28a8a64cb6915f705fa35e8c
Change-Id: I746619d442fb565cd582cb09de3126526c73c333
2016-12-03 03:43:59 +00:00