Jump to content

User:Hilst/Scripts/sectionLinks.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Hilst (talk | contribs) at 11:18, 26 July 2023 (rm underline from regex). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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() {

if (mw.config.get('wgNamespaceNumber') % 2 == 0) { // Don't activate script in talk pages
	var link = mw.util.addPortletLink('p-cactions', '#', 'Convert section links', 't-convert-section-links');
	link.addEventListener("click", convert);
	
	const advert = 'via [[User:MaterialWorks/Scripts/sectionLinks|script]].';
	
	function convert() {
	    var page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'Converting section links');
	    page.load(function(page) {
	        var pageText = page.getPageText();
	        
	        // Extract whatever is inside brackets and has a link to a section
	        // and replace the brackets with the template.
	        var newText = pageText.replace(/\[\[([^\|\]<>\[\]\{\}]*#[^\|\]<>\[\]\{\}]*)\]\]/gu, '{{Section link|$1}}');
	
	        if (pageText !== newText) {
	            page.setPageText(newText);
	            page.setEditSummary('Converted unformatted section links ' + advert);
	            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' });
	        }
	    });
	}
}
});
//</nowiki>