帮助:开发者文档
考虑到MediaWiki翻译不完全以及部分地区难以丝滑顺畅访问的情况,这里搬运MediaWiki核心及常用模块的文档以及示例代码,原文见此。
为了方便查阅,本文与原文的格式与内容可能有较大差异。
mediaWiki
MediaWiki会在Wiki的所有页面创建一个名为“mediaWiki”的对象,亦可以使用简称“mw”来访问。
为了查阅与编写方便,本教程一般使用“mw”。
输出此对象,JavaScript代码:
console.log(mediaWiki); // console.log(mw)
mw.config
为使JS代码编写更加方便,MediaWiki在对象 mw.config 中提供了一些配置值。
其中大部分以 wg 为前缀。
- For legacy reasons these names are exposed as global JavaScript variables 若
$wgLegacyJavaScriptGlobals
为真,所以需要一个前缀以防变量名冲突。 - A subset of these names correspond to $wg_variable in PHP, but others are unrelated.
- Besides the names in this list, many extensions also set additional JavaScript config variables prefixed with 'wg'.
你可以通过mw.config
来访问这些值。
全站
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
debug
|
布尔型 | (没啥好说的) | MW 1.17+ |
skin
|
字符串 | 显示当前皮肤的内部名称,经典皮肤(自带的皮肤)名称为:"standard"。 | MW 1.7 (monobook 皮肤) MW 1.8+: 所有情况 |
stylepath
|
字符串 | 皮肤根目录的完整链接,包括样式表和配套的脚本。这个链接不包括皮肤的子目录,也不以“/”结尾。 | MW 1.7 (monobook 皮肤) MW 1.8+: 所有情况 |
wgArticlePath
|
字符串 | Local path, starting at the root, to reference articles, containing a "$1" placeholder that may be replaced by a page title to get a valid URL to that page. Given a valid page title title , a valid URL may be constructed using wgArticlePath.replace('$1', title) . See also $wgArticlePath.
|
MW 1.8+ |
wgCaseSensitiveNamespaces
|
数组 | The IDs of the namespaces treated as case-sensitive by MediaWiki. Determined by the values of them $wgCapitalLinks and $wgCapitalLinksOverrides configuration variables.
|
MW 1.18+ (90234) |
wgContentLanguage
|
字符串 | 整个Wiki的默认语言代码。 | MW 1.8+ |
wgContentNamespaces
|
整数数组 | The IDs of the namespaces considered "content namespaces" by MediaWiki. Equivalent to the value of the $wgContentNamespaces configuration variable, 没有加载好的话就是0 。
|
MW 1.23+ (Git: 3d87e3a86bcb39d444ef916129dd48bf80b5bb31) |
wgDBname
|
字符串 | Wiki的数据库名。 | MW 1.13+ |
wgEnableAPI
|
布尔型 | 如果mw的API启用则为true ,反之为false 。
|
MW 1.12+ |
wgEnableWriteAPI
|
布尔型 | 如果mw的写入API启用则为true ,反之为false 。If wgEnableAPI && !wgEnableWriteAPI , only the read operations of the API are enabled.
|
MW 1.12+ |
wgExtensionAssetsPath
|
字符串 | Root path used for extension static assets (e.g. images). Append '/' then the name of the extension to get the root path for a given extension. | MW 1.18+ (82247) |
wgFormattedNamespaces
|
对象 | 一个名字空间ID到翻译过的名字空间的查找表。每一个名字空间都有一个字符串表示的数字作为键映射到名字空间的名字。不包含别名或原名。 | MW 1.16+ |
wgNamespaceIds
|
对象 | 一个名字空间到名字空间ID的查找表。每一个名字空间(包括别名)都有一个名字空间的名字作为键映射到名字空间的ID。不包含原名。所有键的字母均小写,用下划线代替空格。 | MW 1.16+ |
wgScript
|
字符串 | Full path to the main access point script, starting at the root, including the full script name with extension. On WMF wikis, normally "/w/index.php". See also $wgScript. | MW 1.11+ |
wgScriptPath
|
字符串 | wgScript 的路径部分,结尾不是"/"。This is the path to use for direct calls to the php access points such as index.php 或 api.php . See also $wgScriptPath.
|
MW 1.8+ |
wgServer
|
字符串 | 服务器链接,结尾不是"/"。The combination wgServer + wgScriptPath + "/api.php" , for instance, results in a valid URL to the API access point script.
|
MW 1.8+ |
wgSiteName
|
字符串 | 网站名,声明于$wgSitename。 | MW 1.16+ |
wgVariantArticlePath
|
字符串 或 false
|
如果Wiki自定义了语言变量(比如中文或塞尔维亚的Wikipedias),这个值将设为语言变量的根路径(除wgContentLanguage 以外)。这个路径包含了占位符"$1"需要用页面名替换,"$2"需要用语言代码替换(比如"zh-cn")。如果Wiki没有语言变量,这个值将为false 。详见$wgVariantArticlePath。
|
MW 1.13+ |
wgVersion
|
字符串 | MediaWiki软件版本。 | MW 1.12+ |
所有页面
(根据用户/页面不同,这些值会变动。)
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
wgAction
|
字符串 | 当前操作,如正在编辑页面时为"edit",正在浏览页面时为"view",详见[1]。 | MW 1.10+ |
wgArticleId
|
整数 | 页面的内部ID。不存在的页面和特殊页面的此项是0。 | MW 1.8+ |
wgCanonicalNamespace
|
字符串 | 此页面的真实名字空间(未翻译,不是别名)。 | MW 1.8+ |
wgCanonicalSpecialPageName
|
字符串 或 false 或 未定义
|
在特殊页面,显示真实页面名(未翻译,不是别名);否则为未定义(MW 1.15及以下)或false (MW 1.16及以上)。
|
MW 1.9+ |
wgCategories
|
字符串数组 | 当前页面的分类列表。This is essentially a JavaScript version of the category box shown on the page (grey box at bottom of page, in Monobook/Vector). If the category box is not shown on the current page (as is the case when editing/viewing history), wgCategories will be an empty array.
|
MW 1.16+ |
wgCurRevisionId
|
整数 | The top revision ID of the currently viewed page at the time the page was served. Also set on diff and history pages; zero for special pages. | MW 1.9+ |
wgIsArticle
|
布尔型 | true if the content displayed on the page is related to the source of the corresponding article on the wiki. So it is true when viewing a page (regardless of namespace), and also true when viewing a diff that has a rendered revision appended to the bottom of it. It is false for anything else (edit, history, special pages, most generated pages, etc).
|
MW 1.8+ |
wgIsProbablyEditable
|
布尔型 | 如果你可以编辑这个页面的话(基于Title::quickUserCan )则为True 。The 'probably' is necessary for performance reasons. An exact editability check is too costly here, due to cascading protection and hook-based extensions like TitleBlacklist that may be enabled. If this is true, it is likely to be editable. If it is false, it is definitely not editable.
|
(git: 0bbc358951e56fbb3e2e121a02cf213e280ffdc1) |
wgNamespaceNumber
|
整数 | 当前页面的名字空间ID。 | MW 1.8+ |
wgPageContentLanguage
|
字符串 | 当前页面的语言代码(获取:$context->getTitle()->getPageLanguage() )。
|
MW 1.19+ (104483) |
wgPageContentModel
|
字符串 | 标准Wiki页面:'wikitext' ,JavaScript页面:'javascript' ,CSS页面:'css' ,Scribunto(如Lua模块)页面:'Scribunto' 。
|
MW 1.22+ (gerrit:62178) |
wgPageName
|
字符串 | 完整的页面名,包括翻译过的名字空间,如果名字空间有名字(主名字空间(0)没有),空格将被替换为下划线。使用wgTitle 获取没有名字空间的页面名。
|
MW 1.8+ |
wgRedirectedFrom
|
字符串 | 显示重定向自的页面。如果页面不是重定向来的,就没有这个值(不在mw.config 中)。格式与wgPageName 相同。
|
MW 1.19+ (104668) |
wgRelevantPageName
|
字符串 | The full name of the page to which content actions and navigation links (e.g. a skin's tabs) apply. The AJAX watch function uses this to work correctly on special pages such as Special:MovePage and Special:WhatLinksHere. | MW 1.19+ (113737) |
wgRelevantUserName
|
字符串 或 无 | The relevant name of the user to which content actions and some extra navigation links (e.g. link to user rights 或 user contributions) apply. | MW 1.23+ (git: 88773) |
wgRelevantPageIsProbablyEditable
|
布尔型 | 与wgIsProbablyEditable 相似,but applied to the contextually relevant page name from wgRelevantPageName instead of strictly the current page being viewed. For example, when viewing a page "Special:MovePage/Example " this will indicate whether the subject page is editable.
|
MW 1.30+ (git:dbfe9c99) |
wgRestrictionEdit
|
字符串数组 或 无 | 如果页面可以编辑(同时不是特殊页面)同时只有部分用户组用户可以编辑,数组包括了编辑这个页面所需的最低用户组。For semi-protected pages, it'd contain ["autoconfirmed"] ; for fully protected pages ["sysop"] . If there are no explicit restrictions, the value is [] (an array with no elements).
这个数组只包含明确的保护。名字空间级的保护(比如MediaWiki名字空间,见 $wgNamespaceProtection), 级联保护,或TitleBlacklist扩展的"moveonly"属性带来的"protections",不会显示在这个数组里;这种页面里,数组始终为 如果页面不存在,那么这个变量也不存在。 |
MW 1.14+ |
wgRestrictionMove
|
字符串数组 | 如果页面可以移动(同时不是特殊页面)同时只有部分用户组用户可以移动,数组包括了移动这个页面所需的最低用户组。For semi-moveprotected pages, it'd contain ["autoconfirmed"] ; for fully moveprotected pages ["sysop"] . If there are no explicit restrictions, the value is [] (an array with no elements).
这个数组只包含明确的保护。名字空间级的保护(比如MediaWiki名字空间,见 $wgNamespaceProtection), 级联保护,或TitleBlacklist扩展的"moveonly"属性带来的"protections",不会显示在这个数组里;这种页面里,数组始终为 |
MW 1.14+ |
wgRevisionId
|
整数 | 当前浏览页面的版本的版本ID, 或版本对比页面右侧页面的版本ID(当diffonly=yes时为0, 这是一个bug: T231744)。版本对比页面有,特殊页面和历史页面为 0,其他地方不可用。 | MW 1.22+ (git:7fa7b71eb3a5dd24e75865162e4c06a4a6012524) |
wgSearchType
|
字符串 或 无 | The name of the search backend used to execute search requests. | MW 1.23+ (git: 118655) |
wgTitle
|
字符串 | 不带名字空间的页面标题。可能包含空格,同时不包含下划线。想要获取包含名字空间的页面名,请使用wgPageName 。
|
MW 1.8+ |
这些值来自访问页面的用户:
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
wgUserEditCount
|
整数 | 当前用户的编辑数(未登录则为null )。
|
MW 1.21+ |
wgUserGroups
|
字符串数组 | 列出当前用户所属用户组的列表(未登录则为null )。用户组以内部名字标识,比如"sysop"和"autoconfirmed"。默认用户组名字是"*"。
|
MW 1.10+ |
wgUserId
|
整数 | 当前用户的数字ID(未登录则为null )。
|
MW 1.21+ |
wgUserLanguage
|
字符串 | 用户的语言代码, 在特殊:参数设置中设置(可以被URL中的uselang= 参数覆盖)。
|
MW 1.8+ |
wgUserName
|
字符串 | 当前用户的用户名(未登录则为null )(不是用户IP地址,与服务端PHP的 $wgUser->getName() 不同)。
|
MW 1.8+ |
wgUserRegistration
|
整数 | 当前用户的注册时间,显示为 1970-01-01 00:00:00 UTC 以来的毫秒数。(未登录则为null )。
|
MW 1.21+ |
部分页面
部分附加的变量只在特定名字空间、Wiki设置或用户设置时出现。
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
主页 | |||
wgIsMainPage
|
布尔型 | 如果当前页面是主页则为true 。否则不存在这项(null )。
|
MW 1.18+ |
如果页面语言是个变量 | |||
wgUserVariant
|
字符串 | 如果Wiki有语言变量,则为用户的配置。如果没有语言变量,则没有这一项,代码说明:mw.config.exists( 'wgUserVariant' ); // false mw.config.get( 'wgUserVariant' ); // null .
|
MW 1.16+ |
保存编辑之后 | |||
wgPostEdit
|
字符串 | 如果用户刚刚保存了这个页面,则为"saved"; 如果用户刚刚创建了这个页面,则为"created"; 如果用户刚刚从历史记录中恢复了(编辑一个旧版本后保存)这个页面,则为"restored"。 其他情况下为 null 。请注意:
|
MW 1.21+ (gerrit:50480) |
页面版本比对时 | |||
wgDiffOldId
|
整数 | "旧"版本的版本ID。仅在页面版本比对时有。 | MW 1.30+ (git: a469795efc5bc1c585c9f84ee289ee099833661d) |
wgDiffNewId
|
整数 | "新"版本的版本ID。仅在页面版本比对时有。 | MW 1.30+ (git: a469795efc5bc1c585c9f84ee289ee099833661d) |
mw.html
mw.html.escape
HTML转义。
mw.html.escape( '< > \' & "' ); // Returns: < > ' & "
mw.msg
mw.loader
mw.loader.addSource
mw.user
mw.Api
- 需要实例化才能使用。
- 大部分需要导入额外的JS才能使用。
plugins
- 需要导入对应的JS才能正常使用。
- 混入的是mw.Api。
- .category
- 文件
- getCategories( title : mw.Title|string ) : jQuery.Promise
- 获取页面的分类列表
- 返回 jQuery.Promise
- done : Function : boolean|mw.Title[]
- 若没有分类,返回false
- getCategoriesByPrefix( prefix : string ) : jQuery.Promise
- 获取以此为前缀的分类
- 返回 jQuery.Promise
- done : Function : string[]
- 返回获取到的分类名
- isCategory( title : string ) : jQuery.Promise
- 检查某个分类是否存在
- 返回 jQuery.Promise
- done : Function : boolean
- 存在返回true,否则返回false
- .edit
- 文件
- create( title : mw.Title|string , params : Object , content : string ) : jQuery.Promise
- params : {summary : string}
- summary: 描述
- 返回 jQuery.Promise
- done : Function : void
- params : {summary : string}
- edit( title : mw.Title|string , transform : Function ) : jQuery.Promise
- getEditToken( ) : jQuery.Promise
- newSection( title, header, message, [additionalParams] ) : jQuery.Promise
- postWithEditToken( params, [ajaxOptions] ) : jQuery.Promise
- .login
- 文件
- login( username, password ) : jQuery.Promise
- .messages
- 文件
- getMessages( messages, [options] ) : jQuery.Promise
- loadMessages( messages, [options] ) : jQuery.Promise
- loadMessagesIfMissing( messages, [options] ) : jQuery.Promise
- .options
- 文件
- saveOption( name, value ) : jQuery.Promise
- saveOptions( options ) : jQuery.Promise
- .parse
- 文件
- parse( content, additionalParams ) : jQuery.Promise
- .rollback
- 文件
- rollback( page, user, [params] ) : jQuery.Promise
- .upload
- 文件
- chunkedUpload( file, data, [chunkSize], [chunkRetries] ) : jQuery.Promise
- chunkedUploadToStash( file, [data], [chunkSize], [chunkRetries] ) : jQuery.Promise
- processIframeResult( iframe ) : Object
- upload( file, data ) : jQuery.Promise
- uploadFromStash( filekey, data ) : jQuery.Promise
- uploadToStash( file, [data] ) : jQuery.Promise
- .user
- 文件
- assertCurrentUser( query ) : Object
- getUserInfo( ) : jQuery.Promise
- .watch
- 文件
- unwatch( pages, [addParams] ) : jQuery.Promise
- watch( pages, [addParams] ) : jQuery.Promise
mw.Debug
mw.Feedback
mw.util
mw的其他子项
一些不常用的或较为简单的东西。
mw.hook
- .add
- .fire
- .remove
自己看源代码(原文如此)。
mw.log
console.log()的替代品,debug模式下启用。
mw.map
封装过的查找表,需要实例化才能用。
- .values
- 一个包含所有变量的对象。如果初始化的时候'global'设为true,返回的其实是window对象。
- .exists(key)
- 如果存在则返回true,反之返回false。
- .get(key, fallback)
- 返回按键获取的值,没找到的话会返回第二个参数(如果第二个参数也没有,则返回null)。
- .set(key, value)
- 创建或修改一个或多个键值。
mw.ui
- MCBBSWiki没这个。
- 在MediaWiki1.29后mw.ui完全废弃了,改为使用#OOui。
mw.Title
结构页面标题。
var t = new mw.Title( '文件:盐.png' ); // 实例化 t.getMain(); // "盐.png" t.getNamespaceId(); // 6 t.getNamespacePrefix(); // "文件:"
mw.Uri
- MCBBSWiki似乎没这个。
new mw.Uri(); // 当前URI new mw.Uri(URL); // 指定URL的URI
mw.notify
mw.notify( '这是一个通知' ); // 发送文字通知 mw.notify( mw.message( 'some-message' ) ); // 用i18n消息发送通知 mw.notify( $( '<span>这是一个<u>HTML</u>通知</span>' ) ); // 用jQuery实例发送HTML通知(DOM节点也行) mw.notify( '通知', { title: '标题' } ); // 给通知加一个标题 mw.notify( '通知', { autoHide: false } ); // 通知不会自行隐藏 mw.notify( '通知', { tag: 'asd' } ); // 给通知加一个标签 mw.notify( '通知:另一个', { tag: 'asd' } ); // 这个通知将会覆盖前一个相同标签的通知
jQuery与插件
OOui
使用这些特性之前,需要导入OOui核心。
- OO.EmitterList
- OO.EventEmitter
- OO.Factory
- OO.Registry
- OO.SortedEmitterList
OO.ui
需要导入Windows扩展。