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

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

来自LLWiki
跳转到导航 跳转到搜索
(使用页面/文本对比查看器快速编辑)
(使用页面/文本对比查看器快速编辑)
第27行: 第27行:
| wgFormattedNamespaces || 储存了所有名字空间本地化译名的数组,不过目前除了“模块”都是英文 || 可用
| wgFormattedNamespaces || 储存了所有名字空间本地化译名的数组,不过目前除了“模块”都是英文 || 可用
|-
|-
| wgNamespaceIds || 储存了所有可接受的中英文名字空间名称对应的编号,注意英文名称中的空格都显示为下划线 || 可用
| wgNamespaceIds
|-
|-
| wgScript || <code>/mediawiki/index.php</code>,在LLWiki也可简化为<code>/zh</code>,主要用于不同MediaWiki站点间的代码通用,非必需 || 可用
| wgScript || <code>/mediawiki/index.php</code>,在LLWiki也可简化为<code>/zh</code>,主要用于不同MediaWiki站点间的代码通用,非必需 || 可用
|-
|-
| wgAction || index.php的action参数<ref>[[mw:Manual:Parameters_to_index.php/zh|完整参数列表]]</ref> || 相比于桌面版,手机版由于添加了[[Special:历史]]而少了“history”这个变量
| wgAction || index.php的action参数<ref>[[mw:Manual:Parameters_to_index.php/zh|完整参数列表]]</ref> || 相比于桌面版,手机版由于添加了[[Special:历史]]而少了“history”这个可能
|-
|-
| wgArticleId || 用于判断是否是内容页面且页面是否已建立 || 需要注意查看[[special:历史|历史]]和[[special:移动版差异|差异]]时值为0
| wgArticleId || 内容页面编号,不存在时值为0,可以用于判断是否是内容页面且页面是否已建立 || 需要注意查看[[special:历史|历史]]和[[special:移动版差异|差异]]时值为0
|-
|-
| wgCanonicalSpecialPageName || 标准化的特殊页面名,也可被wgPageName取代,主要用于不同MediaWiki站点间的代码通用,非必需 || 可用,而且多了“History”和"MobileDiff"等可能的取值<ref>[[mw:Extension:MobileFrontend/zh|移动前端的扩展说明]]</ref>
| wgCanonicalSpecialPageName || 标准化的特殊页面名,也可被wgPageName取代,主要用于不同MediaWiki站点间的代码通用,非必需 || 可用,而且多了“History”和"MobileDiff"等可能的取值<ref>[[mw:Extension:MobileFrontend/zh|移动前端的扩展说明]]</ref>
|-
|-
| wgCategories || 页面所属分类,且总是包含隐藏分类,但在action=edit/history/info等时为空。繁简规则一般遵从实际分类页面,但似乎偶有例外 || [[special:移动版差异|差异]]页面同样不可用。另外桌面版的空值为<code lang="js">[]</code>,手机版的空值为<code lang="js">null</code>,注意可能的bug
| wgCategories || 当前阅读的历史版本所属分类,不含名字空间,下划线显示为空格,且总是包含隐藏分类。繁简规则一般遵从实际分类页面,但似乎偶有例外 || 除非已执行[[mediawiki:gadget-MobileCategories.js|MobileCategories小工具]],否则不可用。另外桌面版的空值为<code>[]</code>,手机版的空值为<code lang="js">null</code>,注意可能的bug
|-
|-
| wgCurRevisionId || 页面最新的revision ID || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
| wgCurRevisionId || 页面最新的版本编号,不存在时值为0 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
|-
|-
| wgIsArticle || 是否是内容页面(包含由某个页面的Wikitext源代码解析生成的HTML,可能是历史页面) || 由于[[special:移动版差异|差异]]页面不同时显示历史页面,此时不可用
| wgIsArticle || 是否是内容页面(包含由某个页面的Wikitext源代码解析生成的HTML,可能是历史页面和差异下方的历史页面) || 由于[[special:移动版差异|差异]]页面不同时显示历史页面,此时不可用
|-
|-
| wgIsRedirect || 最新版本是否是重定向页面 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
| wgIsRedirect
|-
|-
| wgIsProbablyEditable || 是否可能可以编辑 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
| wgIsProbablyEditable || 是否可能可以编辑 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
|-
|-
| wgNamespaceNumber || 名字空间编号 || 可用
| wgNamespaceNumber || 名字空间编号 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面会显示为-1
|-
|-
| wgPageContentModel || 页面内容模型,特殊页面为“wikitext” || 由于[[special:历史|历史]]和[[special:移动版差异|差异]]是特殊页面,会错误地显示为“wikitext”
| wgPageContentModel || 页面内容模型,特殊页面为“wikitext” || 由于[[special:历史|历史]]和[[special:移动版差异|差异]]是特殊页面,会错误地显示为“wikitext”
第53行: 第53行:
| wgPageName || 页面名称,空格显示为下划线 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
| wgPageName || 页面名称,空格显示为下划线 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
|-
|-
| wgRedirectFrom || 跳转自重定向时为对应的重定向页 || 可用
| wgRedirectFrom || 跳转自重定向时为对应的重定向页,空格显示为下划线 || 可用
|-
|-
| '''wgRelevantPageName''' || 关联的内容页面 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
| '''wgRelevantPageName''' || 关联的页面名称,空格显示为下划线 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
|-
|-
| '''wgRelevantArticleId''' || 关联的内容页面编号,不存在时值为0 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
| wgRelevantArticleId
|-
|-
| wgRelevantUserName || 关联的用户名 || [[special:用户贡献|贡献]]页面不可用
| wgRelevantUserName || 关联的用户名 || [[special:用户贡献|贡献]]页面不可用
|-
|-
| '''wgRelevantPageIsProbablyEditable''' || 关联的内容页面是否可能可以编辑 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
| '''wgRelevantPageIsProbablyEditable''' || 关联的页面是否可能可以编辑 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
|-
|-
| wgRestrictionEdit || 编辑保护,不存在的页面(含受保护的标题)或特殊页面为<code lang="js">null</code>,存在的内容页面受全保护时为<code lang="js">["sysop"]</code>,受半保护时为<code lang="js">["autoconfirmed"]</code>,未保护为<code>[]</code>;不包含名字空间保护和级联保护 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用,另外未保护的内容页面为<code lang="js">["*"]</code>
| wgRestrictionEdit
|-
|-
| wgRestrictionMove || 移动保护,不存在的页面或特殊页面为<code lang="js">null</code>,存在的内容页面受全保护时为<code lang="js">["sysop"]</code>,受半保护时为<code lang="js">["autoconfirmed"]</code>,未保护为<code>[]</code>;不包含名字空间保护和级联保护 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
| wgRestrictionMove
|-
|-
| wgRevisionId || 当前显示的页面版本的编号,不存在时值为0。注意和index.php的oldid参数可能不同 || 由于[[special:移动版差异|差异]]页面不可同时显示历史页面,此时不可用
| wgRevisionId
|-
|-
| wgTitle || 不含名字空间的页面名称 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
| wgTitle
|-
|-
| wgUserEditCount
| wgUserEditCount || 当前用户的编辑次数 || 可用
|-
|-
| wgUserGroups
| wgUserGroups || 当前用户所属的用户组 || 可用
|-
|-
| wgUserLanguage
| wgUserLanguage || 当前用户使用的界面语言 || 可用
|-
|-
| wgUserName
| wgUserName || 当前用户的用户名 || 可用
|-
|-
| wgUserRegistration || 当前用户的注册时间,显示为毫秒数;可以使用mw.user.getRegistration()方法替代,该方法会生成Date对象 || 可用
| wgUserRegistration
|-
|-
| wgUserVariant || 当前用户阅读页面时的内容语言,在不可更改内容语言的页面总是为该用户的默认内容语言 || 可用
| wgUserVariant
|-
|-
| wgDiffOldId || 差异页面位于左侧的版本的编号 || 不可用
| wgDiffOldId
|-
|-
| wgDiffNewId || 差异页面位于右侧的版本的编号 || 不可用
| wgDiffNewId
|}
|}
;mw.hook()
;mw.hook()

2020年12月28日 (一) 04:06的版本

内容缺失.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 储存了所有名字空间本地化译名的数组,不过目前除了“模块”都是英文 可用
wgNamespaceIds 储存了所有可接受的中英文名字空间名称对应的编号,注意英文名称中的空格都显示为下划线 可用
wgScript /mediawiki/index.php,在LLWiki也可简化为/zh,主要用于不同MediaWiki站点间的代码通用,非必需 可用
wgAction index.php的action参数[3] 相比于桌面版,手机版由于添加了Special:历史而少了“history”这个可能值
wgArticleId 内容页面编号,不存在时值为0,可以用于判断是否是内容页面且页面是否已建立 需要注意查看历史差异时值为0
wgCanonicalSpecialPageName 标准化的特殊页面名,也可被wgPageName取代,主要用于不同MediaWiki站点间的代码通用,非必需 可用,而且多了“History”和"MobileDiff"等可能的取值[4]
wgCategories 当前阅读的历史版本所属的分类,不含名字空间,下划线显示为空格,且总是包含隐藏分类。繁简规则一般遵从实际分类页面,但似乎偶有例外 除非已执行MobileCategories小工具,否则不可用。另外桌面版的空值为[],手机版的空值为null,注意可能的bug
wgCurRevisionId 页面最新的版本编号,不存在时值为0 历史差异页面不可用
wgIsArticle 是否是内容页面(包含由某个页面的Wikitext源代码解析生成的HTML,可能是历史页面和差异下方的历史页面) 由于差异页面不可同时显示历史页面,此时不可用
wgIsRedirect 最新版本是否是重定向页面 历史差异页面不可用
wgIsProbablyEditable 是否可能可以编辑 历史差异页面不可用
wgNamespaceNumber 名字空间编号 历史差异页面会显示为-1
wgPageContentModel 页面内容模型,特殊页面为“wikitext” 由于历史差异是特殊页面,会错误地显示为“wikitext”
wgPageName 页面名称,空格显示为下划线 历史差异页面不可用
wgRedirectFrom 跳转自重定向时为对应的重定向页,空格显示为下划线 可用
wgRelevantPageName 关联的页面名称,空格显示为下划线 可以用于历史差异页面,此时效果与桌面版一致
wgRelevantArticleId 关联的内容页面编号,不存在时值为0 可以用于历史差异页面,此时效果与桌面版一致
wgRelevantUserName 关联的用户名 贡献页面不可用
wgRelevantPageIsProbablyEditable 关联的页面是否可能可以编辑 可以用于历史差异页面,此时效果与桌面版一致
wgRestrictionEdit 编辑保护,不存在的页面(含受保护的标题)或特殊页面为null,存在的内容页面受全保护时为["sysop"],受半保护时为["autoconfirmed"],未保护为[];不包含名字空间保护和级联保护 历史差异页面不可用,另外未保护的内容页面为["*"]
wgRestrictionMove 移动保护,不存在的页面或特殊页面为null,存在的内容页面受全保护时为["sysop"],受半保护时为["autoconfirmed"],未保护为[];不包含名字空间保护和级联保护 历史差异页面不可用
wgRevisionId 当前显示的页面版本的编号,不存在时值为0。注意和index.php的oldid参数可能不同 由于差异页面不可同时显示历史页面,此时不可用
wgTitle 不含名字空间的页面名称 历史差异页面不可用
wgUserEditCount 当前用户的编辑次数 可用
wgUserGroups 当前用户所属的用户组 可用
wgUserLanguage 当前用户使用的界面语言 可用
wgUserName 当前用户的用户名 可用
wgUserRegistration 当前用户的注册时间,显示为毫秒数;可以使用mw.user.getRegistration()方法替代,该方法会生成Date对象 可用
wgUserVariant 当前用户阅读页面时的内容语言,在不可更改内容语言的页面总是为该用户的默认内容语言 可用
wgDiffOldId 差异页面位于左侧的版本的编号 不可用
wgDiffNewId 差异页面位于右侧的版本的编号 不可用
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:字符串,指定通知的种类。除默认效果外其他可选类型为'success''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号滥用过滤器来移除某个测试账户的自确权限。这个滥用过滤器的使用语法非常简单,请根据样例修改为对应的用户名即可,这里不再赘述。

参考资料