跳轉到內容

MediaWiki 開發者手冊/新增 JavaScript/預定義變數

來自華夏公益教科書,開放書籍,開放世界

URL 建構函式和伺服器資訊

[編輯 | 編輯原始碼]
var wgScript = "/w/index.php";
var wgArticlePath = "/wiki/$1":
var wgServer = "//wikibook.tw";
var wgCookiePrefix = "enwikibooks";

使用 wgServerwgScript,您可以構建一個有效的維基 URL。這對於差異和其他操作連結非常有用。

要轉到維基媒體維基上的頁面,您知道 http://lang.family.org/wiki/article 會將您帶到您想要去的地方,但並非所有維基都具有 短 URL - 在這種情況下,使用 wgArticlePath 來了解如何構建文章路徑,或者直接使用 wgServerwgScript

變數 wgArticlePath 可以透過將 $1 替換為頁面標題來使用:wgArticlePath.replace(/$1/,"Main Page")

頁面資訊

[編輯 | 編輯原始碼]
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "MediaWiki_Developer\'s_Handbook/Add_JavaScript";
var wgTitle = "MediaWiki Developer\'s Handbook/Add JavaScript";
var wgAction = "view";
var wgIsArticle = true;
var wgCanonicalNamespace = "Special";
var wgCanonicalSpecialPageName = "Specialpages";
var wgNamespaceNumber = -1;
var wgPageName = "Special:SpecialPages";
var wgTitle = "SpecialPages";

規範名稱空間不會因本地化而改變。例如,在 kmwiki 上,他們的元資料或專案名稱空間具有 wgCanonicalNamespace == "Project",而在 km:ជំនួយ:Editing 上,wgCanonicalNamespace == "Help"

同樣,每個名稱空間都有一個數字,從主名稱空間的零開始。這些數字是 可定製的

這對於使指令碼可移植非常有用 - 您不必擔心瞭解名稱空間的本地化名稱 - 只需使用規範名稱或數字即可。

由於此頁面位於主名稱空間中,wgPageName == wgTitle,但在 華夏公益教科書:關於 上,情況並非如此。

var wgPageName = "Help:About";
var wgTitle = "About";

wgTitle 從不包含名稱空間字首,而 wgPageName 包含。還要注意,wgPageName 將空格替換為下劃線。

wgAction 是以下之一:

  • view
  • submit(點選儲存頁面顯示預覽顯示更改後)
  • history
  • edit
  • delete
  • protect
  • purge(在進行 ?action=purge 以清除伺服器快取,強制重新渲染頁面時)

這揭示了使用者在當前頁面上的操作。請注意:對於使用者而言,在許多情況下,view、submit 和 purge 可能沒有區別。在某些情況下,您可能希望您的指令碼在所有這些情況下都執行。

wgAction 通常用於在不需要時避免執行整個指令碼。如果您的指令碼更改了頁面歷史記錄表單,那麼您可以執行以下操作:

if ( wgAction == 'history' ) {
	addOnloadHook( changeHistoryForm() );
}
function changeHistoryForm() {
	...
}

wgIsArticle 告訴您頁面是文章還是 特殊頁面

特殊頁面

[編輯 | 編輯原始碼]
var wgCanonicalNamespace = "Special";
var wgCanonicalSpecialPageName = "Specialpages";
var wgNamespaceNumber = -1;
var wgPageName = "Special:SpecialPages";
var wgTitle = "SpecialPages";

對於 特殊頁面,規範名稱空間為 "Special",而 wgCanonicalSpecialPageName 是特殊頁面的英文非 駝峰式 名稱。同樣,規範形式不會因本地化而改變,因此最好使用它。此外,所有特殊頁面都具有名稱空間編號 -1。

使用者資訊

[編輯 | 編輯原始碼]
var wgUserName = "Mike.lifeguard";
var wgUserGroups = ["bureaucrat", "checkuser", "editor", "sysop", "*", "user", "autoconfirmed"];
var wgGlobalGroups = ["Global_rollback", "steward"];

使用者的使用者名稱設定為 wgUserName,他們的本地和全域性組位於陣列中。請注意,全域性組 全域性回滾 有一個下劃線,而不是空格。

這在指令碼的一部分需要使用者屬於特定使用者組(通常是 sysop)時非常有用。

function userIsInGroup( group ) {
	// are they in a given local group?
	if ( wgUserGroups ) {
		if ( !group || group.length == 0 ) {
			group = '*';
		}
		for(var i in wgUserGroups)
			if (wgUserGroups[i]==group) return true;
	}
	return false;
}
if ( userIsInGroup( 'sysop' ) ) {
	...
}
華夏公益教科書