User:BrownHairedGirl/BareURLinline.js

// /BareURLinline.js -- v3.0, with support for and // Install with: // // or with //

// This script is hacked from User:DannyS712/Draft no cat.js // If forking this script, please note our contributions / give us credit

if ( mw.config.get( 'wgNamespaceNumber' ) === 0) { mw.loader.using( 'mediawiki.util', function {    $(document).ready( function  { var link = mw.util.addPortletLink( 'p-cactions', '#', 'BareURLinline', 'ca-bareurlinline', 'BareURLinline'); $( link ).click( function ( event ) {           event.preventDefault;            tag_bareurlinline;	        } ); } ); } ); } function tag_bareurlinline{ var edit_summary = " tag(s) using a script. " + "For other recently-tagged pages with bare URLs, " + "see Category:Articles with bare URLs for citations from " + bui_monthyear_datestamp + "";

var send_req = { action: 'query', titles: mw.config.get( 'wgPageName' ), prop: 'revisions', intoken: 'edit', rvprop: 'content', indexpageids: 1, dataType: 'xml', format: 'xml' };	var buiTagsAdded = 0; var buPDFtagsAdded = 0; var buimgtagsAdded = 0; var buspreadsheettagsAdded = 0; var wgPageName = mw.config.get( 'wgPageName' ); $.get( mw.config.get( 'wgScriptPath' ) + '/api.php', send_req, function( response ) {	   var text = $( response ).find( 'rev' ).text;		const PDFURLregex = /\.pdf$/i;		const spreadsheetURLregex = /\.(xlsx?|ods)$/i;		const imageURLregex = /\.(JPG|JPEG|JP2|JPX|JPE|JFIF|JIF|TIFF|TIF|GIF|BMP|PNG|APNG|MNG|PBM|PGM|PPM|PNM|WEBP|HDR|HEIF|HEIFS|HEIC|HEICS|AVCI|AVCS|AVIF|AVIFS)$/i;	    var newText = text	    		.replace(/(? ]*?\>)\s*\[?\s*(? https?:[^>< \|\[\]]+)\s*\]?\s*(? <\s*\/\s*ref)/gi, function(match, p1, p2, p3) { if (p2.match(PDFURLregex)) { buPDFtagsAdded += 1; return p1 + p2 + ' ' +p3; }						else if (p2.match(imageURLregex)) { buimgtagsAdded += 1; return p1 + p2 + ' ' +p3; }						else if (p2.match(spreadsheetURLregex)) { buspreadsheettagsAdded += 1; return p1 + p2 + ' ' +p3; }						else { buiTagsAdded += 1; return p1 + p2 + ' ' +p3; }	   			}	    			);	if (text == newText) {		// nothing was changed		alert("" + wgPageName + ": No untagged bare URLs");		return;	}	newText = newText.replaceAll(" ", " ");	newText = newText.replaceAll(" ", " ");	var tagsAdded = buiTagsAdded + buPDFtagsAdded + buimgtagsAdded + buspreadsheettagsAdded;	if (confirm("" + wgPageName + ": " + tagsAdded + " untagged bare URLs.\n\nTag them with ?")) {		var summaryExtra = "";		var mytagsummary = "";		if (buiTagsAdded > 0) {			mytagsummary = mytagsummary + buiTagsAdded + "  ";		} 		if (buPDFtagsAdded > 0) {			summaryExtra = summaryExtra + " and Category:Articles with PDF format bare URLs for citations";			if (mytagsummary != "") {				mytagsummary = mytagsummary + "and ";			}			mytagsummary = mytagsummary + buPDFtagsAdded + "  ";		} 		if (buimgtagsAdded > 0) {			summaryExtra = summaryExtra + " and Category:Articles with image file bare URLs for citations"; if (mytagsummary != "") { mytagsummary = mytagsummary + "and "; }			mytagsummary = mytagsummary + buimgtagsAdded + " "; } 		if (buspreadsheettagsAdded > 0) { summaryExtra = summaryExtra + " and Category:Articles with spreadsheet file bare URLs for citations"; if (mytagsummary != "") { mytagsummary = mytagsummary + "and "; }			mytagsummary = mytagsummary + buspreadsheettagsAdded + " "; } 		var submit = { action: 'edit', pageid: mw.config.get( 'wgArticleId' ), text: newText, summary: "Added " + mytagsummary + " " + edit_summary + summaryExtra, minor: true, token: mw.user.tokens.get( 'csrfToken' ) };	   $.when(	        $.post( mw.config.get( 'wgScriptPath' ) + '/api.php', submit, function( response ){ } )	    ).done( function { location.reload;} ); }	} ); }

function bui_monthyear_datestamp { var d = new Date; var month = new Array; month[0] = "January"; month[1] = "February"; month[2] = "March"; month[3] = "April"; month[4] = "May"; month[5] = "June"; month[6] = "July"; month[7] = "August"; month[8] = "September"; month[9] = "October"; month[10] = "November"; month[11] = "December";

var myyear = d.getFullYear;

let mydatestamp = month[d.getMonth] + " " + myyear.toString; return mydatestamp; }