User:Ahecht/sandbox/Scripts/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( 'wgRelevantPageName' ).replace(/_/g, " ");  var url;  var titleRE = (title) => ' *[' + title[0] + title.charAt(0).toLowerCase + ']' +    title.substring(1).replace(/[-[\]{}*+!<=:?.\/\\^$|#\s,]/g, '\\$&').replace(/[ _]/g, '[ _]') + ' *';  try {      var mwTitle=new mw.Title(name);      var title = mwTitle.title.replace(/_/g, " ");      if (mwTitle.namespace == 10) { //template        url = 'hastemplate:"' + name + '" ' + 'insource:"' + title + '" ' +        'insource:/[^\\{]\\{\\{' + titleRE(title) +'[\\}\\|]/';      } else if (mwTitle.namespace == 828) { //module        url = 'hastemplate:"' + name + '" ' + 'insource:"' + title + '" ' +        'insource:/[^\\{]\\{\\{ *\\#invoke *:' + titleRE(title) + '\\|/';      } else if(mwTitle.namespace > 0) { //any other non-mainspace        url = 'linksto:"' + name + '" ' + 'insource:"' + name + '" ' + 'insource:/\\[\\[ *:?' + titleRE(mwTitle.getNamespacePrefix.slice(0,-1)) + ':' + titleRE(title) + '[\\]\\|\\#]/'; } else { url = 'linksto:"' + name + '" ' + 'insource:"' + name + '" ' + 'insource:/\\[\\[ *:?' + titleRE(name) + '[\\]\\|\\#]/'; }     url = mw.util.getUrl( 'Special:Search' )  + '?trimsearch=1&profile=all&search=' + encodeURIComponent(url); } 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; console.log(queryString); 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'; } }