Участник:Stjn/codemirrorLinkJump.js

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
/*
 * Jump from links in CodeMirror (‘syntax highlighting’) editing forms
 * Supports wiki links, external links and template links
 * No support for Lua modules (yet?) or module/script/style editing (AceEditor)
 *
 * Use at your own peril.
*/
mw.loader.using( 'mediawiki.util', function() {
	if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) === -1 ) return;
	document.addEventListener( 'click', function( e ) {
		var target = e.target;
		if ( !target.classList ) return;
		var isTemplate = target.classList.contains( 'cm-mw-template-name' );
		var isWikiLink = target.classList.contains( 'cm-mw-link-pagename' );
		var isHttpLink = target.classList.contains( 'cm-mw-extlink' );
		if ( !isTemplate && !isWikiLink && !isHttpLink ) return;
		if ( !e.ctrlKey ) return;
		e.preventDefault();
	
		var url = '';
		var title = target.textContent;
		if ( isTemplate ) {
			title = mw.util.getUrl( mw.config.get( 'wgFormattedNamespaces' )[ 10 ] + ':' + title );
			url = mw.config.get( 'wgServer' ) + title;
		} else if ( isWikiLink ) {
			title = mw.util.getUrl( title );
			url = mw.config.get( 'wgServer' ) + title;
		} else {
			url = target.previousElementSibling.textContent + title;
		}
		if ( url ) window.open( url );
	} );
} );