mediawiki-extensions-Discus.../modules/dt-ve/dt.ce.PingNode.js

82 lines
1.7 KiB
JavaScript
Raw Normal View History

/*!
* VisualEditor ContentEditable MWPingNode class.
*
* @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* ContentEditable MediaWiki ping node.
*
* @class
* @extends ve.ce.LeafNode
* @mixes ve.ce.FocusableNode
*
* @constructor
* @param {DmMWPingNode} model Model to observe
* @param {Object} [config] Configuration options
*/
function CeMWPingNode() {
// Parent constructor
CeMWPingNode.super.apply( this, arguments );
// Mixin constructor
ve.ce.FocusableNode.call( this );
}
/* Inheritance */
OO.inheritClass( CeMWPingNode, ve.ce.LeafNode );
OO.mixinClass( CeMWPingNode, ve.ce.FocusableNode );
/* Static Properties */
CeMWPingNode.static.name = 'mwPing';
CeMWPingNode.static.tagName = 'span';
CeMWPingNode.static.deleteCommandName = 'insertAndOpenMWUsernameCompletions';
CeMWPingNode.static.getDescription = function ( model ) {
return model.getAttribute( 'user' );
};
/* Methods */
/**
* @inheritdoc
*/
CeMWPingNode.prototype.initialize = function () {
var model = this.getModel(),
prefix = mw.msg( 'discussiontools-replywidget-mention-prefix' ),
user = model.getAttribute( 'user' ),
title = mw.Title.makeTitle( mw.config.get( 'wgNamespaceIds' ).user, user );
// Parent method
CeMWPingNode.super.prototype.initialize.call( this );
// DOM changes
var $link = $( '<a>' )
.addClass( 'ext-discussiontools-ce-mwPingNode' )
.attr( {
href: title.getUrl(),
title: user
} )
.text( model.getAttribute( 'user' ) );
ve.init.platform.linkCache.styleElement(
title.getPrefixedText(),
$link
);
this.$element.append(
prefix,
$link
);
};
/* Registration */
ve.ce.nodeFactory.register( CeMWPingNode );