Wiki - KEONHACAI COPA

Thành viên:Hide on Rosé/Đề xuất kỹ thuật/common.js của viwiki

Đề xuất này được soạn từ ngày 7 tháng 4 năm 2023.

Nhận thấy MediaWiki:Common.js của Wikipedia tiếng Việt đang tải nhiều thứ không cần thiết hoặc đã lỗi thời, tôi xin đưa ra một số đề xuất cắt giảm MediaWiki:Common.js, giúp tối ưu hóa hiệu năng khi người dùng truy cập trang web.

Thông báo chỗ thử[sửa | sửa mã nguồn]

Đoạn #L-428 - #L-455:

/**
 * Gắn bảng giới thiệu vào đầu [[Trợ giúp:Chỗ thử]].
 */
mw.hook("wikipage.content").add(function () {
	if (mw.config.get("wgPageName") != "Trợ_giúp:Chỗ_thử" ||
		mw.config.get("wgAction") != "view" || $("#sandbox-intro").length) {
		return;
	}
	var purgeLink = mw.html.element("a", {
		href: mw.util.getUrl("Trợ_giúp:Chỗ_thử", {
			action: "edit",
			oldid: "15257082",
			summary: "Tẩy trống chỗ thử",
			minor: "yes"
		})
	}, "xóa định kỳ");
	var editText = mw.html.element("b", {
		"style": "white-space: nowrap;"
	}, $("#ca-ve-edit").text());
	var intro = $(mw.html.element("div", {
		"class": "plainlinks toccolours",
		id: "sandbox-intro"
	}, new mw.html.Raw("Đây là trang bạn có thể thử thoải mái cách soạn bài " +
		"trong Wikipedia. Nội dung ở đây sẽ bị " + purgeLink +
		". Để bắt đầu sửa đổi trang này, hãy nhấn chuột vào thẻ " +
		editText + " ở trên.")));
	$("#mw-content-text").wrapInner("<div class='sandbox'></div>").prepend(intro);
});
Đề xuất
Xóa và thay bằng thông báo sửa đổi và {{/đầu chỗ thử}}.
Ảnh hưởng
Thay đổi này ảnh hưởng đến bot tẩy trống chỗ thử tự động.

Biểu tượng đầu trang[sửa | sửa mã nguồn]

Đoạn #L-386 - #L-394:

/**
 * Biểu tượng trên cùng góc phải.
 *
 * @source: //www.mediawiki.org/wiki/Snippets/Top_icons
 * @rev: 2
 */
mw.hook("wikipage.content").add(function () {
	$( '.right-uppermost' ).prependTo( '#firstHeading' ).show();
});
Đề xuất
Xóa vì nó đã lỗi thời. Biểu tượng đầu trang chỉ dùng cho MediaWiki 1.25 về trước (phiên bản hiện tại là {{CURRENTVERSION}} 1.42.0-wmf.22 (bd76262)); tính năng thay thế là chỉ báo trạng thái trang.[1]

Thông báo sửa đổi cho TSNDS[sửa | sửa mã nguồn]

Đoạn #L-295 - #L-323:

/**
 * Thông báo sửa đổi ma thuật ****************************************************
 *
 * Mô tả: Thêm thông báo sửa đổi cho trang định hướng và TSNDS.
 * Bảo trì: [[:en:User:RockMFR]]
 */
function addEditIntro( name ) {
	$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
		el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
	} );
}

if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
	$( function () {
		if ( document.getElementById( 'disambigbox' ) ) {
			addEditIntro( 'Bản_mẫu:Disambig_editintro' );
		}
	} );

	$( function () {
		var cats = mw.config.get('wgCategories');
		if ( !cats ) {
			return;
		}
		if ( $.inArray( 'Nhân vật còn sống', cats ) !== -1 || $.inArray( 'Nhân vật có thể còn sống', cats ) !== -1 ) {
			addEditIntro( 'Bản_mẫu:BLP_editintro' );
		}
	} );
}
Đề xuất
Xóa và thay bằng một mô đun Lua.[2]

Cách hoạt động và triển khai[sửa | sửa mã nguồn]

Bước 1: Tạo mô đun Mô đun:Disambiguation

local p = {}
local mRedirect = require('Mô đun:Redirect')
local disambiguationTemplates = mw.loadData('Mô đun:Disambiguation/templates')

local function capitalize(s)
	-- Hàm này chỉ hoạt động đối với chuỗi ký tự ASCII. Nếu wiki của bạn có
	-- bản mẫu định hướng sử dụng chuỗi Unicode, hãy sử dụng dòng được comment.
	-- viwiki chỉ sử dụng thao tác chuỗi ASCII ở đây để cải thiện hiệu suất
	return s:sub(1, 1):upper() .. s:sub(2, -1)
	-- return mw.ustring.upper(mw.ustring.sub(1, 1)) .. mw.ustring.sub(2, -1)
end

local function isDisambiguationTemplate(template)
	return disambiguationTemplates[capitalize(template)] or false
end

p.isDisambiguation = function(content)
	-- trả về false nếu không có nội dung
	if content == nil then
		return false
	end

	-- trang đổi hướng không phải là trang định hướng
	if mRedirect.getTargetFromText(content) ~= nil then
		return false
	end

	-- kiểm tra bản mẫu định hướng trong nội dung trang
	local templateNames = {}
	for template in string.gmatch(content, "{{%s*([^|}]-)%s*[|}]") do
		if isDisambiguationTemplate(template) then
			return true
		end
	end

	-- kiểm tra từ ma thuật
	if string.find(content, "__DISAMBIG__", 1, true) ~= nil then
		return true
	end

	return false
end

p._isDisambiguationPage = function(page)
	-- Kiểm tra xem tên trang có chứa "(định hướng)" hay không
	if string.find(page, "(định hướng)",0,true) ~= nil then
		return true;
	end
	-- Kiểm tra xem nội dung trang có bản mẫu định hướng hay không
	local title = mw.title.new(page)
	if not title then return false end
	local content = title:getContent()
	return p.isDisambiguation(content)
end

-- Entry points for templates
p.isDisambiguationPage = function(frame)
	local title = frame.args[1]
	return p._isDisambiguationPage(title) and "yes" or ""
end

return p

Module:Disambiguation/templates

-- Trang này chứa một bảng gồm tất cả tên bản mẫu định hướng và các trang
-- đổi hướng đến nó. Chữ cái đầu tiên của bản mẫu được viết hoa, và tên được
-- lược bỏ tiền tố Bản mẫu: Bản mẫu được xếp nhóm từ bản mẫu chính đến tên
-- đổi hướng của nó.

return {
	["Trang định hướng"] = true,
    ["Định hướng"] = true,
    ["Disambig"] = true,
    ["TLAdisambig"] = true,
    ["Dab"] = true,
    ["Dis"] = true,
    ["Disamb"] = true,
    ["Disambiguation"] = true,
    ["Tđh"] = true,
    
	["Trang định hướng bản mẫu"] = true,
	
    ["Trang định hướng địa danh"] = true,
	["Place name disambiguation"] = true,
    ["Geodis"] = true,
    
    ["Trang định hướng nhân danh"] = true,
    ["Hndis"] = true,
    ["Trang định hướng tên người"] = true,
    ["Human name disambiguation"] = true,
    
	["Trang định hướng tên khoa học"] = true,
    ["LatinNameDisambig"] = true,
    ["SpeciesLatinNameDisambig"] = true,
    ["Species Latin name disambiguation"] = true,
    
	["Trang định hướng toán học"] = true,
    ["Mathdab"] = true,
    ["Mathematical disambiguation"] = true,
    ["Định hướng toán học"] = true,
}

Bước 2: Tạo mô đun Lua: Mô đun:Mainspace editnotice

-- Được nhập về từ [[:en:Special:Permalink/1205469555|en:Module:Mainspace editnotice]]
local Arguments = require('Module:Arguments')
local Disambiguation = require('Module:Disambiguation')

local p = {}

p.main = function(frame)
	local args = Arguments.getArgs(frame)
	return p.core(args.page and mw.title.new(args.page) or mw.title.getCurrentTitle(), frame)
end

-- Bắt đầu lọc trang để đặt thông báo
local notices = {
	-- TSNDS
	blp_notice = function(page)
		local content = page:getContent()
		-- Nếu trang có chứa [[Thể loại:Nhân vật còn sống]] hoặc [[Thể loại:Nhân vật có thể còn sống]],
        -- thì coi đó là bài viết về người còn sống, kích hoạt thông báo sửa đổi.
		local living = "%[%[%s*[Tt]hể[ _][Ll]oại:%s*[Nn]hân[ _]vật[ _]còn[ _]sống%s*%]%]"
		local possiblyLiving = "%[%[%s*[Tt]hể[ _][Ll]oại:%s*[N]hân[ _]vật[ _]có[ _]thể[ _]còn[ _]sống%s*%]%]"

		if content and (content:find(living) or content:find(possiblyLiving)) then
			return "BLP editintro" -- Sẽ đổi tên bản mẫu này nếu được triển khai để nó đúng chức năng
		end
	end,
	
	disambig_notice = function(page, ctx)
		if ctx.isDisambigPage then
			return "Disambig editintro"
		end
	end,
}

p.core = function(page, frame)
	-- Context object to store values that are expensive to compute and required
	-- in multiple places
	local context = {
		isDisambigPage = Disambiguation._isDisambiguationPage(page.fullText)
	}

	local text = ''
	for _, getNotice in pairs(notices) do
		local template = getNotice(page, context)
		text = text .. (template and frame:expandTemplate{ title = template } or '')
	end
	return text
end

return p

Ví dụ: Truy cập hai trang Thành viên:Hide on Rosé/Nháp 14Thành viên:Hide on Rosé/Nháp 13 và nhấn nút sửa đổi. Thử bằng cả hai trình soạn thảo

Tham khảo[sửa | sửa mã nguồn]

Wiki - Keonhacai copa chuyên cung cấp kiến thức thể thao, keonhacai tỷ lệ kèo, bóng đá, khoa học, kiến thức hằng ngày được chúng tôi cập nhật mỗi ngày mà bạn có thể tìm kiếm tại đây có nguồn bài viết: https://vi.wikipedia.org/wiki/Th%C3%A0nh_vi%C3%AAn:Hide_on_Ros%C3%A9/%C4%90%E1%BB%81_xu%E1%BA%A5t_k%E1%BB%B9_thu%E1%BA%ADt/common.js_c%E1%BB%A7a_viwiki