mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-25 14:56:20 +00:00
7294c65a2e
These represent <nowiki> tags. If the user doesn't edit the text inside the nowiki, we round-trip the <span typeof="mw:Nowiki"> wrapper cleanly, but if they do edit it, we unwrap it. This then triggers re-escaping in Parsoid, and prevents cases where the user edits the text to no longer need escaping but Parsoid still wraps it in <nowiki> because of the <span typeof="mw:Nowiki"> wrapper. In order to detect whether the contents have changed, the nowiki annotation stores a copy of its contents. To avoid infinite recursion, we have to exclude this attribute for hash generation. Bug: 47678 Change-Id: I2edc46b6d87d2f91e952efcb09c0edae5166958f
38 lines
924 B
JavaScript
38 lines
924 B
JavaScript
/*!
|
|
* VisualEditor ContentEditable MWNowikiAnnotation class.
|
|
*
|
|
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
*/
|
|
|
|
/**
|
|
* ContentEditable MediaWiki nowiki annotation.
|
|
*
|
|
* @class
|
|
* @extends ve.ce.Annotation
|
|
* @constructor
|
|
* @param {ve.dm.MWNowikiAnnotation} model Model to observe
|
|
* @param {Object} [config] Config options
|
|
*/
|
|
ve.ce.MWNowikiAnnotation = function VeCeMWInternalLinkAnnotation( model, config ) {
|
|
// Parent constructor
|
|
ve.ce.Annotation.call( this, model, config );
|
|
|
|
// DOM changes
|
|
this.$.addClass( 've-ce-mwNowikiAnnotation' );
|
|
};
|
|
|
|
/* Inheritance */
|
|
|
|
ve.inheritClass( ve.ce.MWNowikiAnnotation, ve.ce.Annotation );
|
|
|
|
/* Static Properties */
|
|
|
|
ve.ce.MWNowikiAnnotation.static.name = 'mwNowiki';
|
|
|
|
ve.ce.MWNowikiAnnotation.static.tagName = 'span';
|
|
|
|
/* Registration */
|
|
|
|
ve.ce.annotationFactory.register( ve.ce.MWNowikiAnnotation );
|