C. Scott Ananian has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/356865 )
Change subject: WIP: Use annotations for inline LanguageConverter markup. ...................................................................... WIP: Use annotations for inline LanguageConverter markup. Change-Id: I9cae1c6c0d6efda5b0ba3c6f454e25834ae6eacc --- M extension.json A modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js 2 files changed, 74 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/65/356865/1 diff --git a/extension.json b/extension.json index 294c8a0..6238300 100644 --- a/extension.json +++ b/extension.json @@ -1895,6 +1895,7 @@ }, "ext.visualEditor.mwlanguage": { "scripts": [ + "modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js", "modules/ve-mw/dm/nodes/ve.dm.MWLanguageVariantNode.js", "modules/ve-mw/ce/nodes/ve.ce.MWLanguageVariantNode.js" ], diff --git a/modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js b/modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js new file mode 100644 index 0000000..27925f5 --- /dev/null +++ b/modules/ve-mw/dm/annotations/ve.dm.MWLanguageConverterRawAnnotation.js @@ -0,0 +1,73 @@ +/*! + * VisualEditor DataModel LanguageConverterRawAnnotation class. + * + * @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt + * @license The MIT License (MIT); see LICENSE.txt + */ + +/** + * DataModel MediaWiki nowiki annotation + * + * Represents `<nowiki>` tags (in HTML as `<span typeof="mw:Nowiki">`) and unwraps them when they change + * so as to retrigger Parsoid's escaping mechanism. + * + * @class + * @extends ve.dm.Annotation + * @constructor + * @param {Object} element [description] + */ +ve.dm.LanguageConverterRawAnnotation = function VeDmLanguageConverterRawAnnotation() { + // Parent constructor + ve.dm.LanguageConverterRawAnnotation.super.apply( this, arguments ); +}; + +/* Inheritance */ + +OO.inheritClass( ve.dm.LanguageConverterRawAnnotation, ve.dm.Annotation ); + +/* Static Properties */ + +ve.dm.LanguageConverterRawAnnotation.static.name = 'mwLanguageConverterRaw'; + +ve.dm.LanguageConverterRawAnnotation.static.matchRdfaTypes = [ 'mw:LanguageVariant' ]; + +ve.dm.LanguageConverterRawAnnotation.static.matchFunction = function( node ) { + var mwvDataJSON = node.getAttribute( 'data-mw-variant' ), + mwvData = mwvDataJSON ? JSON.parse( mwvDataJSON ) : {}; + return mwvData.disabled && false; // XXX +}; + +ve.dm.LanguageConverterRawAnnotation.static.toDataElement = function ( domElements, converter ) { + var node = domElements[ 0 ], + mwvDataJSON = node.getAttribute( 'data-mw-variant' ), + mwvData = mwvDataJSON ? JSON.parse( mwvDataJSON ) : {}, + text = mwvData.text || '', + tree = $( "<div>" ).append( $.parseHTML(text) )[ 0 ], + context = converter.contextStack[ converter.contextStack.length - 1 ], + childAnnotations = context.annotations.clone(), + annotation = converter.annotationFactory.createFromElement( + { type: this.name }, converter.store + ); + childAnnotations.push( annotation ); + + // XXX needs a stub node here as 1st element in order to reload the + // modelClass from in Converter.getDataFromDomSubtree. + return converter.getDataFromDomClean( tree, undefined, childAnnotations ); +}; + +ve.dm.LanguageConverterRawAnnotation.static.toDomElements = function ( dataElement, doc, converter, childDomElements ) { + // XXX choose 'span' or 'div' + var domElement = document.createElement( 'span' ); + + domElement.setAttribute( 'typeof', 'mw:LanguageVariant' ); + domElement.setAttribute( 'data-mw-variant', JSON.stringify({ + disabled: true, + show: true, + text: "foo" // XXX + })); + return [ domElement ]; +}; + +/* Registration */ + +ve.dm.modelRegistry.register( ve.dm.LanguageConverterRawAnnotation ); -- To view, visit https://gerrit.wikimedia.org/r/356865 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9cae1c6c0d6efda5b0ba3c6f454e25834ae6eacc Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/VisualEditor Gerrit-Branch: master Gerrit-Owner: C. Scott Ananian <canan...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits