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.

// /BareURLinline.js -- v3.0, with support for {{Bare URL PDF}} and {{Bare URL image}}

// Install with:

// <code><nowiki>		{{subst:Iusc|User:BrownHairedGirl/BareURLinline.js}}																</nowiki></code>

// or with

// <code><nowiki>		importScript( 'User:BrownHairedGirl/BareURLinline.js' ); // Backlink: [[User:BrownHairedGirl/BareURLinline.js]]			</nowiki></code> 



// 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 [[User:BrownHairedGirl/BareURLinline.js|a script]]. "

                   + "For other recently-tagged pages with [[WP:Bare URLs|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(/(?<begin><ref[^>]*?\>)\s*\[?\s*(?<url>https?:[^>< \|\[\]]+)\s*\]?\s*(?<end><\s*\/\s*ref)/gi,

	    			function(match, p1, p2, p3) {

						if (p2.match(PDFURLregex)) {

							buPDFtagsAdded += 1;

							return  p1 + p2 + ' {{Bare URL PDF|date=' + bui_monthyear_datestamp() + '}}' +p3;

						}

						else if (p2.match(imageURLregex)) {

							buimgtagsAdded += 1;

							return  p1 + p2 + ' {{Bare URL image|date=' + bui_monthyear_datestamp() + '}}' +p3;

						}

						else if (p2.match(spreadsheetURLregex)) {

							buspreadsheettagsAdded += 1;

							return  p1 + p2 + ' {{Bare URL spreadsheet|date=' + bui_monthyear_datestamp() + '}}' +p3;

						}

						else {

							buiTagsAdded += 1;

							return  p1 + p2 + ' {{Bare URL inline|date=' + bui_monthyear_datestamp() + '}}' +p3;

						}

	    			}

	    			);

	if (text == newText) {

		// nothing was changed

		alert("[[" + wgPageName + "]]: No untagged bare URLs");

		return;

	}

	newText = newText.replaceAll("<br>", "<br />");

	newText = newText.replaceAll("<br/>", "<br />");

	var tagsAdded = buiTagsAdded + buPDFtagsAdded + buimgtagsAdded + buspreadsheettagsAdded;

	if (confirm("[[" + wgPageName + "]]: " + tagsAdded + " untagged bare URLs.\n\nTag them with {{Bare URL inline}}?")) {

		var summaryExtra = "";

		var mytagsummary = "";

		if (buiTagsAdded > 0) {

			mytagsummary = mytagsummary + buiTagsAdded + " {{[[Template:Bare URL inline|Bare URL inline]]}} ";

		} 

		if (buPDFtagsAdded > 0) {

			summaryExtra = summaryExtra + " and [[:Category:Articles with PDF format bare URLs for citations]]";

			if (mytagsummary != "") {

				mytagsummary = mytagsummary + "and ";

			}

			mytagsummary = mytagsummary + buPDFtagsAdded + " {{[[Template:Bare URL PDF|Bare URL PDF]]}} ";

		} 

		if (buimgtagsAdded > 0) {

			summaryExtra = summaryExtra + " and [[:Category:Articles with image file bare URLs for citations]]";

			if (mytagsummary != "") {

				mytagsummary = mytagsummary + "and ";

			}

			mytagsummary = mytagsummary + buimgtagsAdded + " {{[[Template:Bare URL image|Bare URL image]]}} ";

		} 

		if (buspreadsheettagsAdded > 0) {

			summaryExtra = summaryExtra + " and [[:Category:Articles with spreadsheet file bare URLs for citations]]";

			if (mytagsummary != "") {

				mytagsummary = mytagsummary + "and ";

			}

			mytagsummary = mytagsummary + buspreadsheettagsAdded + " {{[[Template:Bare URL spreadsheet|Bare URL spreadsheet]]}} ";

		} 

		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();

month0 = "January";

month1 = "February";

month2 = "March";

month3 = "April";

month4 = "May";

month5 = "June";

month6 = "July";

month7 = "August";

month8 = "September";

month9 = "October";

month10 = "November";

month11 = "December";



var myyear = d.getFullYear();



let mydatestamp = monthd.getMonth()] + " " + myyear.toString();

return mydatestamp;

}