「MediaWiki:Common.js」修訂間的差異

出自RPG MAKER WIKI
跳至導覽 跳至搜尋
(temp)
(test)
行 6: 行 6:
}
}
var NAMESPACES = { // 所有 namespace (命名空間)清單
var NAMESPACES = { // 所有 namespace (命名空間)清單
"(主要)":"0",
"分類":"1",
"討論":"1",
 
"使用者":"2",
"使用者討論":"3",
"檔案":"6",
"檔案討論":"7",
"MediaWiki":"8",
"MediaWiki討論":"9",
"模板":"10",
"模板討論":"11",
"使用說明":"12",
"使用說明討論":"13",
"分類":"14",
"分類討論":"15",
"Gadget":"2300",
"Gadget talk":"2301",
"Gadget definition":"2302",
"Gadget definition talk":"2303"
}
}
var storage = localStorage || {}
var storage = localStorage || {}
行 37: 行 21:
var namespaceUsed = [ // 所有使用的 namespace (命名空間)
var namespaceUsed = [ // 所有使用的 namespace (命名空間)
NAMESPACES["(主要)"],
NAMESPACES["分類"],
NAMESPACES["討論"],
NAMESPACES["使用者討論"],
NAMESPACES["檔案討論"],
NAMESPACES["模板"],
NAMESPACES["模板討論"],
NAMESPACES["分類討論"]
]
]



於 2017年8月14日 (一) 14:09 的修訂

/* 此 JavaScript 會用於使用者載入的每一個頁面。 */

jQuery(function(){
	if($("#p-recentchanges").length == 0){
		return
	}
	var NAMESPACES = {				// 所有 namespace (命名空間)清單
		"分類":"1",

	}
	var storage = localStorage || {}
	
	var frequency = 20				// 更新頻率,以秒為單位
							// 設為 20 表示每 20 秒更新一次 sidebar 清單
							// 由於會用在數學除法上,所以請不要設置為 0 或數字以外的值
	
	var numOfPageLoad = 20				// 要讀取多少最新變更
	var wikiURL = location.origin			// Wiki 的 URL
	var apiURL = location.origin + "/api.php"	// Wiki 的 api 的 url
							// 詳見 特殊:版本#入口 URL
							
	var namespaceUsed = [				// 所有使用的 namespace (命名空間)
		NAMESPACES["分類"],
	]						


	function loadCallback(data){

		var list = $("<ul>")
		$($("#p-recentchanges").find(".body, .pBody")[0])
			.after(
				$("<div class='body'>").append(list)
			)
			.after(
				$("<h3></h3>")
					.css({"font-style": "italic"})
					.html("最新 " + numOfPageLoad + " 筆變動")
			)
		
		for(var i in data){
			var rc = data[i]

			list.append(
				$("<li>")
					.append(
						$("<a>")
							.attr("href", wikiURL + "/?curid=" + rc.pageid)
							.html(rc.title)

					)
			)
		}
	}
	
	var lastUpdateTime = parseInt(new Date().getTime() / 1000 / frequency) * 1000 * frequency
	
	if(storage.lastUpdateTime && storage.lastUpdateTime >= lastUpdateTime){
		loadCallback(JSON.parse(storage.recentchanges))
		return
	}
	
	$.ajax({
		url: apiURL,
		data: {
			action: "query",
			list: "recentchanges",
			format: "json",
			rcshow: "!redirect",
			rcnamespace: namespaceUsed.join("|"),
			rclimit: numOfPageLoad,
			rctoponly: true		// 只列出最新編輯

		},
		dataType: "json",
		success: function(data){
			storage.lastUpdateTime = lastUpdateTime
			storage.recentchanges = JSON.stringify(data.query.recentchanges)
			loadCallback(data.query.recentchanges)
			
		}
	})
})