User:PrimeHunter/Source links.js

/* This script adds "Source links" below "What links here" in the sidebar.

"What links here" will include pages using a template with the link.

"Source links" tries to search for pages where the link is in the source.

To use the script, add the following line to Special:MyPage/common.js:

importScript('User:PrimeHunter/Source links.js'); // Linkback: User:PrimeHunter/Source links.js

  • /

mw.loader.using(['mediawiki.util'], function () {

var name = mw.config.get( 'wgPageName' ).replace("Special:WhatLinksHere/", "");

var url;

try {

url = mw.util.getUrl( 'Special:Search' ) + '?trimsearch=1&profile=all&search=' +

encodeURIComponent('linksto:"' + name + '" ' + 'insource:"' + name + '" ' +

'insource:/\\[\\[:?[' + name[0] + name.charAt(0).toLowerCase() + ']' +

name.substring(1).replace(/[-[\]{}()*+!<=:?.\/\\^$|#\s,]/g, '\\$&') + '[\\]\\|#]/' ).replace(/_/g, " ");

} catch(e) {

url = '#error'; // EXAMPLE URL: https://en.wikipedia.org/w/index.php?title=%F0%9F%91%A9%F0%9F%8F%BF&action=history

}

mw.util.addPortletLink(

'p-tb',

url,

'Source links',

'pt-sourcelinks',

'What links here in the source',

null,

'#t-recentchangeslinked'

);

});

/* The url generated above adds the parameter trimsearch=1 when "Source links" is clicked.

If it's present then trim search results by hiding two classes for images and data. */

const queryString = window.location.search;

const urlParams = new URLSearchParams(queryString);

const trimsearch = urlParams.get('trimsearch');

if (trimsearch === '1') {

var searchimages = document.getElementsByClassName('searchResultImage-thumbnail');

for (var i = 0; i < searchimages.length; i ++) {

searchimages[i].style.display = 'none';

}

var searchdata = document.getElementsByClassName('mw-search-result-data');

for (var i = 0; i < searchdata.length; i ++) {

searchdata[i].style.display = 'none';

}

}