if (
// user is currently editing the page
[ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 &&
(
mw.config.get( 'wgNamespaceNumber' ) & 1 || // is a talk namespace or...
// is other namespace that uses signatures sometimes (eg project)
mw.config.get( 'wgExtraSignatureNamespaces' ).indexOf( mw.config.get( 'wgNamespaceNumber' ) ) !== -1
)
) {
$( function () {
$( '#wpTextbox1' ).on( 'keydown', function ( e ) {
// Check if key pressed was enter key.
if ( e.which === 13 ) {
var s = this.selectionStart,
caretIsAtEndOfLine = this.value[ s ] === '\n' || s === this.value.length,
isAfterSig = caretIsAtEndOfLine && this.value.substr( s - 6, 6 ) === ' (UTC)', // TODO: Actually check things reliably.
startPriorLine = this.value.lastIndexOf( '\n', s - 1 ) + 1,
priorComment = this.value.substr( startPriorLine, s - startPriorLine ),
startIndent = priorComment.match( /^[:*]*/ )[ 0 ],
noHighlight = s === this.selectionEnd;
if ( noHighlight && ( isAfterSig || startIndent ) ) {
var preToInsert = '\n' + startIndent + ( isAfterSig ? ': ' : ' ' ),
highlightedText = isAfterSig ? 'Add your comment here' : '',
afterText = isAfterSig ? ' --~~' + '~~' : '';
this.value = this.value.substr( 0, s ) + preToInsert + highlightedText + afterText + this.value.substr( s );
this.selectionStart = s + preToInsert.length;
this.selectionEnd = this.selectionStart + highlightedText.length;
e.preventDefault();
return false;
}
}
} );
} );
}