MediaWiki:Gadget-sectionAnchors.js

/** * Vector HeadAnchors * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-vector-headanchor.js * @revision 2015-03-07 * * @license http://krinkle.mit-license.org/ * @author Timo Tijhof, 2013–2015 * * See also: * https://www.mediawiki.org/wiki/Requests_for_comment/Clickable_section_anchors * https://phabricator.wikimedia.org/T18691 */ ( function ( $, mw ) {   if ( mw.config.get('wgIsMainPage') ) {        // Don't run on the main page, where we use section headings extensively        return    }    function copyURL  {        var $this = $(this),        	mwconf = mw.config.get(['wgServer', 'wgArticlePath', 'wgPageName']),        	hash = $this.attr('href'),            url = mwconf.wgServer + mwconf.wgArticlePath.replace('$1', mwconf.wgPageName) + hash,            txt = document.createElement('textarea'),            $txt = $(txt);        $txt.text(url).css({ position: 'fixed', top: 0, left: 0, width: '2em', heigh: '2em', padding: 0, border: 'none', outline: 'none', boxShadow: 'none', background: 'transparent' }).appendTo('body');       txt.select;        try {            document.execCommand('copy');            $this.addClass('rts-secanch-copied');            setTimeout(function{$this.removeClass('rts-secanch-copied')}, 2500)        } catch (err) {}        $txt.remove;    }

$( '.mw-headline' ).each( function ( i, el ) {       var id = el.id,            $headline = $( el ),            $header = $headline.parent;

// If MediaWiki core's anchor is here, or if ours is here already, skip. if ( !id || $header.find( '.mw-headline-anchor,.mw-headline-headanchor').length ) { return; }

$headline.removeAttr('id') $header.addClass( 'mw-header' ).prepend(       $( '' ).prop({ id: id, href: '#' + id, title: 'Link to this section', className: 'mw-headline-headanchor' }).click(copyURL)       ); } );   $( 'h2.mw-header, h2#filehistory, h2#filelinks, h2#transcodestatus, h2#metadata, h2.diff-currentversion-title, .ns-special #mw-content-text h2' ).each( function ( i, el ) { var $header = $( el ); $header.append(           $( ' ' ).prop({ className: 'mw-headline-underline' })       );    } );

}( jQuery, mediaWiki ) );