User:Technical 13/Scripts/Gadget-veditLinks.js

//

( function( mw, $ ) {

$( function( ) {

var tabMessages = mw.config.get( 'wgVisualEditorConfig' ).tabMessages;

new mw.Api().get( {

action: 'query',

meta: 'allmessages',

ammessages: 'editlink',

amlang: mw.config.get( 'pageLanguageCode' ),

rawcontinue: ''

} ).done ( function ( editMsg ) {

var edit = editMsg.query.allmessages[ 0 ][ '*' ];

var editBeta = edit + ' ' + ( tabMessages[ 'editsectionappendix' ] ?

mw.msg( tabMessages[ 'editsectionappendix' ] ) : '' );

var editSource = mw.msg( tabMessages[ 'editsectionsource' ] );

var namespaceNames = [], visualEditorNamespaces = [];

$.each( mw.config.get( 'wgNamespaceIds' ), function ( i, v ) {

namespaceNames[ namespaceNames.length ] = i;

if ( $.inArray( v, mw.config.get( 'wgVisualEditorConfig' ).namespaces ) !== -1 ) {

visualEditorNamespaces[ visualEditorNamespaces.length ] = i;

}

} );

if ( mw.user.options.get( 'visualeditor-enable' ) === '1' ) {

$( 'span.lx' ).each( function ( ) {

var thisLinkNS = , thisLink = , thisLinkTitle = , thisLinkClass = , thisLinkVE = '';

if ( $( this ).find( 'a:first' ).html() !== undefined ) {

thisLinkNS = $( this ).find( 'a:first' ).attr( 'href' ).match( /\/w(iki\/|\/index.php\?title=)([\w]*)(:.*)?/i );

} else if ( $( this ).prev( 'a' ).html() !== undefined ) {

thisLinkNS = $( this ).prev( 'a' ).attr( 'href' ).match( /\/w(iki\/|\/index.php\?title=)([\w]*)(:.*)?/i );

}

thisLinkNS = thisLinkNS[2].toLowerCase();

if ( $.inArray( thisLinkNS, namespaceNames ) === -1 ) {

thisLinkNS = '';

}

thisLink = $( this ).find( 'a:contains(' + edit + ')' );

if ( $.inArray( thisLinkNS, visualEditorNamespaces ) !== -1 ) {

if ( thisLink.attr( 'title' ) !== undefined && thisLink.attr( 'title' ) !== '' ) {

thisLinkTitle = thisLink.attr( 'title' );

}

if ( thisLink.attr( 'class' ) !== undefined && thisLink.attr( 'class' ) !== '' ) {

thisLinkClass = thisLink.attr( 'class' );

}

if ( thisLink.attr( 'href' ) !== undefined && thisLink.attr( 'href' ) !== '' ) {

thisLinkVE = thisLink.attr( 'href' ).replace( '&action=edit', '&veaction=edit' );

thisLink.after( ' | ' + editBeta +

'' );

} else {

console.warn( 'No href found for:\n\t%s', $( this ).parent().html() );

}

}

thisLink.text( editSource );

} );

}

} );

} );

} ( mediaWiki, jQuery ) );

//