“User:Bhsd/tool.js”的版本间差异

删除36字节 、​ 2021年5月26日 (三) 23:38
无编辑摘要
// 由[[Special:Mypage/common.js]]调用,可以使用ES6语法
/**
// 生成JS文件大小
* @Description: 自用的工具函数
* @Author: [[User:Bhsd]]
* @Dependencies: mediawiki.util
*/
"use strict";
/**
/*global mw, $*/
* @Function: 批量添加文件授权协议,只能处理不超过500个文件的分类
mw.myCopyright = function(cmtitle = mw.config.get('wgTitle')) {
* @Dependencies: mw.loader.using( 'mediawiki.api', )ext.then(() => {gadget.site-lib
* @Param {String} cmtitle 分类名,默认为当前所在分类页
*/
mw.myCopyright = function(cmtitle = mw.config.get( 'wgTitle' )) => {
const cats = ['原作者保留权利的文件', '可自由使用的文件', 'LLWiki版权所有的文件', '使用CC Zero协议的文件'];
mw.loader.using( ['mediawiki.api', 'ext.gadget.site-lib'] ).then(() => {
const api = new mw.Api();
mw.timedQuery(api, { prop: 'categories', generator: 'categorymembers', gcmtitle: `Category:${cmtitle}`, gcmtype: 'file', gcmlimit: 'max'
console.log('API request: 查询分类下无授权协议的文件');
gcmtype: 'file', gcmlimit: 'max', clcategories: cats.map(ele => `Category:${ele}`).join( '|' )
const timerStart = mw.now();
console.log('API}, request: 查询'分类下无授权协议的文件');.then(res => {
api.get({action: 'query', prop: 'categories', clcategories: 'Category:原作者保留权利的文件', formatversion: 2,
generator: 'categorymembers', gcmtitle: `Category:${cmtitle}`, gcmtype: 'file', gcmlimit: 'max'
}).then(res => {
console.log(`End API request: 已获得分类下无授权协议的文件,用时 ${mw.now() - timerStart} ms`);
res.query.pages.filter(ele => !ele.categories).forEach(ele => {
api.postWithToken('csrf', {action: 'edit', pageid: ele.pageid, minor: 1, bot: 1,
prependtext: '==授权协议==\n{{copyright}}\n', summary: '使用API批量添加授权协议',
}).catch(reason => { console.error( `页面${ele.pageid}无法添加授权协议,错误原因:${reason}` ); });
});
}).then, (res) => {});
}, reason => { mw.notify(`无法获得对应文件。错误原因:${reason}`, {type: 'error'}); });
});
};
 
/**
mw.myJsSize = function(table) {
* @Function: 查询JS页面大小
const items = table.find( 'td:first-child' ),
* @Dependencies: mediawiki.api, ext.gadget.site-lib
titles = items.children( 'a' ).toArray().map(ele => ele.title);
*/
mw.loader.using( 'mediawiki.api' ).then(() => {
mw.myJsSize = function(table) => {
console.log('API request: 查询JS页面大小');
const timerStart$table = mw$('.now(jsTable');,
const $items = $table.find( 'tdtr:firstnth-child(n+1)' ),
new mw.Api().get({ action:'query', prop:'info', titles:titles.join( '|' ), formatversion:2 }).then(data => {
titles = $items.childrenfind( 'a' ).toArray().map(ele => ele.title);
console.log(`End API request: 已获得JS页面大小,用时 ${mw.now() - timerStart} ms`);
mw.loader.using( ['mediawiki.api', 'ext.gadget.site-lib'] ).then(() => {
table.find( 'th:last-child' ).show();
mw.timedQuery(new mw.Api().get({ action:'query', {prop: 'info', titles: titles.join( '|' )}, formatversion:2 }'JS页面大小').then(data => {
$table.findtoggleClass( 'th:last-childjsTable jsTable2' ).show();
// 注意返回的结果可能顺序不同
const lengths = Object.fromEntries( data.query.pages.map(ele => [ele.title, ele.length]) );
$items.parentchildren( 'td:last-child' ).appendtext(i => $('<td>',lengths[ {class:titles[i] 'video-link',] / 1024).toFixed(1));
text:}, (lengths[) titles[i]=> ]{ / 1024$('#myJsSize').toFixedoff(1)} 'click' ).cssone('text-alignclick', 'right'mw.myJsSize); });
}, reason => {
mw.notify(`无法获得JS页面大小。错误原因:${reason}`, {type: 'error'});
$('#myJsSize').off( 'click' ).one('click', function() { mw.myJsSize( $(this).parent().next() ); });
});
});
};
 
(function() {
$('#myJsSize').one('click', function() { mw.myJsSize( $(this).parent().next() ); });
/**
* @Function: 记录所有触发的Hook
*/
const start = mw.now();
['postEdit', 'wikipage.content', 'wikipage.collapsibleContent', 'wikipage.categories', 'wikipage.diff',
'wikipage.editform', 'structuredChangeFilters.ui.initialized', 'codeEditor.configure', // MW原生Hook
'code.prettify', 'wikiplus.dialog', 'transclusion.preview' // 小工具Hook
].forEach(ele => { mw.hook(ele).add(x => {
consolemw.loghook(`Hook: ${ele} after ${mw).nowadd()x -=> start} ms`);{
if console.log(x)`Hook: ${ele} consoleafter ${mw.infonow(x); - start} ms`);
if (x) { console.info(x); }
}); });
}, reason => {);
});
}) ();
16,874

个编辑