Участник: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 );
} );
} );