mediawiki-extensions-Visual.../editcheck/modules/ConvertReferenceEditCheck.js
Ed Sanders 793a1364aa Allow multiple highlight fragments to be passed to an edit check
Change-Id: Ie9d7010a1a0ee6a5c570d4fd6988fc876afdb9e2
2024-11-05 11:41:50 +00:00

37 lines
1.4 KiB
JavaScript

mw.editcheck.ConvertReferenceEditCheck = function MWConvertReferenceEditCheck( /* config */ ) {
// Parent constructor
mw.editcheck.ConvertReferenceEditCheck.super.apply( this, arguments );
};
OO.inheritClass( mw.editcheck.ConvertReferenceEditCheck, mw.editcheck.BaseEditCheck );
mw.editcheck.ConvertReferenceEditCheck.static.name = 'convertReference';
mw.editcheck.ConvertReferenceEditCheck.prototype.onDocumentChange = function ( surfaceModel ) {
const seenIndexes = {};
const documentModel = surfaceModel.getDocument();
return documentModel.getNodesByType( 'mwReference' ).map( ( node ) => {
const refModel = ve.dm.MWReferenceModel.static.newFromReferenceNode( node );
const index = refModel.getListIndex();
if ( seenIndexes[ index ] ) {
return null;
}
seenIndexes[ index ] = true;
const referenceNode = documentModel.getInternalList().getItemNode( index );
const href = ve.ui.CitoidReferenceContextItem.static.getConvertibleHref( referenceNode );
if ( href ) {
const fragment = surfaceModel().getLinearFragment( node.getOuterRange() );
return new mw.editcheck.EditCheckAction( {
highlights: [ fragment ],
selection: fragment,
message: ve.msg( 'citoid-referencecontextitem-convert-message' ),
check: this
} );
} else {
return null;
}
} ).filter( ( obj ) => obj );
};
mw.editcheck.editCheckFactory.register( mw.editcheck.ConvertReferenceEditCheck );