LLWiki正在建设中,欢迎加入我们

“MediaWiki:Gadget-inspect.js”的版本间差异

跳转到导航 跳转到搜索
添加783字节 、​ 2021年1月11日 (一) 05:43
无编辑摘要
$outer = $('<div>', {id: 'inspector', class: 'mw-ajax-loader'}).insertBefore( $original ),
api = new mw.Api(),
initList = (pages, ctn) => {
flag = pages[0] == id ?|| 1(ctn :&& 0pages.includes(id));
list = [pages, flag ? pages.indexOf(id) + 1 : 0];
if (ctn && !flag) { mw.notify(wgULS('当前页面并不属于该分类或名字空间!', '當前頁面並不屬於該分類或名字空間!'),
mw.storage.setObject( 'inspect-category', [pages, 0] );
{type: 'warn'}); }
btnGo.setHref( `/zh?redirect=no&curid=${pages[ flag ]}` ).setDisabled( false );
mw.storage.setObject( 'inspect-category', [pages, 0list[1] - flag] );
btnGo.setHref( `/zh?redirect=no&curid=${pages[ flaglist[1] ]}` ).setDisabled( false );
};
let nextid, list = mw.storage.getObject( 'inspect-category' ), flag;
}
const btnGo = new OO.ui.ButtonWidget({flags: 'progressive', icon: 'next', href: `/zh?redirect=no&curid=${nextid}`,
disabled: !nextid});,
dialog = new OO.ui.MessageDialog(),
// 这个click事件不能绑到btnGo上,否则会禁用href跳转
actionC = new OO.ui.ActionWidget({label: '取消'}),
btnGo.$element.click(() => { if (list && flag) { mw.storage.setObject( 'inspect-category', list ); } })
actionG = new OO.ui.ActionWidget({label: wgULS('确定', '確認'), flags: 'progressive'}),
.contextmenu(e => {
etextInput = new OO.preventDefaultui.TextInputWidget();,
fromHere = new OO.ui.CheckboxInputWidget(),
OO.ui.promptmessage = [ $('<p>', {text: wgULS('请输入分类名或名字空间编号:', '請輸入分類名或名字空間編號:') }).then(cat => {,
if (cat === null) { return; }
textInput.$element,
// 输入空白则清除分类
new OO.ui.FieldLayout(fromHere, {label: wgULS('从当前页面继续', '從當前頁面繼續'), align: 'inline'}).$element
if (cat === '') {
],
mw.storage.remove( 'inspect-category' );
updateCat = function(cat, ctn) {
btnGo.setHref( `/zh?redirect=no&curid=${id + 1}` ).setDisabled( false );
// 输入空白则清除分类
if (cat === null'') { return; }
mw.storage.remove( 'inspect-category' );
btnGo.setHref( `/zh?redirect=no&curid=${id + 1}` ).setDisabled( false );
return;
}
// 输入数字对应名字空间
if (!isNaN(cat)) {
if (!Object.keys( mw.config.get( 'wgFormattedNamespaces' ) ).includes(cat)) {
mw.notify(wgULS('错误的名字空间编号!', '錯誤的名字空間編號!'), {type: 'error'});
return;
}
mw.timedQuery(api, {list: 'allpages', apnamespace: cat, apfilterredir: 'nonredirects', aplimit: 'max'},
// 输入数字对应名字空间
wgULS('该名字空间的页面列表', '該名字空間的頁面列表')).then(ap => {
if (!isNaN(cat)) {
const pages = ap.query.allpages.map(ele => ele.pageid).sort((a, b) => a < b); // 由新到旧排列
if (!Object.keys( mw.config.get( 'wgFormattedNamespaces' ) ).includes(cat)) {
if (pages.length === 0) {
mw.notify(wgULS('错误的名字空间编号!', '錯誤的名字空間編號!'), {type: 'error'});
mw.notify( wgULS('该名字空间沒有非重定向的页面!', '該名字空間沒有非重定向的頁面!'), {type: 'warn'} );
return;
}
initList(pages, ctn);
mw.timedQuery(api, {list: 'allpages', apnamespace: cat, apfilterredir: 'nonredirects', aplimit: 'max'},
}, () => {}); // mw.timedQuery已经通知过错误信息,这里只要一个空函数处理reject,下同
wgULS('该名字空间的页面列表', '該名字空間的頁面列表')).then(ap => {
return;
const pages = ap.query.allpages.map(ele => ele.pageid).sort((a, b) => a < b); // 由新到旧排列
let dialog;}
if (pages.length === 0) {
if (!/^(category|分[类類]):/i.test( cat )) { cat = `Category:${cat}`; }
mw.notify( wgULS('该名字空间沒有非重定向的页面!', '該名字空間沒有非重定向的頁面!'), {type: 'warn'} );
// cmtitle参数不可自动转换,所以需要先获得转换后的正确标题
return;
mw.timedQuery(api, {titles: cat, converttitles: 1}, wgULS('标准页面名称', '標準頁面名稱')).then(r => {
}
const target = initList(r.query.pages)[0];
if (cat === ''target.missing) {
}, () => {}); // mw.timedQuery已经通知过错误信息,这里只要一个空函数处理reject,下同
mw.notify(wgULS('错误的分类名!', '錯誤的分類名!'), {type: 'error'});
return;
}
mw.timedQuery(api, {list: 'categorymembers', cmtitle: target.title, cmprop: 'ids', cmlimit: 'max',
if (!/^(category|分[类類]):/i.test( cat )) { cat = `Category:${cat}`; }
cmsort: 'timestamp', cmdir: 'older'}, wgULS('分类下的页面列表', '分類下的頁面列表')).then(cm => {
// cmtitle参数不可自动转换,所以需要先获得转换后的正确标题
const pages = cm.query.categorymembers.map(ele => ele.pageid);
mw.timedQuery(api, {titles: cat, converttitles: 1}, wgULS('标准页面名称', '標準頁面名稱')).then(r => {
constif target(pages.length === r.query.pages[0];) {
mw.notify( wgULS('该分类下无页面!', '該分類下無頁面!'), {type: 'warn'} );
if (target.missing) {
mw.notify(wgULS('错误的分类名!', '錯誤的分類名!'), {type: 'error'});
return;
}
if initList(pages.length, === 0ctn) {;
mw.timedQuery(api, {list: 'categorymembers', cmtitle: target.title, cmprop: 'ids', cmlimit: 'max',
cmsort: 'timestamp', cmdir: 'older'}, wgULS('分类下的页面列表', '分類下的頁面列表')).then(cm => {
const pages = cm.query.categorymembers.map(ele => ele.pageid);
if (pages.length === 0) {
mw.notify( wgULS('该分类下无页面!', '該分類下無頁面!'), {type: 'warn'} );
return;
}
initList(pages);
}, () => {});
}, () => {});
}, () => {});
};
// 这个click事件不能绑到btnGo上,否则会禁用href跳转
btnGo.$element.click(() => { if (list && flag) { mw.storage.setObject( 'inspect-category', list ); } })
.contextmenu(e => {
e.preventDefault();
mw.dialog(dialog, [actionC, actionG], message).then(() => {
actionG.click(() => { updateCat( textInput.getValue(), fromHere.isSelected() ); });
});
});
$('<div>', {html: [wgULS('替换:', '替換:'), val.$element]}),
$('<div>', {html: [
new OO.ui.FieldLayout(regex, {label: wgULS('正则', '正則'), regex}).$element,
new OO.ui.FieldLayout(modifier, {label: $('<i>', {text: 'i'}), modifier}).$element,
replaceBtn.$element, undoBtn.$element, hideBtn.$element
]})
$url = $('<a>'), // 桌面版CSS不必需href
label = [wgULS('要在新标签页打开', '要在新標籤頁打開'), $url, wgULS('吗?', '嗎?')];
let dialog;
$outer.on('contextmenu', '.cm-mw-template-name', function() {
const template = '模板:' + $(this).text();
$url.text( template );
actionP.setHref( mw.util.getUrl(template) ); // 注意url转义
dialog = mw.dialog(dialog, [actionD, actionP], label);
return false; // 这里需要同时执行stopImmediatePropagation()和preventDefault()
}).on('contextmenu', '.CodeMirror', e => {
16,874

个编辑

导航菜单