mediawiki-extensions-Visual.../modules/ve-mw/ce/annotations/ve.ce.MWInternalLinkAnnotation.js
Roan Kattouw 78a52f1f80 Display links to nonexistent pages as red
* Add ve.init.mw.LinkCache to track page existence and
  transparently query it
* Populate it with initial data from the parser cache
  if available, obtained in the VE API module
* Use linkCache data in link annotation rendering

This doesn't yet integrate the LinkCache with other
components like the link inspector. That should be
done so we can deduplicate the existence checks.

Additionally, we should generalize LinkCache and use
it for the category existence/status checks as well.

Bug: 37901
Change-Id: I9fd43e8c3864dd375cf6dadfdeedd05e4fe9cf3b
2014-03-20 02:42:33 +00:00

47 lines
1.3 KiB
JavaScript

/*!
* VisualEditor ContentEditable MWInternalLinkAnnotation class.
*
* @copyright 2011-2014 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* ContentEditable MediaWiki internal link annotation.
*
* @class
* @extends ve.ce.LinkAnnotation
* @constructor
* @param {ve.dm.MWInternalLinkAnnotation} model Model to observe
* @param {ve.ce.ContentBranchNode} [parentNode] Node rendering this annotation
* @param {Object} [config] Configuration options
*/
ve.ce.MWInternalLinkAnnotation = function VeCeMWInternalLinkAnnotation( model, parentNode, config ) {
var annotation = this;
// Parent constructor
ve.ce.LinkAnnotation.call( this, model, parentNode, config );
// DOM changes
this.$element.addClass( 've-ce-mwInternalLinkAnnotation' );
this.$element.attr( 'title', model.getAttribute( 'title' ) );
// Style based on link cache information
ve.init.platform.linkCache.get( model.getAttribute( 'lookupTitle' ) )
.done( function ( data ) {
if ( data.missing ) {
annotation.$element.addClass( 'new' );
}
} );
};
/* Inheritance */
OO.inheritClass( ve.ce.MWInternalLinkAnnotation, ve.ce.LinkAnnotation );
/* Static Properties */
ve.ce.MWInternalLinkAnnotation.static.name = 'link/mwInternal';
/* Registration */
ve.ce.annotationFactory.register( ve.ce.MWInternalLinkAnnotation );