跳转到内容

MediaWiki:Gadget-purgetab.js:修订间差异

勤求古训,博采众方
删除的内容 添加的内容
移植 Wiktionary purgetab gadget:提供 Purge / Hard purge / Null edit 三个缓存刷新标签
 
Create purgetab gadget JS
第1行: 第1行:
// {{documentation}}
( function () {
jQuery(document).ready(function() {
"use strict";


if ( !mw.config.get( 'wgArticleId' ) ) {
if (!mw.config.get('wgArticleId'))
return;
return;
var link;
}
var portletIdToAdd = $("#p-cactions").length != 0 ? "p-cactions" : "p-views";


link = mw.util.addPortletLink(
var portletIdToAdd = document.getElementById( 'p-cactions' ) ? 'p-cactions' : 'p-views';
var isVector = mw.config.get( 'skin' ) === 'vector' || mw.config.get( 'skin' ) === 'vector-2022';
portletIdToAdd, mw.util.getUrl(mw.config.get('wgPageName'), {
'action': 'purge'

}),
// Purge tab
(mw.config.get('skin') == "vector") ? "Purge" : "*",
mw.util.addPortletLink(
'ca-purge', "Purge cache for this page", '*'
portletIdToAdd,
mw.util.getUrl( mw.config.get( 'wgPageName' ), { action: 'purge' } ),
isVector ? 'Purge' : '*',
'ca-purge',
'Purge cache for this page',
'*'
);
);


var api = new mw.Api();
// Hard purge tab
link = mw.util.addPortletLink(
var hardPurgeId = 'ca-purge-forcelinkupdate';
portletIdToAdd, mw.util.getUrl(mw.config.get('wgPageName'), {
mw.util.addPortletLink(
'action': 'purge',
portletIdToAdd,
'forcelinkupdate': 1
'#',
}),
isVector ? 'Hard purge' : '**',
(mw.config.get('skin') == "vector") ? "Hard purge" : "**",
hardPurgeId,
'Purge with forced link table update',
'ca-purge-forcelinkupdate', "Purge with forced link table update", ','
','
);
);
link.addEventListener('click', function(ev) {
api.post({
action: 'purge',
pageids: mw.config.get('wgArticleId'),
forcelinkupdate: 1
}).then(function() {
location.reload();
}, function(code, details) {
var mesg;
switch (code) {
case 'http':
mesg = 'HTTP error: ' + details.xhr.statusText;
break;
case 'ok-but-empty':
mesg = 'Received empty response.';
break;
default:
mesg = details.error.info;
}
mw.util.jsMessage('<b>Hard purge failed</b>: ' + mesg);
console.error(arguments);
});
ev.preventDefault();
}, false);


link = mw.util.addPortletLink(
// Null edit tab
portletIdToAdd, 'javascript:void window.warranty',
var nullEditId = 'ca-nulledit';
(mw.config.get('skin') == "vector") ? "Null edit" : "***",
mw.util.addPortletLink(
'ca-nulledit', "Null edit", '0'
portletIdToAdd,
'#',
isVector ? 'Null edit' : '***',
nullEditId,
'Null edit (re-parse page without changing it)',
'0'
);
);
link.addEventListener('click', function(ev) {
api.post({
action: 'edit',
pageid: mw.config.get('wgArticleId'),
appendtext: '',
watchlist: 'nochange',
nocreate: '1',
token: mw.user.tokens.get('csrfToken')
}).then(function() {
location.reload();
}, function(code, details) {
var mesg;
switch (code) {
case 'http':
mesg = 'HTTP error: ' + details.xhr.statusText;
break;
case 'ok-but-empty':
mesg = 'Received empty response.';
break;
default:
mesg = details.error.info;
}
mw.util.jsMessage('<b>Null edit failed</b>: ' + mesg);
console.error(arguments);
});
ev.preventDefault();
}, false);


});
// Bind AJAX handlers
mw.loader.using( 'mediawiki.api' ).then( function () {
var api = new mw.Api();

var hardEl = document.getElementById( hardPurgeId );
if ( hardEl ) {
hardEl.querySelector( 'a' ).addEventListener( 'click', function ( e ) {
e.preventDefault();
api.post( {
action: 'purge',
pageids: mw.config.get( 'wgArticleId' ),
forcelinkupdate: 1
} ).then( function () {
location.reload();
}, function ( code, details ) {
var msg = 'Unknown error';
if ( code === 'http' ) {
msg = 'HTTP error: ' + details.xhr.statusText;
} else if ( code === 'ok-but-empty' ) {
msg = 'Received empty response.';
} else if ( details.error && details.error.info ) {
msg = details.error.info;
}
mw.notify( 'Hard purge failed: ' + msg, { type: 'error' } );
} );
} );
}

var nullEl = document.getElementById( nullEditId );
if ( nullEl ) {
nullEl.querySelector( 'a' ).addEventListener( 'click', function ( e ) {
e.preventDefault();
api.post( {
action: 'edit',
pageid: mw.config.get( 'wgArticleId' ),
appendtext: '',
watchlist: 'nochange',
nocreate: '1',
token: mw.user.tokens.get( 'csrfToken' )
} ).then( function () {
location.reload();
}, function ( code, details ) {
var msg = 'Unknown error';
if ( code === 'http' ) {
msg = 'HTTP error: ' + details.xhr.statusText;
} else if ( code === 'ok-but-empty' ) {
msg = 'Received empty response.';
} else if ( details.error && details.error.info ) {
msg = details.error.info;
}
mw.notify( 'Null edit failed: ' + msg, { type: 'error' } );
} );
} );
}
} );

}() );

2026年6月13日 (六) 16:09的版本

// {{documentation}}
jQuery(document).ready(function() {

	if (!mw.config.get('wgArticleId'))
		return;
	var link;
	var portletIdToAdd = $("#p-cactions").length != 0 ? "p-cactions" : "p-views";

	link = mw.util.addPortletLink(
		portletIdToAdd, mw.util.getUrl(mw.config.get('wgPageName'), {
			'action': 'purge'
		}),
		(mw.config.get('skin') == "vector") ? "Purge" : "*",
		'ca-purge', "Purge cache for this page", '*'
	);

	var api = new mw.Api();
	link = mw.util.addPortletLink(
		portletIdToAdd, mw.util.getUrl(mw.config.get('wgPageName'), {
			'action': 'purge',
			'forcelinkupdate': 1
		}),
		(mw.config.get('skin') == "vector") ? "Hard purge" : "**",
		'ca-purge-forcelinkupdate', "Purge with forced link table update", ','
	);
	link.addEventListener('click', function(ev) {
		api.post({
			action: 'purge',
			pageids: mw.config.get('wgArticleId'),
			forcelinkupdate: 1
		}).then(function() {
			location.reload();
		}, function(code, details) {
			var mesg;
			switch (code) {
				case 'http':
					mesg = 'HTTP error: ' + details.xhr.statusText;
					break;
				case 'ok-but-empty':
					mesg = 'Received empty response.';
					break;
				default:
					mesg = details.error.info;
			}
			mw.util.jsMessage('<b>Hard purge failed</b>: ' + mesg);
			console.error(arguments);
		});
		ev.preventDefault();
	}, false);

	link = mw.util.addPortletLink(
		portletIdToAdd, 'javascript:void window.warranty',
		(mw.config.get('skin') == "vector") ? "Null edit" : "***",
		'ca-nulledit', "Null edit", '0'
	);
	link.addEventListener('click', function(ev) {
		api.post({
			action: 'edit',
			pageid: mw.config.get('wgArticleId'),
			appendtext: '',
			watchlist: 'nochange',
			nocreate: '1',
			token: mw.user.tokens.get('csrfToken')
		}).then(function() {
			location.reload();
		}, function(code, details) {
			var mesg;
			switch (code) {
				case 'http':
					mesg = 'HTTP error: ' + details.xhr.statusText;
					break;
				case 'ok-but-empty':
					mesg = 'Received empty response.';
					break;
				default:
					mesg = details.error.info;
			}
			mw.util.jsMessage('<b>Null edit failed</b>: ' + mesg);
			console.error(arguments);
		});
		ev.preventDefault();
	}, false);

});