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

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

跳转到导航 跳转到搜索
添加551字节 、​ 2021年2月17日 (三) 06:08
无编辑摘要
(safari果然不行,编辑了一半浏览器崩了……)
* @Functions: 1. 繁简转换函数(wgULS, wgUCS)
* 2. 杂项(pagenamee, addMobileLinks, apiFailure)
* 43. API标准方法(timedQuery, timedParse, standardQuery, sectionQuery, safeEdit, safeRedirect)
* 54. OOUI标准方法(confirm, prompt, dialog, tipsy)
* 65. moment标准方法(convertTimezone)
* @Document: [[LLWiki:管理员技术手册]]
* @Author: 无特殊说明时均为[[User:Bhsd]]
/**
* @Function: 添加手机版菜单项
* @Param {Object[]} links, 形如{icon, text, href, attr}或{icon, msg, href, attr}的对象
* @Param {String} icon, FontAwesome图标名称icon(仅限fas类,默认为arrow-circle-right)
* @Param {String} text, 文字text(需手动繁简转换)
* @Param {String} msg, mw.messages的键值msg
* @Param {String} href, 目标地址href(可选)
* @Param {Object} attr, 外层<li>元素的属性(可选)
* @Return {HTML[]} 一组<li>元素
*/
/**
* @Function: API请求失败时通知错误信息
* @Param {String} reason, API返回的错误信息reason
* @Param {String} topic, API请求的内容topic(需手动繁简转换)
*/
mw.apiFailure = function(reason, topic) {
* @Function: 提交一个API查询请求并计时,以方便评估表现
* @Dependencies: mediawiki.api
* @Param {mw.Api} api, mw.Api对象api
* @Param {Object} params, API参数对象params
* @Param {String} topic, API请求内容topic(需手动繁简转换)
* @Return {Promise} Promise对象,且在请求成功时记录用时,失败时通知错误信息
*/
* @Function: 類似mw.timedQuery,但改用POST,適合用於預覽
* @Dependencies: mediawiki.api
* @Param {mw.Api} api, mw.Api对象api
* @Param {Object} params, API参数对象params(默认为当前页面)
* @Param {String} topic, API请求内容topic(需手动繁简转换)
* @Return {Promise} Promise对象,且在请求成功时记录用时,失败时通知错误信息
*/
* @Function: 提交一个标准API请求以获得当前版本的Wikitext,这是在多个小工具中广泛使用的请求
* @Dependencies: mediawiki.api
* @Param {mw.Api} api, mw.Api对象api
* @Return {Promise} 全局Promise对象mw.request,且在请求成功时记录用时,失败时通知错误信息
*/
mw.standardQuery = function(api) {
* @Function: 提交一个标准API请求以获得当前版本的段落Wikitext,一般不可用于历史版本
* @Dependencies: mediawiki.api
* @Param {mw.Api} api, mw.Api对象api
* @Param {Number} section, 段落编号section(默认为序言)
* @Param {Boolean} force, 强制历史版本force(可选)
* @Return {Promise} 全局Promise对象mw.sections[],且在请求成功时记录用时,失败时通知错误信息
*/
mw.sectionQuery = function(api, section, force) {
return Promise.reject( 'historySection' );
}
section = section || 0;
mw.sections = mw.sections || [];
mw.sections[section] = mw.sections[section] || mw.timedQuery(api, {action: 'parse', oldid: revid,
* @Function: 检查编辑冲突后提交编辑
* @Dependencies: mediawiki.api
* @Param {mw.Api} api, mw.Api对象api
* @Param {Number} curRevid, 最新修订编号curRevid(默认为当前页面)
* @Param {Object} params, API参数对象params
* @Param {Boolean} flag, 是否启用自动备份flag(可选,只会改变错误信息
* @Return {Promise} Promise对象,API请求失败时抛出revisionQueryFailure或editFailure,编辑冲突时抛出editConflict
*/
mw.msg('gadget-lib-latest')).then(function(data) {
// 未创建的页面lastrevid返回undefined,因此下式同样为false
if (data.query.pages[0].lastrevid > (curRevid || mw.config.get( 'wgCurRevisionId' ))) {
mw.notify( mw.msg('gadget-lib-conflict' + (flag + 1)),
{type: 'error', autoHideSeconds: 'long', tag: 'editConflict'} );
* @Function: 检查页面是否存在后新建重定向
* @Dependencies: mediawiki.api
* @Param {mw.Api} api, mw.Api对象api
* @Param {String} title, 重定向页标题title
* @Param {String} target, 重定向目标target(默认为当前页面)
* @Param {String} summary, 编辑摘要summary(可选)
* @Return {Promise} Promise对象,API请求失败时抛出queryFailure或createFailure,页面已存在时抛出pageExists
*/
console.log('API request: 开始新建重定向');
const now = mw.now();
api.create(title, summary ? {summary: summary} : {}, '#重定向 [[' + (target || pagename) + ']]').then(function() {
console.log('End API request: 成功新建重定向,用时 ' + (mw.now() - now) + ' ms');
mw.notify( mw.msg('gadget-lib-createSuccess'), {type: 'success'} );
* @Function: 生成标准化的确认对话框
* @Dependencies: oojs-ui-windows
* @Param {String} text, 文字提示text
* @Param {String[]} flags, 确认按钮样式flags(可选)
* @Return {Promise} Promise对象
*/
* @Function: 生成标准化的prompt对话框
* @Dependencies: oojs-ui-windows
* @Param {String} text, 文字提示text
* @Param {String[]} flags, 确认按钮样式flags(可选)
* @Param {Object} config, 文本框设置config(可选)
* @Return {Promise} Promise对象
*/
* @Function: 生成标准化的对话框
* @Dependencies: oojs-ui-windows
* @Param {OO.ui.MessageDialog} dialog, OO.ui.MessageDialog对象dialog
* @Param {Object[]} actions, 按钮actions
* @Param {jQuery} 文字$message, 文字(可选)
* @Param {jQuery} $title, 标题$title(可选)
* @Return {Promise} Promise对象
*/
if (!dialog.getManager()) {
const windowManager = new OO.ui.WindowManager();
windowManager.$element.appendTo( 'document.body' );
windowManager.addWindows( [dialog] );
}
* @Function: 生成兼容手机版的tooltip
* @Dependencies: oojs-ui-core
* @Param {jQuery} 容器$container, 容器
* @Param {String} target, 目标选择器target
* @Param {Object} params, 参数params(可选)
* @Param {jQuery} $content, 标签对象$content(可选)
*/
mw.tipsy = function($container, target, params, $content) {
classes: ['mw-tipsy']}, params) );
if ($content) { $content.append( $label ); } // 没有title时,$label没有效果
popup.$element.appendTo( 'document.body' );
$container.on('mouseenter focus', target, function() {
const $this = $(this);
* @Function: 更改moment对象的时区
* @Dependencies: moment
* @Param {moment} then, 原始moment对象(默认为现在)
* @Param {String} timeZone, 符合IANA标准的时区名称(不检查合法性)或UTC偏移量(默认为本地)
* @Return {moment} 更改时区后的moment对象。注意这不是一个真实存在的时间,只能用于输出,不能用于进一步计算。
* @Return {String} 以en-us记法表示的时区或UTC偏移量
mw.convertTimezone = function(then, timezone) {
if (timezone === '') { timezone = undefined; }
then = then || moment();
if (isNaN( timezone )) { // 时区名称
const date = new Date(then);
16,874

个编辑

导航菜单