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

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

来自LLWiki
跳转到导航 跳转到搜索
(使用页面/文本对比查看器快速编辑)
(使用页面/文本对比查看器快速编辑)
标签移动版网页编辑 移动版编辑
第65行: 第65行:
:*<code>autoHide</code> – 布尔值,决定通知是否会自行消失。默认为<code lang="js">true</code>。
:*<code>autoHide</code> – 布尔值,决定通知是否会自行消失。默认为<code lang="js">true</code>。
:*<code>autoHideSeconds</code> – 如果启用了<code>autoHide</code>(如默认情形),则指定通知自行消失的时间。默认为<code lang="js">'short'</code>(5秒),可以指定为<code lang="js">'long'</code>(30秒)。
:*<code>autoHideSeconds</code> – 如果启用了<code>autoHide</code>(如默认情形),则指定通知自行消失的时间。默认为<code lang="js">'short'</code>(5秒),可以指定为<code lang="js">'long'</code>(30秒)。
:*<code>tag</code> – 字符串,指定通知的标签,类似于HTML的ID。如果发送多个拥有同一个tag的通知,会导致之前的通知被后来的在原位覆盖。由于手机版只能同时显示一条通知,这个选项对手机版意义不大
:*<code>tag</code> – 字符串,指定通知的标签,类似于HTML的ID。如果发送多个拥有同一个tag的通知,会导致之前的通知被后来的在原位覆盖。
:*<code>title</code> – 标题。如果指定,则会于内容上方显示,桌面版还会加粗。
:*<code>title</code> – 标题。如果指定,则会于内容上方加粗显示
:*<code>type</code> – 字符串,指定通知的种类。除默认效果外其他可选类型为<code lang="js">'warn'</code>和<code lang="js">'error'</code>。
:*<code>type</code> – 字符串,指定通知的种类。除默认效果外其他可选类型为<code lang="js">'warn'</code>和<code lang="js">'error'</code>。
;mw.now()
;mw.now()

2020年12月27日 (日) 00:04的版本

内容缺失.png 此页面内容严重缺失,急需您帮忙补充!(点此编辑)
可参考同类条目添加所需内容,并从官方等可靠渠道搜集资料编写,亦建议附上资料来源。

全站CSS

优先加载的CSS

滞后加载的CSS

CSS小工具分类

Widget(小部件)

小部件页面格式

小部件分类

小部件JS的特殊之处

Gadget(小工具)和全站JS

ResourceLoader和JS模块

不作为模块的JS脚本

小工具定义

小工具简介

小工具分类

MediaWiki核心模块介绍

本章节介绍LLWiki使用或曾经使用的MediaWiki核心模块,更完整的列表参见MediaWikiJSDuck

mediawiki

mediawiki是任何页面都会预加载的两个环境模块之一,包含不少功能[1]。这里只介绍LLWiki常使用的一些属性和方法。

mw.config
这个属性提供了大量重要的站点、页面和用户信息[2],一般常用mw.config.get()方法获取对应的变量值。下表整理了LLWiki常用的一些变量:
变量名 说明 手机版可用性
skin 皮肤 桌面版为“vector”,手机版为“minerva”,这也是区分桌面版和手机版的主要依据
wgFormattedNamespaces 储存了所有名字空间本地化译名的数组,不过目前除了“模块”都是英文 可用
wgScript /mediawiki/index.php,在LLWiki也可简化为/zh,主要用于不同MediaWiki站点间的代码通用,非必需 可用
wgAction index.php的action参数[3] 相比于桌面版,手机版由于添加了Special:历史而少了“history”这个变量值
wgArticleId 用于判断是否是内容页面且页面是否已建立 需要注意查看历史差异时值为0
wgCanonicalSpecialPageName 标准化的特殊页面名,也可被wgPageName取代,主要用于不同MediaWiki站点间的代码通用,非必需 可用,而且多了“History”和"MobileDiff"等可能的取值[4]
wgCategories 页面所属分类,且总是包含隐藏分类,但在action=edit/history/info等时为空。繁简规则一般遵从实际分类页面,但似乎偶有例外 差异页面同样不可用。另外桌面版的空值为[],手机版的空值为null,注意可能的bug
wgCurRevisionId 页面最新的revision ID 历史差异页面不可用
wgIsArticle 是否是内容页面(包含由某个页面的Wikitext源代码解析生成的HTML,可能是历史页面) 由于差异页面不同时显示历史页面,此时不可用
wgIsProbablyEditable 是否可能可以编辑 历史差异页面不可用
wgNamespaceNumber 名字空间编号 可用
wgPageContentModel 页面内容模型,特殊页面为“wikitext” 由于历史差异是特殊页面,会错误地显示为“wikitext”
wgPageName 页面名称,空格显示为下划线 历史差异页面不可用
wgRedirectFrom 跳转自重定向时为对应的重定向页 可用
wgRelevantPageName 关联的内容页面 可以用于历史差异页面,此时效果与桌面版一致
wgRelevantUserName 关联的用户名 贡献页面不可用
wgRelevantPageIsProbablyEditable 关联的内容页面是否可能可以编辑 可以用于历史差异页面,此时效果与桌面版一致
mw.hook()
mw.loader
mw.notify()
调用这个方法可以在桌面版的右上角、手机版的上方显示一个泡泡通知。LLWiki一般使用这个方法取代window.alert()或OO.ui.alert()。
方法mw.notify(message, options)接受两个参数。第一个必需参数message指定通知内容,可以是字符串、HTML元素对象或元素对象数组、jQuery对象或mw.message对象;第二个可选参数options则指定自定义选项,是一个JS对象。
options中可自定义的选项有:
  • autoHide – 布尔值,决定通知是否会自行消失。默认为true
  • autoHideSeconds – 如果启用了autoHide(如默认情形),则指定通知自行消失的时间。默认为'short'(5秒),可以指定为'long'(30秒)。
  • tag – 字符串,指定通知的标签,类似于HTML的ID。如果发送多个拥有同一个tag的通知,会导致之前的通知被后来的在原位覆盖。
  • title – 标题。如果指定,则会于内容上方加粗显示。
  • type – 字符串,指定通知的种类。除默认效果外其他可选类型为'warn''error'
mw.now()
这个方法理论上和Date.now()差不多,但实际测试表明和Date.now()的取值不同,因此请勿混合使用。非必需,基本可以完全被Date.now()替换。

jquery

mediawiki.api

mediawiki.util

mediawiki.Uri

mediawiki.storage

mediawiki.cookie

user.options

jquery.makeCollapsible

jquery.tablesorter

jquery.textSelection

jquery.client

jquery.color

jquery.ui

jquery.tipsy

jquery.chosen

oojs-ui-core

oojs-ui-windows

mediawiki.widgets

LLWiki添加的全局变量和方法

window.wgULS()和window.wgUCS()[5]
mw.gadgets
mw.request
mw.widget
mw.windowManager
mw.standardQuery()[5]
mw.apiFailure()[5]
mw.safeEdit()[5]
mw.resizeLyrics()[6]

ESLint

CodeEditor使用ESLint标注可能存在的语法问题。LLWiki并未在后台预先规定太多规则,目前比较常用的仅是在"use strict";的基础上添加/*global mw, $, OO, wgULS*/或类似语句注明全局变量。特别要注意ESLint并不会对大多数JS模块不允许使用的ES6语法(async/await语法是已知的唯一例外)作出警告(详见#ResourceLoader和JS模块),因此请勿过度依赖这一功能来进行除错。

注意事项

手机版

手机版解析器

图片懒加载

手机版CSS

手机版LLWiki使用Minerva Neue皮肤,与桌面版的Vector皮肤相比,不仅界面有很大差异,众多基础HTML元素也都添加了不同的CSS样式。为了适配窄屏设备,Minerva皮肤还添加了大量基于@media的规则,一般以设备宽度720px为分界使用不同的样式。以下着重介绍<table><img>这两种需要CSS修正的重灾区。

手机版CSS很多时候依赖外层容器的content类来生效,与此同时#mw-content-text .mw-parser-output的外层结构也同样有效,设计各种基于API的快速编辑工具(如Wikiplus等)的预览界面时需要考虑。

表格

对于<table>元素及其子节点,手机版已知会自动添加以下样式:

table, caption, tbody, tfoot, thead, tr, th, td {
	font-size: 100%;
}
table {
	border-collapse: collapse;
}
.content table {
	margin: 1em 0;
	overflow: auto;
	overflow-y: hidden;
	overflow-x: auto;
}
@media only screen and (max-width: 720px) {
	.content table {
		display: block;
		width: 100% !important;
	}
}

这里重点说明一下第二和第四条规则造成的影响。第二条规则使得表格的外层边框、行边框和单元格边框合并,可能造成一系列关于边框的CSS规则出现不符合预期的表现,尤其是<table>cellspacing属性会无法生效。因此一般建议避免使用cellspacing这一HTML属性,改为使用CSS中的border-spacing。另外,在需要border-spacingborder-radius等样式时,请同时指定border-collapse: separate;以使手机版生效。

第四条规则的本意是在窄屏上<table>元素不会将页面撑得过宽,但这同时会造成外层的<table>和内层的<tbody>分离。特别是如果外层<table>规定了边框或背景色时,很容易看出样式的错误。为此一般需要主动指定display: table;以修复这一问题,LLWiki有很多预定义的表格CSS类也都添加了这一规则[7]。但这样修改的话又会重新面临过宽的表格将整个页面撑大的问题。LLWiki现定义了table-wrapper[7],用于套在宽表格外:<div class="table-wrapper">,这个外层容器会在窄屏上通过overflow-x: auto;限制里面的表格宽度。

图片

皮肤界面

其他

手机版JS

手机版JS模块

繁简转换

Wikitext繁简转换

转换表

Template:NoteTA

基本手工转换语法

系统消息

CSS繁简转换

JS繁简转换

滥用过滤器

测试账户

如果管理员需要一个没有自确权限的测试账户用于滥用过滤器测试、小工具测试等,可以临时启用6号滥用过滤器来移除某个测试账户的自确权限。这个滥用过滤器的使用语法非常简单,请根据样例修改为对应的用户名即可,这里不再赘述。

参考资料