LLWiki正在建設中,歡迎加入我們!
LLWiki:管理員技術手冊
此頁面內容嚴重缺失,急需您幫忙補充!(點此編輯) 可參考同類條目添加所需內容,並從官方等可靠渠道搜集資料編寫,亦建議附上資料來源。
|
全站CSS
優先加載的CSS
滯後加載的CSS
CSS小工具分類
Widget(小部件)
小部件頁面格式
小部件分類
小部件JS的特殊之處
Gadget(小工具)和全站JS
ResourceLoader和JS模塊
不作為模塊的JS腳本
小工具定義
小工具簡介
小工具分類
MediaWiki核心模塊介紹
本章節介紹LLWiki使用或曾經使用的MediaWiki核心模塊,更完整的列表參見MediaWiki和JSDuck。
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-spacing
或border-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號濫用過濾器來移除某個測試賬戶的自確權限。這個濫用過濾器的使用語法非常簡單,請根據樣例修改為對應的用戶名即可,這裡不再贅述。