mediawiki-extensions-Discus.../modules/dt-ve/dt.ce.PingNode.js
Ed Sanders ece8ff69ff Change dt- class prefix to ext-discussiontools-
Longer, but follows the style guide and less likely to conflict.

We need to account for init classes in the cache being around for
a while.

Change-Id: I738bc93393850db320fdbda2b003ca8ac40556da
2021-03-13 14:42:39 +00:00

87 lines
1.7 KiB
JavaScript

/*!
* VisualEditor ContentEditable MWPingNode class.
*
* @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* @external DmMWPingNode
*/
/**
* 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 ),
$link;
// Parent method
CeMWPingNode.super.prototype.initialize.call( this );
// DOM changes
$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 );