Jump to content

User:Rusty Cat/common.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Rusty Cat (talk | contribs) at 23:46, 26 July 2024 (testingn). 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.
// Enable caching for resource loads, see [[User:SD0001/Making_user_scripts_load_faster]], @revision 7
// Enable caching for resource loads, see [[User:SD0001/Making_user_scripts_load_faster]], @revision 7
if (!/\bnocache=\b/.test(location.href)) { // Don't enable if nocache=1 url parameter is given
	let config = mw.config.values;
	let ctypeJs = 'text/javascript';
	let ctypeCss = 'text/css';
	let loadResource = (page, sitename, ctype) => {
		page = page.replace(/special:mypage/i, 'User:' + config.wgUserName);
		return $.get(
			'https://' + sitename + '/w/api.php?titles=' + page + // page is already URL-encoded
			'&origin=*&format=json&formatversion=2&uselang=content&maxage=86400&smaxage=86400' + 
			'&action=query&prop=revisions|info&rvprop=content&rvlimit=1&inprop=protection'
		).then((apiResponse) => {
			let apiPage = apiResponse.query.pages[0];
			if (!apiPage.missing) {
				if (apiPage.ns !== 2 && apiPage.ns !== 8 && !apiPage.protection.find(p => p.type === 'edit' && p.level === 'sysop')) {
					return $.Deferred().reject('Refused to load "' + page + '"@' + sitename + ': unprotected page');
				}
				let content = apiPage.revisions[0].content;
				if ((!ctype || ctype === ctypeJs) && apiPage.contentmodel === 'javascript') {
					let scriptTag = document.head.appendChild(document.createElement('script'));
					scriptTag.innerHTML = content;
			    } else if (ctype === ctypeCss && apiPage.contentmodel === 'css') {
					mw.loader.addStyleTag(content);
				} else {
					return $.Deferred().reject('Refused to load "' + page + '"@' + sitename + ': content type mismatch');
				}
			}
		});
	};
	let serverName = config.wgServerName;
	let getSiteTitle = (url) => {
		let siteRgx = /^(?:(?:https:)?\/\/(.*))?\/w\/index.php/.exec(url),
			titleRgx = /\btitle=([^=?&]*)/.exec(url);
		if (siteRgx && titleRgx && /\baction=raw\b/.test(url) && /\bctype=/.test(url)) {
			return [titleRgx[1], siteRgx[1] || serverName];	
		} else return null;
	};
	window.importScript = (page) => {
		loadResource(encodeURIComponent(page), serverName, ctypeJs);
	};
	window.importStyleSheet = (page) => {
		loadResource(encodeURIComponent(page), serverName, ctypeCss);
	};
	let oldMwLoaderLoad = mw.loader.load;
	mw.loader.load = function(url, type) {
		let linkParts = getSiteTitle(url);
		if (linkParts) {
			loadResource(linkParts[0], linkParts[1], type);
		} else {
			oldMwLoaderLoad.apply(mw.loader, [...arguments]);
		}
	};
	let oldMwLoaderGetScript = mw.loader.getScript;
	mw.loader.getScript = function(url) {
		let linkParts = getSiteTitle(url);
		if (linkParts) {
			return loadResource(linkParts[0], linkParts[1], ctypeJs);
		} else {
			return oldMwLoaderGetScript.apply(mw.loader, [...arguments]);
		}
	};
}
// Automatically purge pages
if (mw.config.get('wgAction') === 'purge') {
    $('form[action*="action=purge"]').submit();
}

// portlets
$.when(mw.loader.using('mediawiki.util'), $.ready).then(function() {
    mw.util.addPortletLink('p-interaction', '//typos.toolforge.org/', 'Correct typos in one click', 'p-typo', 'Correct typos in one click tool');
    mw.util.addPortletLink('p-interaction', '/wiki/Wikipedia:Edit_filter/False_positives/Reports', 'WP:EFFPR', 'p-effpr', 'Wikipedia edit filter false positive reports');
});

// general purpose
importScript('User:PleaseStand/userinfo.js'); // Backlink: [[User:PleaseStand/userinfo.js]]

// antivandalism
importScript('User:10nm/beta.js'); // Backlink: [[User:10nm/beta.js]]
importScript('User:Ingenuity/AntiVandal.js'); // Backlink: [[User:Ingenuity/AntiVandal.js]]

// mainspace editing
mw.loader.load('/w/index.php?title=User:Evad37/rater.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Evad37/rater.js]]
mw.loader.load('/w/index.php?title=User:Enterprisey/cv-revdel.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Enterprisey/cv-revdel.js]]
mw.loader.load('/w/index.php?title=User:Qwertyytrewqqwerty/DisamAssist.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Qwertyytrewqqwerty/DisamAssist.js]]
mw.loader.load('/w/index.php?title=User:MPGuy2824/MoveToDraft.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Evad37/rater.js]]
mw.loader.load('/w/index.php?title=User:PerfektesChaos/js/lintHint/r.js&action=raw&maxage=86400&ctype=text/javascript'); // Backlink: [[User:PerfektesChaos/js/lintHint/r.js]]
mw.loader.load('/w/index.php?title=User:Wugapodes/Capricorn.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Wugapodes/Capricorn.js]]
importScript('User:Ohconfucius/script/EngvarB.js'); // Backlink: [[User:Ohconfucius/script/EngvarB.js]]
// mw.loader.load('/w/index.php?title=User:Uziel302/typo.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Uziel302/typo.js]]

// jwb
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Joeytje50/JWB.js/load.js&action=raw&ctype=text/javascript');

// management and noticeboards / admin tools
importScript('User:Elli/OneClickArchiver.js'); // Backlink: [[User:Elli/OneClickArchiver.js]]
mw.loader.load('/w/index.php?title=User:DannyS712/EFFPRH.js&action=raw&ctype=text/javascript'); // Backlink: [[User:DannyS712/EFFPRH.js]]
mw.loader.load('/w/index.php?title=User:Suffusion_of_Yellow/effp-helper.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Suffusion of Yellow/effp-helper.js]]
mw.loader.load('/w/index.php?title=User:Suffusion_of_Yellow/FilterDebugger.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Suffusion of Yellow/FilterDebugger.js]]
mw.loader.load('/w/index.php?title=User:GeneralNotability/spihelper.js&action=raw&ctype=text/javascript'); // Backlink: [[User:GeneralNotability/spihelper.js]]
importScript('User:MusikAnimal/responseHelper.js'); // Backlink: [[User:MusikAnimal/responseHelper.js]]
mw.loader.load('/w/index.php?title=User:MusikAnimal/userRightsManager.js&action=raw&ctype=text/javascript'); // Backlink: [[User:MusikAnimal/userRightsManager.js]]
mw.loader.load('/w/index.php?title=User:Writ Keeper/Scripts/massRollback.js&action=raw&ctype=text/javascript'); // Backlink: [[User:Writ Keeper/Scripts/massRollback.js]]
importScript('User:Jackmcbarn/editProtectedHelper.js'); // Backlink: [[User:Jackmcbarn/editProtectedHelper.js]]
importScript('User:DannyS712/SectionRemover.js'); // Backlink: [[User:DannyS712/SectionRemover.js]]
importScript('User:DannyS712/SectionMover.js'); // Backlink: [[User:DannyS712/SectionMover.js]]
importScript('User:Terasail/COI_Request_Tool.js'); // Backlink: [[User:Terasail/COI_Request_Tool.js]]

mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Zhaofeng_Li/Reflinks.js&action=raw&ctype=text/javascript');
importScript('User:SD0001/BDCS.js'); // Backlink: [[User:SD0001/BDCS.js]]

importScript( 'User:DannyS712/Draft no cat.js' ); // Backlink: [[User:DannyS712/Draft no cat.js]]
importScript( 'User:DannyS712/Draft re cat.js' ); // Backlink: [[User:DannyS712/Draft re cat.js]]
mw.loader.load("//pl.wikipedia.org/w/index.php?title=Wikipedysta:Msz2001/abusefilter-analyzer-primer.js&action=raw&ctype=text/javascript");
importScript('User:Enterprisey/unblock-review.js'); // Backlink: [[User:Enterprisey/unblock-review.js]]
importScript('User:Andrybak/Archiver.js'); // Backlink: [[User:Andrybak/Archiver.js]]
importScript('User:Epicgenius/ArticleQuality.js'); // Backlink: [[User:Epicgenius/ArticleQuality.js]]
importScript('User:Headbomb/unreliable.js'); // Backlink: [[User:Headbomb/unreliable.js]]
importScript('User:Fred Gandt/confirmLogout.js'); // Backlink: [[User:Fred Gandt/confirmLogout.js]]