MediaWiki:Gadget-purgetab.js
外观
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
( function () {
"use strict";
if ( !mw.config.get( 'wgArticleId' ) ) {
return;
}
var portletIdToAdd = document.getElementById( 'p-cactions' ) ? 'p-cactions' : 'p-views';
var isVector = mw.config.get( 'skin' ) === 'vector' || mw.config.get( 'skin' ) === 'vector-2022';
// Purge tab
mw.util.addPortletLink(
portletIdToAdd,
mw.util.getUrl( mw.config.get( 'wgPageName' ), { action: 'purge' } ),
isVector ? 'Purge' : '*',
'ca-purge',
'Purge cache for this page',
'*'
);
// Hard purge tab
var hardPurgeId = 'ca-purge-forcelinkupdate';
mw.util.addPortletLink(
portletIdToAdd,
'#',
isVector ? 'Hard purge' : '**',
hardPurgeId,
'Purge with forced link table update',
','
);
// Null edit tab
var nullEditId = 'ca-nulledit';
mw.util.addPortletLink(
portletIdToAdd,
'#',
isVector ? 'Null edit' : '***',
nullEditId,
'Null edit (re-parse page without changing it)',
'0'
);
// 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' } );
} );
} );
}
} );
}() );