User:Hilst/Scripts/sectionLinks.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// <nowiki>
$.when( mw.loader.using( [ 'mediawiki.api', 'ext.gadget.morebits' ] ), $.ready ).then( function () {
	function convertLinks() {
		const page = new Morebits.wiki.page( mw.config.get( 'wgPageName' ), 'Converting section links' );
		page.load( function ( page ) {
			const pageText = page.getPageText();
			// Extract whatever is inside brackets and has a link to a section
			// and replace the brackets with the template.
			const newText = pageText.replace( /\[\[([^|\]<>[\]{}]*#[^|\]<>[\]{}]*)\]\]/gu, '{{Section link|$1}}' );
			if ( pageText !== newText ) {
				page.setPageText( newText );
				page.setEditSummary( 'Converted unformatted section links via [[User:Hilst/Scripts/sectionLinks|script]].' );
				page.save();
				mw.notify( 'All section links were converted. Reloading page...', { type: 'success', title: 'sectionLinks' } );
				// This timeout ensures the edit went through before reloading the page
				setTimeout( function () { location.reload(); }, 2000 );
			} else {
				mw.notify( 'No convertible section links found.', { type: 'info', title: 'sectionLinks' } );
			}
		} );
	}
	if ( mw.config.get( 'wgNamespaceNumber' ) % 2 === 0 ) { // Don't activate script in talk pages
		const link = mw.util.addPortletLink( 'p-cactions', '#', 'Convert section links', 't-convert-section-links' );
		link.addEventListener( 'click', convertLinks );
	}
} );
// </nowiki>