MediaWiki:Gadget-purgetab.js:修订间差异
外观
删除的内容 添加的内容
移植 Wiktionary purgetab gadget:提供 Purge / Hard purge / Null edit 三个缓存刷新标签 |
标签:撤销 |
||
| (未显示1个用户的3个中间版本) | |||
| 第1行: | 第1行: | ||
// {{documentation}} |
|||
( function () { |
|||
jQuery(document).ready(function() { |
|||
"use strict"; |
|||
if ( |
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'; |
|||
portletIdToAdd, mw.util.getUrl(mw.config.get('wgPageName'), { |
|||
'action': 'purge' |
|||
}), |
|||
// Purge tab |
|||
(mw.config.get('skin') == "vector") ? "刷新缓存" : "*", |
|||
mw.util.addPortletLink( |
|||
'ca-purge', "刷新页面缓存", '*' |
|||
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") ? "强制刷新" : "**", |
|||
hardPurgeId, |
|||
'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 错误: ' + details.xhr.statusText; |
|||
break; |
|||
case 'ok-but-empty': |
|||
mesg = '收到空响应。'; |
|||
break; |
|||
default: |
|||
mesg = details.error.info; |
|||
} |
|||
mw.notify('<b>强制刷新失败</b>: ' + mesg, { type: 'error' }); |
|||
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") ? "空编辑" : "***", |
|||
mw.util.addPortletLink( |
|||
'ca-nulledit', "空编辑(不改变内容,仅刷新)", '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 错误: ' + details.xhr.statusText; |
|||
break; |
|||
case 'ok-but-empty': |
|||
mesg = '收到空响应。'; |
|||
break; |
|||
default: |
|||
mesg = details.error.info; |
|||
} |
|||
mw.notify('<b>空编辑失败</b>: ' + mesg, { type: 'error' }); |
|||
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日 (六) 17:02的最新版本
// {{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") ? "刷新缓存" : "*",
'ca-purge', "刷新页面缓存", '*'
);
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") ? "强制刷新" : "**",
'ca-purge-forcelinkupdate', "强制刷新并更新链接表", ','
);
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 错误: ' + details.xhr.statusText;
break;
case 'ok-but-empty':
mesg = '收到空响应。';
break;
default:
mesg = details.error.info;
}
mw.notify('<b>强制刷新失败</b>: ' + mesg, { type: 'error' });
console.error(arguments);
});
ev.preventDefault();
}, false);
link = mw.util.addPortletLink(
portletIdToAdd, 'javascript:void window.warranty',
(mw.config.get('skin') == "vector") ? "空编辑" : "***",
'ca-nulledit', "空编辑(不改变内容,仅刷新)", '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 错误: ' + details.xhr.statusText;
break;
case 'ok-but-empty':
mesg = '收到空响应。';
break;
default:
mesg = details.error.info;
}
mw.notify('<b>空编辑失败</b>: ' + mesg, { type: 'error' });
console.error(arguments);
});
ev.preventDefault();
}, false);
});