16,874
个编辑
LLWiki正在建设中,欢迎加入我们!
小 |
小 |
||
$outer = $('<div>', {id: 'inspector', class: 'mw-ajax-loader'}).insertBefore( $original ),
api = new mw.Api(),
initList = (pages, ctn) => {
flag = pages[0] == id
list = [pages, flag ? pages.indexOf(id) + 1 : 0];
if (ctn && !flag) { mw.notify(wgULS('当前页面并不属于该分类或名字空间!', '當前頁面並不屬於該分類或名字空間!'),
mw.storage.setObject( 'inspect-category', [pages, 0] );▼
btnGo.setHref( `/zh?redirect=no&curid=${pages[ flag ]}` ).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 => {▼
fromHere = new OO.ui.CheckboxInputWidget(),
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 );▼
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 => {
▲ const pages = ap.query.allpages.map(ele => ele.pageid).sort((a, b) => a < b); // 由新到旧排列
▲ if (pages.length === 0) {
▲ mw.notify( wgULS('该名字空间沒有非重定向的页面!', '該名字空間沒有非重定向的頁面!'), {type: 'warn'} );
▲ return;
▲ }
const target =
▲ }, () => {}); // mw.timedQuery已经通知过错误信息,这里只要一个空函数处理reject,下同
return;
}
▲ if (!/^(category|分[类類]):/i.test( cat )) { cat = `Category:${cat}`; }
▲ // cmtitle参数不可自动转换,所以需要先获得转换后的正确标题
▲ mw.timedQuery(api, {titles: cat, converttitles: 1}, wgULS('标准页面名称', '標準頁面名稱')).then(r => {
▲ mw.notify(wgULS('错误的分类名!', '錯誤的分類名!'), {type: 'error'});
return;
}
▲ 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('正则', '正則')
new OO.ui.FieldLayout(modifier, {label: $('<i>', {text: 'i'})
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转义
return false; // 这里需要同时执行stopImmediatePropagation()和preventDefault()
}).on('contextmenu', '.CodeMirror', e => {
|