“LLWiki:管理员技术手册”的版本间差异

添加4,486字节 、​ 2021年1月16日 (六) 07:33
→‎mediawiki:​ // 使用Wikiplus小工具快速编辑
标签移动版网页编辑 移动版编辑
;mw.now()
:这个方法理论上和Date.now()差不多,但实际测试表明和Date.now()的取值不同,因此请勿混合使用。非必需,基本可以完全被Date.now()替换。
;mw.message()messages
:用于改善代码结构,在代码开头使用mw.messages.set()方法结合[[#LLWiki添加的全局变量和方法|wgULS()和wgUCS()]]设置自定义消息的繁简名称,然后使用mw.msg()方法即可调用。使用这一方法时,还能以<code>$1</code>的形式设置待定参数,或使用部分解析器函数
 
====jquery====
===LLWiki添加的全局變量和方法===
;<code lang="js">window.wgULS(hans, [hant])</code>和<code lang="js">window.wgUCS(hans, [hant])</code><ref name="site-lib">需要加載[[mediawiki:gadget-site-lib.js|site-lib.js]]</ref>
:用于处理繁简文字信息。为方便维护,在大量使用繁简转换的页面,请将所有繁简文字以mw.messages.set()方法的形式至于代码开头,然后在使用时以mw.msg()方法调用即可。
 
;mw.gadgets
:这个对象储存了所有小工具的设置。
 
;mw.request
:这个对象储存了一个mw.standardQuery()方法返回的Promimse对象,即获取当前版本全文Wikitext的API请求。
 
;mw.sections
:这个数组的每一项对应一个mw.sectionQuery()方法返回的Promise对象,即获取对应段落Wikitext的API请求。
 
;mw.widget
:这个对象储存了小部件的执行情况,防止Ajax预览造成小部件重复执行。
 
;mw.windowManager
:这个对象储存了一个公用的OO.ui.WindowManager对象。
 
;<code>mw.pagenamee([title])</code><ref name="site-lib" />
:这个方法用于获取转义后的页面名称,默认参数为当前页面。需要mediawiki.util。
 
;<code>mw.apiFailure(reason, topic)</code><ref name="site-lib" />
:这个方法用于输出一个API请求失败的气泡通知。reason为API返回的错误信息,一般来自状态为reject的Promise对象;topic为简短的文字说明。
 
;<code>mw.timedQuery(api, params, topic)</code><ref name="site-lib" />
:这个方法用于提交一个可自定义的API请求,并记录用时,失败时应用mw.apiFailure()方法生成气泡通知。api为一个mw.Api对象;params即API参数,默认已填入<code lang="js">{action: 'query', formatversion: 2}</code>,可以覆盖;topic为简短文字描述。需要mediawiki.api。
 
;<code>mw.timedParse(api, params, topic)</code><ref name="site-lib" />
:Ajax使用POST而非GET,因此适合预览大段Wikitext。params的默认设置为<code lang="js">{action: 'parse', prop: 'text', title: mw.config.get( 'wgPageName' ), disablelimitreport: 1, disableeditsection: 1, formatversion: 2}</code>,可以覆盖。需要mediawiki.api。
 
;<code>mw.standardQuery(api)</code><ref name="site-lib" />
:使用mw.timedQuery()方法提交一个API请求以获取当前版本的全文Wikitext。需要mediawiki.api。
 
;<code>mw.sectionQuery(api, section, [force])</code><ref name="site-lib" />
:使用mw.timedQuery()方法提交一个API请求以获取段落Wikitext。section为段落编号;为降低错误编辑历史版本的风险,想要获取历史版本的段落Wikitext时,必须手动添加为真的force参数。需要mediawiki.api。
 
;<code>mw.safeEdit(api, curRevid, params, [flag])</code><ref name="site-lib" />
:检查有无编辑冲突后提交编辑。api为mw.Api对象;curRevid为当前最新版本的编号,为保险起见未赋初始值,但一般填<code lang="js">mw.config.get( 'wgCurRevisionId' )</code>即可;parmas为API参数,默认为<code lang="js">{action: 'edit'}</code>,可以覆盖,但原则上请勿使用这一方法执行其他操作;flag参数对应是否开启自动备份小工具,这会改变检测到编辑冲突是的应对。检测到编辑冲突跑出错误<code lang="js">'editConflict'</code>,API请求失败抛出错误<code lang="js">'editFailure'</code>或<code lang="js">'revisionQueryFailure'</code>。需要mediawiki.api。
 
;<code>mw.safeRedirect(api, title, target, [summary])</code><ref name="site-lib" />
:检查繁简转换后的页面是否存在后创建新重定向。api为mw.Api对象;title为重定向页标题;target为重定向目标页标题;summary为可选摘要。需要mediawiki.api。
 
;<code>mw.confirm(text, flags)</code><ref name="site-lib" />
:借助OO.ui.confirm()方法生成一个确认对话框。text为确认提示;flags为确认键的样式,包括<code lang="js">'primary'</code>、<code lang="js">'progressive'</code>和<code lang="js">'destructive'</code>,其中<code lang="js">'primary'</code>不能单独生效。返回值为一个状态resolve的Promise对象,值为真表示确认。需要oojs-ui-core和oojs-ui-windows。
 
;<code>mw.dialog(dialog, actions, message, [title])</code><ref name="site-lib" />
:借助OO.ui.MessageDialog对象生成一个更复杂的对话框。dialog为预先准备的OO.ui.MessageDialog对象;actions为OO.ui.ActionWidget对象构成的数组;message为提示信息,相比mw.confirm()方法的进步之处在于可以填入htmlString;title为对话框标题。返回值为点击按钮时的Promise对象。需要oojs-ui-core和oojs-ui-windows。
 
;<code>mw.tipsy($container, target, [params])</code><ref name="site-lib" />
:借助OO.ui.PopupWidget对象生成一个手机版也有效的tooltip。$container为外部容器的jQuery对象,target为目标元素的选择器,params为建立OO.ui.PopupWidget对象时的参数,默认为<code lang="js">{padded: true, width: null}</code>,可以覆盖。需要oojs-ui-core和oojs-ui-windows。
 
;mw.resizeLyrics()<ref>需要加載[[user:bhsd/widget/lyrics.js|Widget:Lyrics]]</ref>
:重新计算<code lang="css">.Lyrics_box</code>的大小,并调整原文和译文的排列方式。
 
===JSHint===
CodeEditor使用JSHint标注可能存在的语法问题。LLWiki會在大部分JS页面添加JSHint设置<code lang="js">/* global mw */</code>和<code lang="js">/* jshint jquery: true, bitwise: true, curly: true, latedef: 'nofunc', nonew: true, singleGroups: true, unused: true */</code><ref>[https://jshint.com/docs/options/ 新版JSHint的设置列表],注意可能存在的版本差异。</ref>。注意JSHint并不会对大多数但在小部件页面,为了提示小部件JS加载在模块不允许使用的ES6语法作出警告(详见[[#ResourceLoadermediawikiJS模块]]),因此请勿过度依赖这一功能来除错。另外CodeEditor安装的JSHint版本较老jquery之前无法识别ES7以上的语法,因此在代码中使用ES7语法可能会造成除错时的困难。<code lang="js
>/* global mw */</code>和<code lang="js">/* jshint jquery: true */</code>被替换为乐<code lang="js">/* jshint varstmt: true */</code>。注意JSHint并不会对大多数JS模块不允许使用的ES6语法作出警告(详见[[#ResourceLoader和JS模块]]),因此请勿过度依赖这一功能来除错。另外CodeEditor安装的JSHint版本较老,无法识别ES7以上的语法,因此在代码中使用ES7语法可能会造成除错时的困难。
 
===注意事项===
16,874

个编辑