Catrope has submitted this change and it was merged.
Change subject: Don't corrupt categories/langlinks with new types
......................................................................
Don't corrupt categories/langlinks with new types
Parsoid changed these types from mw:WikiLink/{Category,Language}
to mw:PageProp/{Category,Language} in I0f0a826c. We had previously
added support for them in 4d91e4ed but code overwrote the new types
with the old ones on the way out, triggering the DOM corruption warning.
Change-Id: I768ec2ffd623e5a01f18959277786697603a97f0
(cherry picked from commit 660e7c664ad2836891f4c7cd78caacac4a8bf0cb)
---
M modules/ve-mw/dm/metaitems/ve.dm.MWCategoryMetaItem.js
M modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js
M modules/ve-mw/test/dm/ve.dm.mwExample.js
3 files changed, 20 insertions(+), 14 deletions(-)
Approvals:
Catrope: Verified; Looks good to me, approved
jenkins-bot: Verified
diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWCategoryMetaItem.js
b/modules/ve-mw/dm/metaitems/ve.dm.MWCategoryMetaItem.js
index 14a7850..dc9d9b8 100644
--- a/modules/ve-mw/dm/metaitems/ve.dm.MWCategoryMetaItem.js
+++ b/modules/ve-mw/dm/metaitems/ve.dm.MWCategoryMetaItem.js
@@ -48,7 +48,8 @@
'category': decodeURIComponent( matches[2] ).replace(
/_/g, ' ' ),
'origCategory': matches[2],
'sortkey': decodeURIComponent( rawSortkey ).replace(
/_/g, ' ' ),
- 'origSortkey': rawSortkey
+ 'origSortkey': rawSortkey,
+ 'origRel': firstDomElement.getAttribute( 'rel' )
}
};
};
@@ -73,7 +74,7 @@
} else {
category = encodeURIComponent( category );
}
- domElement.setAttribute( 'rel', 'mw:WikiLink/Category' );
+ domElement.setAttribute( 'rel', dataElement.attributes.origRel ||
'mw:PageProp/Category' );
href = hrefPrefix + category;
if ( sortkey !== '' ) {
href += '#' + sortkey;
diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js
b/modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js
index 17b562f..fc5d0c6 100644
--- a/modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js
+++ b/modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js
@@ -39,14 +39,15 @@
return {
'type': 'mwLanguage',
'attributes': {
- 'href': href
+ 'href': href,
+ 'origRel': firstDomElement.getAttribute( 'rel' )
}
};
};
ve.dm.MWLanguageMetaItem.static.toDomElements = function ( dataElement, doc ) {
var domElement = doc.createElement( 'link' );
- domElement.setAttribute( 'rel', 'mw:WikiLink/Language' );
+ domElement.setAttribute( 'rel', dataElement.attributes.origRel ||
'mw:PageProp/Language' );
domElement.setAttribute( 'href', dataElement.attributes.href );
return [ domElement ];
};
diff --git a/modules/ve-mw/test/dm/ve.dm.mwExample.js
b/modules/ve-mw/test/dm/ve.dm.mwExample.js
index 1128928..bfe6c2b 100644
--- a/modules/ve-mw/test/dm/ve.dm.mwExample.js
+++ b/modules/ve-mw/test/dm/ve.dm.mwExample.js
@@ -255,9 +255,10 @@
'category': 'Category:Bar',
'origCategory': 'Category:Bar',
'sortkey': '',
- 'origSortkey': ''
+ 'origSortkey': '',
+ 'origRel': 'mw:PageProp/Category'
},
- 'htmlAttributes': [ { 'values': { 'rel':
'mw:WikiLink/Category', 'href': './Category:Bar' } } ]
+ 'htmlAttributes': [ { 'values': { 'rel':
'mw:PageProp/Category', 'href': './Category:Bar' } } ]
},
{ 'type': '/mwCategory' },
'B',
@@ -302,10 +303,11 @@
'category': 'Category:Foo foo',
'origCategory': 'Category:Foo_foo',
'sortkey': 'Bar baz#quux',
- 'origSortkey': 'Bar baz%23quux'
+ 'origSortkey': 'Bar baz%23quux',
+ 'origRel': 'mw:PageProp/Category'
},
'htmlAttributes': [ { 'values': {
- 'rel': 'mw:WikiLink/Category',
+ 'rel': 'mw:PageProp/Category',
'href': './Category:Foo_foo#Bar baz%23quux'
} } ]
},
@@ -1434,7 +1436,7 @@
'whitespace preservation with wrapped comments and language links': {
'html': '<body>Foo\n' +
'<link rel="mw:WikiLink/Language"
href="http://de.wikipedia.org/wiki/Foo">\n' +
- '<link rel="mw:WikiLink/Language"
href="http://fr.wikipedia.org/wiki/Foo"></body>',
+ '<link rel="mw:PageProp/Language"
href="http://fr.wikipedia.org/wiki/Foo"></body>',
'data': [
{
'type': 'paragraph',
@@ -1450,7 +1452,8 @@
{
'type': 'mwLanguage',
'attributes': {
- 'href':
'http://de.wikipedia.org/wiki/Foo'
+ 'href':
'http://de.wikipedia.org/wiki/Foo',
+ 'origRel': 'mw:WikiLink/Language'
},
'htmlAttributes': [ { 'values': {
'href':
'http://de.wikipedia.org/wiki/Foo',
@@ -1462,11 +1465,12 @@
{
'type': 'mwLanguage',
'attributes': {
- 'href':
'http://fr.wikipedia.org/wiki/Foo'
+ 'href':
'http://fr.wikipedia.org/wiki/Foo',
+ 'origRel': 'mw:PageProp/Language'
},
'htmlAttributes': [ { 'values': {
'href':
'http://fr.wikipedia.org/wiki/Foo',
- 'rel': 'mw:WikiLink/Language'
+ 'rel': 'mw:PageProp/Language'
} } ],
'internal': { 'whitespace': [ '\n' ] }
},
@@ -1477,10 +1481,10 @@
},
'document with meta elements': {
'html': '<body><!-- No content conversion --><meta
property="mw:PageProp/nocc" /><p>Foo' +
- '<link rel="mw:WikiLink/Category" href="./Category:Bar"
/>Bar' +
+ '<link rel="mw:PageProp/Category" href="./Category:Bar"
/>Bar' +
'<meta property="mw:foo" content="bar" />Ba<!-- inline
-->z</p>' +
'<meta property="mw:bar" content="baz" /><!--barbaz-->'
+
- '<link rel="mw:WikiLink/Category"
href="./Category:Foo_foo#Bar baz%23quux" />' +
+ '<link rel="mw:PageProp/Category"
href="./Category:Foo_foo#Bar baz%23quux" />' +
'<meta typeof="mw:Placeholder" data-parsoid="foobar"
/></body>',
'data': ve.dm.mwExample.withMeta
},
--
To view, visit https://gerrit.wikimedia.org/r/92795
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I768ec2ffd623e5a01f18959277786697603a97f0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: wmf/1.23wmf1
Gerrit-Owner: Jforrester <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits