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
New changes:
c17816c5f Diff sidebar: Make font size slightly smaller
f8439f4cc Deep-freeze linear data
a8919f78e Deep-freeze linear data added by transactions
Local changes:
Fixes for deep-frozen linear model
Bug: T119236
Change-Id: Iae4362c8dab0f2bd335e24498f3e0522b8b1d4fc
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
Parsoid sometimes emits malformed links (with no 'rel') when a
misnested <figure-inline> tag is moved around. Converting them to
internal links, and adding the 'rel' attribute, makes the element no
longer match in selser, and causes dirty diffs. Alienate them instead.
Bug: T64473
Bug: T150196
Bug: T267282
Change-Id: Ic7b48eb2e61585445a1fb98dc2b516d3b6da3cc4
Make ve.dm.MWTemplateModel#serialize ignore empty parameters if they were not
present in the transclusion before the edit. This avoids dirty diffs where an
user edits a template transclusion via VisualEditor, and the editor adds all
available template parameters to the edit wikitext, even if they were not
changed during the edit.
This logic was ported from the old Wikia-WMF VisualEditor project.[1]
Additionally, add tests for ve.dm.MWTemplateModel serialization.
---
[1] https://github.com/Wikia/app/pull/6450/commits/858eaa9
Bug: T101075
Change-Id: I35f8812724658904d30034db4e4684193a661c1e
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
Wrote code such that only redlinks and normal page urls
using the script path are treated as internal links.
Bug: T248076
Change-Id: Ie476bf7f4b389a659899eab4351c912fc6b24bee
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
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
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
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
New changes:
479b50059 Localisation updates from https://translatewiki.net.
c595d8ab0 Metion task related to Firefox hack
0a160fac2 Don't trust selections from the server
d796f3db5 rebaser: Update dependencies
b097dfaad ve.dm.Transaction: Don't translate offsets inside annotate-only replacements
eadee0343 FragmentWindow: Replace previousSelection with initialFragment
561e88158 Use ve.dm.example.imgSrc everywhere
d1dceab31 DesktopContext: Remove onModelSelect event
85947ac55 Pause synchronizer while staging
9a4dd169d Catch various out-of-bounds exceptions
341114afc Remove CE HTML from DM html test fixture
5d3a673e0 ve.ce.Document test: Add src to test image
182ac338e Evalutate fragment selection after staging
e032fa161 rebaser: Drop document opacity while paused
Change-Id: Id551ee2e6510610b8f2e12cf77ce3c8429700872
* 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
* 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
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
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
Many of the details of the behavior don't really matter, but
I suppose it doesn't hurt to document them.
We really want to test two things:
* When converting from DOM to model data, a <mwImageCaption>
or <mwGalleryImageCaption> is always generated, even if
DOM has no caption.
* Model data that doesn't have <mwImageCaption> or
<mwGalleryImageCaption> is nevertheless still valid and
converting it to DOM doesn't fail.
Follow-up to Ie82fb339f6bd8ae1b289235bf5402490722d9a7c.
Change-Id: I0a10351e9c1589afbee76d8a85f869987de3de22
New changes:
617708fe1 Update rel attribute checks to be aware of multiple rel values
c22428f81 ve.ce.LinearSelection: Don't throw exceptions only to catch on the next line
406db2ce3 Localisation updates from https://translatewiki.net.
33f94faf7 tests: Update ve.dm.Converter#getModelFromDom cases for new metadata behavior
d85bf0d68 Use documentFragments when DOM splicing
110519f1c Update documentation now describeChange can return jQuery
ff7fa5fa0 Change http://www.mediawiki.org to https://www.mediawiki.org
09faa4a3d Fix error with tabs per this:
a329edf67 Localisation updates from https://translatewiki.net.
da864cc5e demos: Separate out and fix mobile-dist
380cc90c5 VisualDiffs: Unit test for timeout behaviour
601173c02 Clarify the "Log" button label on the debug bar
c52a2e07e demos: Fix auto-save by only storing doc state if not recovered
1b8d2c457 Auto-save: Save and restore last known selection
9e279e77e Fix deprecated icon name 'alignCentre' > 'alignCenter'
Local changes:
tests: Update ve.dm.Converter#getModelFromDom cases for new metadata behavior
Bug: T189687
Bug: T189939
Depends-On: I2059d8ce9140b733ee92436de395d735ab06b9df
Change-Id: I3c210112c84e2d2bd8226de3dad195bf17afb4c2
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
Parsoid now handles empty headings for us in
scrub_wikitext mode (which we use).
This reverts commit 884f301aa0.
Bug: T187913
Change-Id: I8690bbced64be76622929f78f9c9e0d8f85d4be8
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
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
New changes:
21a5d55b8 [BREAKING CHANGE] Store metadata as block nodes in the main data list
2f9868aae Localisation updates from https://translatewiki.net.
7a224cf4b Remove <style> tags from pasteTarget ASAP
fb4e894b6 Workaround missing child selector in OOUI for menuLayout
fa4f35281 rebaser: Fix sequencing of server operations
931ee29f6 SurfaceSynchronizer: Also translate selections that are not mentioned in the change
d232b8f04 Disable undo/usurp within SurfaceSynchronizer
d1b7fc597 ve.dm.Change: Truncate stores as well as transactions on conflict
7606f684d rebaser: Only apply artificial delay to submitChange events
9473e8b42 Toolbars: Replace $.width with clientWidth/offsetWidth
abb8f2075 ve.ui.DesktopContext: Remove unused CSS
050414205 ve.ui.DesktopContext: Remove old unnecessary CSS
7b8cbb830 Failing test case for losing annotations
5447d33e4 CommentNode: Protect against call after teardown
bf98ca2b6 Rebaser: Use better hack for disabling history commands
90c07f46c Rebaser: uninitialize fully
2a59016e4 Move updatingName recursion guard out of debounce
Bug: T56299
Bug: T185532
Bug: T185544
Bug: T185599
Bug: T185716
Bug: T185747
Change-Id: I45251811e3fbb3323a25ca5cf364e4cb94aa1d01
New changes:
44d2d666c Remove custom icon sizing from block slugs
793d131f9 Ignore covering annotations when looking for plain text pastes
b0025f3ab dm.Document fixupInsertion: check suggestedParents as well
73ce638f1 ve.ui.TableLineContext: Fancier popups
9d54d531e Visual Diff: add internal list diff
4f4e121b5 DiffElement: Add hacky support for template-defined references
Local changes:
dm.SurfaceFragment tests: exercise fixupInsertion for mwHeadings
Core VE doesn't have any elements with suggestedParents, so make sure this is
properly tested.
Bug: T153315
Bug: T162819
Bug: T164017
Bug: T165865
Change-Id: I01489226d282abe71020e65358ead24fe07692f7
<a href="Foo%3F"> would dirty-diff to <a href="Foo?"> and also render
as such, pointing to the wrong page.
We also called decodeURIComponent() on the href twice, which can't
have been good.
Move URI decoding and underscore normalization into
getTargetDataFromHref(), and add rawTitle for callers that need it.
Put rawTitle in the origTitle attribute, so that equivalence
comparisons (decode(origTitle) === title) work as intended.
Bug: T145978
Change-Id: I29331a4ab0f8f7ef059c109f6813fa670a2c7390
New changes:
14b5fbc [BREAKING CHANGE] Move originalDomElements to the IV store and use MD5
c5d21f0 Provide methods to (de)serialize transactions
Local changes to move originalDomElements to IV store
Depends-On: I8a71c1a40ec35108d0a9a388da6f75632f8dc53c
Depends-On: I32c9b5f984fcf96e3354841ecfcd444149e8f159
Change-Id: I0fbb6324eede94558426178cbdad6b5daf0f8318
Using the same logic we used for converting pasted URLs, detect
internal links by matching their base.
Currently link pasting is still disabled in the VE target, but
has been enabled elsewhere (Flow).
Change-Id: Iebd61abbe1fe82fd18d129e1dbc815ca75f44e87
Now that some targets support link pasting (Flow) we need to
make sure that pasted links match to an allowed type ('link/mwExternal')
instead of plain 'link' annotations which should never exist
in an MW document.
In a later commit we should auto-detect internal links.
Change-Id: I7faae834aa6e730c3cf93a691331a05fd0fe3d5c
This prevents tables from getting sanitized even on
VE to VE copy. Also by calling ClassAttributeNode sanitize
extra CSS classes are removed.
Bug: T97462
Bug: T125220
Depends-On: Ia3ce386b2a03bc227818b10423bca72c736c0656
Change-Id: Ifd91e00b40665b446bbdcdf8859d2bb641bc0e67
They make it a little bit more cluttered to hunt down problems when
testing. So, use the minimum image instead of just "Foo" or similar.
Bug: T121636
Change-Id: I3209c377ad870f669cac7d40d991968cff52c39e
New changes:
6cae77b ElementLinearData: Add another case to hasContent
d2e15f2 SurfaceFragment: Improve handling of delete all
16db2a3 Return 'null' instead of null in ve.Filibuster observers
24de6b2 Introduce key down handlers to separate logic from ce surface
f77fe99 Localisation updates from https://translatewiki.net.
062cb26 Localisation updates from https://translatewiki.net.
Change-Id: I61c94983c7898af219266af3022761638c7578b7
New changes:
63c5f67 [BREAKING CHANGE] GeneratedContentNode: Introduce new hash for rendering
6dd1cb2 Add ve.dm.Surface#selectLastContentOffset
Local changes:
* Use new getHashForRendering in GeneratedContentNode users
As we no longer have a model hash, remove the originalIndex check
and just rely on the deep comparison of mwData (trading a deep copy
for a hash computation should result in similar performance).
Bug: T114689
Change-Id: Ida0ee0234418408b735232c633d41908a424a9ff
Add a parentDoc parameter to the MWImageModel constructor and use
it to inherit language, direction and HTML document. Remove
getLang(), setLang(), getDir() and setDir() whose only purpose
was to propagate the language and direction from the parent document
in a hacky way.
Also add a parentDoc parameter to newFromImageAttributes(), replacing
the lang and dir parameters. Remove the unused and ill-conceived
caption parameter.
This causes caption documents to always have an HTML document
for URL resolution. Previously, this worked when editing existing
images because a document generated by cloneFromRange() (which
propagates the HTML document) was passed into setCaptionDocument(),
but it didn't work when creating new images.
Bug: T109599
Change-Id: Ida36862092cd779ffc2f04c0ecbc1164f8d71453
New changes:
263b4fc Localisation updates from https://translatewiki.net.
0487dcc ve.dm.CommentNode: Add space to comments' clipboard html
3a5422b DebugBar: Add a close button
Change-Id: I9ff3a77a3eb8d2d9a9dc61aa6cb52db577d1592e
In clipboard mode we need the full body regardless of if the reference
has changed since load or not.
Bug: T104230
Change-Id: Ie59e04d381f2fd2680e8af0cf05a80df71052822
This is a hacky fix, we should find a better way of telling the
model registry that language annotation loses to certain RDFa types.
Bug: T101977
Change-Id: I8be3aa55cbbc2832b8a02a15de27289b3041967e
New changes:
8dc8b26 Trim leading and trailing whitespace from annotations
306feb4 Add get(Col|Row)Count to TableSelection and use in isFull*
1c06d21 Cursor holders for native cursoring to ce=false nodes
b08384d Provide file extension fallback for FileTransferHandlers
28844ed [BREAKING CHANGE] Move all icons to OOjs UI's icon packs
9d37355 demo: Set 'lang' attribute of target
8945420 Follow-up 8dc8b266: account for annotations that return []
c2bbc97 Localisation updates from https://translatewiki.net.
Local changes:
* Switch to using OOjs UI icons for VisualEditor core features
* Update test for whitespace trimming
Change-Id: I12b22a411600b6e8e61858e7ed600fb53eedd95d
MWExtensionNode:
* Inherit from LeafNode at the top level. Inline and block only
differ in CE where inline has isContent set.
MWAlienExtensionNode:
* Inhert from MW(Inline|Block)ExtensionNode respectively. Both
mixin MWAlienExtensionNode.
Bonus:
* Bring in paragraph unwrapping on inline nodes from MWMathNode
Bug: T93712
Change-Id: Ib04234f740cf1f27c861d8b3cfeea5e323b94678
Because sending HTML like <h2> </h2> or <h2></h2> to Parsoid
produces undesirable output like == == or ==<nowiki />==
Bug: T51452
Bug: T52100
Bug: T57769
Bug: T61647
Change-Id: If15a1b4b31d4f08c23ecdf2ecf61a8a14a77259a
New changes:
44ca3b6 Use store indices in annotate operations
3ebbcce Make range optional in getUsedStoreValuesFromRange
9d03a5e Set originalDomElements whenever a data element is created
4cfffde Simplify annotation hashes
4eeb8bb Add handlers for font annotations
4a6d6f0 Localisation updates from https://translatewiki.net.
05de45e ve.ui.ToolbarDialogTool: Fix documentation
6797d6d Use type from toDataElements when creating annotations
b3a3839 Store reference to DM document in transactions
c073a24 Load special characters in Platform instead of SpecialCharacterDialog
Local changes:
* Add new files to VisualEditor.php
* Re-sort i18n strings in VisualEditor.php
* Re-run extenson.json creation
* Update documentation HTML file
* Update tests for adjacent annotations fix
Change-Id: I7a5e79e68ab8a7aae0e9af42d011943019f7f85f
Since all transclusion nodes can be interacted with (including the
'hidden' ones,) there is no need for MWTransclusionMetaNodes.
Change-Id: I23d37e3d82029b7475ec68ebb04883c7e05370cc
Also, fix @returns comments (should be @return) and remove unnecessary
@method comments from the documentation.
Change-Id: Icd303626ac745c7ab5bff164f9b8cac276de1523
New changes:
0bc7034 Fix unmodifiedness test in showSelection
6e27ea1 Test clipboard mode in converter
5481dc5 Localisation updates from https://translatewiki.net.
f7623bd ve#resolveUrl: stop accepting string values for base
bce9180 ve.ce.FocusableNode: Remove superfluous ve.ce.Surface#appendHighlights call
Local changes:
* Update test case counter for clipboard tests
* Add clipboardBody to tests
Change-Id: Ie0f149b74abf10e740be63e3759416ecc8bed656
New changes:
159ed9b Add 'width' and 'height' to the list of attributes corrupted by IE
a41b51a ve#track: refactor callback calling convention
4280219 Generate CommentNodes more leniently
bf202b6 Fix old metadata tests to use actual metadata
Change-Id: Ia8515d12f5d443e4e07b2c8291bf127341312e1e
New changes:
0ceafd5 Fix V8 deopt for ve.ce.BranchNode#onSplice
01d2d4b [BREAKING CHANGE] Store originalDomElements instead of htmlAttributes
96005a7 Localisation updates from https://translatewiki.net.
42e672e ve.ui.Toolbar: Don't call #updateToolState from #initialize
373562d Localisation updates from https://translatewiki.net.
Local changes:
Update for htmlAttributes going away
Change-Id: I576a1e5d5883b03d1fff6666926f80a5682a280f
New changes:
e325520 Create APIResultsProvider and APIResultsQueue and add tests
4ead645 Make newFromAnnotation test construct doc2 from data, not HTML
804fb17 Remove useless getDataElementFromDomElement / getDomElementsFromDataElement tests
c2fc6a0 DomFromModelTest: Call modify() on the document, not the data
1535331 Inline ve.ce.View#renderAttributes
Local changes:
Update modify callbacks to work on document instead of data.
Change-Id: Ia875d11627adc38f78dd5010f9ab03e8b083b448
Iff in clipboard mode:
* Set data-ve-no-generated-contents on the main element
regardless of whether we are using orignal DOM elements.
* Set data-ve-ignore on siblings, again, regardless or
where they came from.
Bug: T89658
Change-Id: I82ad60f0b90e0c6ce88c42737bd36d1a289bcf34
Some modules had the same name as test modules in VE core,
and this broke expand/collapse behavior in QUnit.
Change-Id: I7fd0b454b3377b7c289ddebbf91146fcbe5945c4
If data-mw.body.html is not set, search for the element
whose ID matches data-mw.body.id and use its contents.
.body.html is still used for new content: new references
use .body.html, and if a reference using .body.id is
changed, the changed HTML is output in .body.html.
Bug: T88650
Change-Id: I5d614927256d59a3ab20b0bd6e882b5cb8fcda20
New changes:
23a9e11 Localisation updates from https://translatewiki.net.
9f1350f Update UnicodeJS to v0.1.3
f869803 Localisation updates from https://translatewiki.net.
ce11fb3 Use css class rather than jQuery show/hide
0d4584c Fix definition of ve.Range#containsRange
8a5c7d9 Fix rangeInsideOneLeafNode
8ce5f60 Localisation updates from https://translatewiki.net.
d2104aa Track originalHtml in internalItems
9823624 Localisation updates from https://translatewiki.net.
Local changes:
Update tests for internalItem originalHtml change
Bug: T88650
Change-Id: Ie7532cade7e3006e1bf39c12c97962da415ab993
* Remove unused extsrc
* Add <a>s inside of reference <span>s
* Add <li>s inside of reference list
* Change reference list to one for the g1 group rather than the main group
* Consequently, the reference defined inside the reference list moves to g1
** Due to a bug, explicitly set group="g1" on that ref for now
Change-Id: I266a4323c7353e00bd4288d5de51c252bbcdf3d7
We possibly want to discourage this somehow but our current
functionality achieves this by doing an isolateAndUnwrap
which for a table is catastrophic.
Bug: 72990
Change-Id: I79f1348da20385dfec014afcac0fb5464580cf2f
New changes:
925ed5c Move sluggability methods to model
a618491 Calculate slug positions in the model
b8fb05e Make the trigger demo kind of work again
e41d22e Update OOjs UI to v0.1.0-pre (ec785c2c64)
4119470 build: Make headers atop dist files suitable for distribution
fca4fec Follow-up cc657c4: Change strikethrough key command to not clash with Macs
a29a561 Add hasSlugAtOffset to DM document
9f47efb Move getRelativeOffset, getRelativeRange, getNearestFocusableNode to model
aa35e96 Remove hard coded types from canHaveSlugBefore and fix logic
49a239b Emit 'position' and 'contextChange' events correctly
3c50321 Refactor out finding of CE focusedNodes
d6904b5 Update OOjs UI to v0.1.0-pre (f2c3f12959)
Local changes:
* Move ce.Document tests to dm.Document
Change-Id: Ifa5abd0341e858b20e73e9071d597a25112cadfb
The example data still used the old format for data-mw that predates
support for multi-template transclusions in Parsoid. The old format
has now been retired, and any attempt to interpret it will cause
JS errors.
Also removed data-parsoid from most of these examples while I was
at it.
Change-Id: I2b7816b7edc580cec0ed29fb166458351a0c6ed3
The image model should go by image attributes (whether it comes from
an existing node or a new one) and not a node.
Bug: 68242
Bug: 68000
Change-Id: I4cabd678157619331b3c47d3b44bc16a28fd7bd7
Update tests and VisualEditor.php for comment node.
New changes:
5885b6a Update OOjs to v1.0.11
ab2d4cb [BREAKING CHANGE] Show comments inline to the user
Change-Id: Ie2787c3e29951cb7940f65bf104e7c9cccdbebd1