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]
/**
* 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]
/**
* 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]
/**
* 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 14 và Thà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