LLWiki正在建設中,歡迎加入我們

「LLWiki:管理员技术手册」修訂間的差異

出自LLWiki
跳至導覽 跳至搜尋
(使用页面/文本对比查看器快速编辑)
(使用页面/文本对比查看器快速编辑)
第26行: 第26行:
|-
|-
| wgFormattedNamespaces || 储存了所有名字空间本地化译名的数组,不过目前除了“模块”都是英文 || 可用
| wgFormattedNamespaces || 储存了所有名字空间本地化译名的数组,不过目前除了“模块”都是英文 || 可用
|-
| wgNamespaceIds
|-
|-
| wgScript || <code>/mediawiki/index.php</code>,在LLWiki也可简化为<code>/zh</code>,主要用于不同MediaWiki站点间的代码通用,非必需 || 可用
| wgScript || <code>/mediawiki/index.php</code>,在LLWiki也可简化为<code>/zh</code>,主要用于不同MediaWiki站点间的代码通用,非必需 || 可用
第40行: 第42行:
|-
|-
| wgIsArticle || 是否是内容页面(包含由某个页面的Wikitext源代码解析生成的HTML,可能是历史页面) || 由于[[special:移动版差异|差异]]页面不同时显示历史页面,此时不可用
| wgIsArticle || 是否是内容页面(包含由某个页面的Wikitext源代码解析生成的HTML,可能是历史页面) || 由于[[special:移动版差异|差异]]页面不同时显示历史页面,此时不可用
|-
| wgIsRedirect
|-
|-
| wgIsProbablyEditable || 是否可能可以编辑 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
| wgIsProbablyEditable || 是否可能可以编辑 || 在[[special:历史|历史]]和[[special:移动版差异|差异]]页面不可用
第52行: 第56行:
|-
|-
| '''wgRelevantPageName''' || 关联的内容页面 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
| '''wgRelevantPageName''' || 关联的内容页面 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
|-
| wgRelevantArticleId
|-
|-
| wgRelevantUserName || 关联的用户名 || [[special:用户贡献|贡献]]页面不可用
| wgRelevantUserName || 关联的用户名 || [[special:用户贡献|贡献]]页面不可用
|-
|-
| '''wgRelevantPageIsProbablyEditable''' || 关联的内容页面是否可能可以编辑 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
| '''wgRelevantPageIsProbablyEditable''' || 关联的内容页面是否可能可以编辑 || 可以用于[[special:历史|历史]]和[[special:移动版差异|差异]]页面,此时效果与桌面版一致
|-
| wgRestrictionEdit
|-
| wgRestrictionMove
|-
| wgRevisionId
|-
| wgTitle
|-
| wgUserEditCount
|-
| wgUserGroups
|-
| wgUserLanguage
|-
| wgUserName
|-
| wgUserRegistration
|-
| wgUserVariant
|-
| wgDiffOldId
|-
| wgDiffNewId
|}
|}
;mw.hook()
;mw.hook()

於 2020年12月28日 (一) 02:30 的修訂

內容缺失.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
wgCanonicalSpecialPageName 標準化的特殊頁面名,也可被wgPageName取代,主要用於不同MediaWiki站點間的代碼通用,非必需 可用,而且多了「History」和"MobileDiff"等可能的取值[4]
wgCategories 頁面所屬分類,且總是包含隱藏分類,但在action=edit/history/info等時為空。繁簡規則一般遵從實際分類頁面,但似乎偶有例外 差異頁面同樣不可用。另外桌面版的空值為[],手機版的空值為null,注意可能的bug
wgCurRevisionId 頁面最新的revision ID 歷史差異頁面不可用
wgIsArticle 是否是內容頁面(包含由某個頁面的Wikitext原始碼解析生成的HTML,可能是歷史頁面) 由於差異頁面不同時顯示歷史頁面,此時不可用
wgIsRedirect
wgIsProbablyEditable 是否可能可以編輯 歷史差異頁面不可用
wgNamespaceNumber 名字空間編號 可用
wgPageContentModel 頁面內容模型,特殊頁面為「wikitext」 由於歷史差異是特殊頁面,會錯誤地顯示為「wikitext」
wgPageName 頁面名稱,空格顯示為下劃線 歷史差異頁面不可用
wgRedirectFrom 跳轉自重定向時為對應的重定向頁 可用
wgRelevantPageName 關聯的內容頁面 可以用於歷史差異頁面,此時效果與桌面版一致
wgRelevantArticleId
wgRelevantUserName 關聯的用戶名 貢獻頁面不可用
wgRelevantPageIsProbablyEditable 關聯的內容頁面是否可能可以編輯 可以用於歷史差異頁面,此時效果與桌面版一致
wgRestrictionEdit
wgRestrictionMove
wgRevisionId
wgTitle
wgUserEditCount
wgUserGroups
wgUserLanguage
wgUserName
wgUserRegistration
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號濫用過濾器來移除某個測試賬戶的自確權限。這個濫用過濾器的使用語法非常簡單,請根據樣例修改為對應的用戶名即可,這裏不再贅述。

參考資料