Khác biệt giữa các bản “Mô đun:BD”
(Không hiển thị 102 phiên bản của 2 người dùng ở giữa) | |||
Dòng 37: | Dòng 37: | ||
local bktt36 = mw.loadData("Mô đun:BD/bktt36") | local bktt36 = mw.loadData("Mô đun:BD/bktt36") | ||
local TableTools = require("Mô đun:TableTools") | local TableTools = require("Mô đun:TableTools") | ||
+ | local color="#00af32"; | ||
local p = {}; | local p = {}; | ||
− | -- Hàm hiển thị tiến độ bình duyệt, p là phần trăm hoàn thành | + | -- Hàm hiển thị tiến độ bình duyệt, p là phần trăm hoàn thành, c là màu |
− | p.progress = function( p ) | + | p.progress = function( p , c, pt) |
− | local str = "<div style='width:70%; margin:auto; text-align:center;'><p><span style='font-size: 120%;'><b>"..p.."%</b> </span>hoàn thành</p><p style='overflow:hidden;background:#efefef;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:10px'><span style='width:"..p.."%; height: 15px; background: | + | local str = "<div style='width:70%; margin:auto; text-align:center;'><p>Mục từ '''"..pt.."''' <span style='font-size: 120%;'><b>"..p.."%</b> </span>hoàn thành</p><p style='overflow:hidden;background:#efefef;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:10px'><span style='width:"..p.."%; height: 15px; background:"..c..";float:left;border-radius:10px'> </span><span style='width:"..(100-tonumber(p)).."%; height:15px; float:left;'> </span></p></div>" |
return str | return str | ||
end | end | ||
Dòng 128: | Dòng 129: | ||
-- Hàm xác định vị trí kết thúc 1 câu, bắt đầu từ pos | -- Hàm xác định vị trí kết thúc 1 câu, bắt đầu từ pos | ||
+ | -- Tránh các mẫu viết tắt tr. H. B. b.y. ... hoặc nguyên câu văn nằm trong <ref></ref> | ||
p.ket = function( content, pos ) | p.ket = function( content, pos ) | ||
Dòng 140: | Dòng 142: | ||
if not(e2) then e2 = math.huge end | if not(e2) then e2 = math.huge end | ||
if not(e3) then e3 = math.huge end | if not(e3) then e3 = math.huge end | ||
− | + | ||
− | + | local e = math.min(e1,e2,e3) | |
+ | |||
+ | local x = content:find("</ref>",e,true) | ||
+ | if not(x) then return e end | ||
+ | |||
+ | local y = content:find("<ref",e,true) | ||
+ | if not(y) then y = math.huge end | ||
+ | |||
+ | if y<x then return e else return p.ket(content,e+2) end | ||
end | end | ||
Dòng 148: | Dòng 158: | ||
p.bd = function( frame ) | p.bd = function( frame ) | ||
− | local sign = "\n''' | + | local sign = "\n<span style='color:red;'>'''Chưa bình duyệt xong hoặc chưa đạt'''</span>.\n" |
-- lấy tham số do người dùng đưa vào | -- lấy tham số do người dùng đưa vào | ||
local args = {} | local args = {} | ||
− | for k, v in pairs(frame:getParent().args) do | + | for k, v in pairs(frame.args) do -- trước hết lấy tham số từ {{#invoke:BD|bd| ... |
+ | args[k] = v | ||
+ | end | ||
+ | for k, v in pairs(frame:getParent().args) do -- sau đó lấy tham số từ {{bình duyệt| ... | ||
args[k] = v | args[k] = v | ||
end | end | ||
Dòng 164: | Dòng 177: | ||
end | end | ||
− | local str = " | + | local str = "Những người [[BKTT:Tiêu_chuẩn_mục_từ#Quy_trình_bình_duyệt|bình duyệt]] (ký tên bên dưới đây hoặc ghi trong [https://bktt.vn/index.php?title=Talk:"..(pt:gsub(" ","_")).."&action=history lịch sử bình duyệt]) xác nhận các thông tin sau cho phiên bản truy cập lúc "..(os.date("!UTC %Y-%m-%d %H:%M:%S")).." của mục từ '"..pt.."'\n===Chủ đề mục từ===\n" |
if p.inBKTT(tp) then | if p.inBKTT(tp) then | ||
− | str = str.."Chủ đề '"..tp.."' nằm trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam | + | str = str.."Chủ đề '"..tp.."' nằm trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam, do vậy tự động thỏa mãn các yêu cầu về độ nổi bật và độ tách biệt." |
if not(pt==tp) then | if not(pt==tp) then | ||
str = str.." Xem xét di chuyển mục từ về tên '"..tp.."'\n" | str = str.." Xem xét di chuyển mục từ về tên '"..tp.."'\n" | ||
Dòng 174: | Dòng 187: | ||
end | end | ||
else | else | ||
− | str = str.."<span style='color:orange;'> | + | str = str.."'"..tp.."' <span style='color:orange;'>không</span> trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam. ''Có thể tìm các tên gọi tương đương về chủ đề và dùng {{bình duyệt<b>|chủ đề=[tên tương đương]</b>}} để kiểm tra lại xem tên tương đương có nằm trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam không.'' Nếu không được thì xét các đánh giá dưới.\n" |
str = str.."* Độ nổi bật: " | str = str.."* Độ nổi bật: " | ||
if args['nổi 1'] and args['nổi 2'] then | if args['nổi 1'] and args['nổi 2'] then | ||
− | str = str.." | + | str = str.."✅ có ít nhất 2 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 1: "..args['nổi 1'].."\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 2: "..args['nổi 2'].."\n" |
elseif args['nổi 1'] then | elseif args['nổi 1'] then | ||
− | str = str.."<span style='color:red;'>Cần bổ sung nguồn xác định độ nổi bật.</span> Xác nhận 1 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 1: "..args['nổi 1'].."\nTuy nhiên cần bổ sung thêm nguồn nữa.\n" | + | str = str.."''<span style='color:red;'>Cần bổ sung nguồn xác định độ nổi bật.</span> Xác nhận 1 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 1: "..args['nổi 1'].."\nTuy nhiên cần bổ sung thêm nguồn nữa.''\n" |
− | return p.progress( | + | return p.progress(2,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ nổi bật thì mới bình duyệt tiếp |
elseif args['nổi 2'] then | elseif args['nổi 2'] then | ||
− | str = str.."<span style='color:red;'>Cần bổ sung nguồn xác định độ nổi bật.</span> Xác nhận 1 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 2: "..args['nổi 2'].."\nTuy nhiên cần bổ sung thêm nguồn nữa.\n" | + | str = str.."''<span style='color:red;'>Cần bổ sung nguồn xác định độ nổi bật.</span> Xác nhận 1 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 2: "..args['nổi 2'].."\nTuy nhiên cần bổ sung thêm nguồn nữa.''\n" |
− | return p.progress( | + | return p.progress(2,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ nổi bật thì mới bình duyệt tiếp |
else | else | ||
− | str = str.."<span style='color:red;'>Cần bổ sung nguồn xác định độ nổi bật.</span> Hãy dùng {{bình duyệt|nổi 1=[mã ISBN, DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]|nổi 2=[mã ISBN hoặc DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]}}, với 2 mã số chỉ đến 2 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."'.\n" | + | str = str.."''<span style='color:red;'>Cần bổ sung 2 nguồn xác định độ nổi bật.</span> Hãy dùng {{bình duyệt<b>|nổi 1=[mã ISBN, DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]|nổi 2=[mã ISBN hoặc DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]</b>}}, với 2 mã số chỉ đến 2 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."'.''\n" |
− | return p.progress(0)..str..sign -- dừng ở đây, cần giải quyết xong độ nổi bật thì mới bình duyệt tiếp | + | return p.progress(0,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ nổi bật thì mới bình duyệt tiếp |
end | end | ||
str = str.."* Độ tách biệt: " | str = str.."* Độ tách biệt: " | ||
if args['tách']=='không trùng' then | if args['tách']=='không trùng' then | ||
− | str = str.." | + | str = str.."✅ Đã tìm trong BKTT.vn và không tìm thấy được mục từ nào có ý nghĩa gần với chủ đề '"..tp.."'\n" |
elseif args['tách'] and args['tách vì'] then | elseif args['tách'] and args['tách vì'] then | ||
− | str = str.." | + | str = str.."✅ Đã tìm trong BKTT.vn và chỉ tìm thấy được mục từ nêu nội dung có ý nghĩa gần nhất với chủ đề '"..tp.."' là [["..args['tách'].."]]. Tuy nhiên [["..args['tách'].."]] tách biệt với '"..tp.."' vì "..args['tách vì']..".\n" |
elseif args['tách'] then | elseif args['tách'] then | ||
− | str = str.." Xác nhận đã tìm kiếm trong BKTT.vn và tìm thấy được mục từ nêu nội dung có ý nghĩa gần nhất với chủ đề '"..tp.."' là [["..args['tách'].."]]. <span style='color:red;'>Cần bổ sung lý do:</span> tại sao [["..args['tách'].."]] lại tách biệt với '"..tp.."', bằng cách bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '|tách vì=[lý do tại sao mục từ có nội dung gần nhất vẫn tách biệt với '"..tp.."']'.\n" | + | str = str.." Xác nhận đã tìm kiếm trong BKTT.vn và tìm thấy được mục từ nêu nội dung có ý nghĩa gần nhất với chủ đề '"..tp.."' là [["..args['tách'].."]]. ''<span style='color:red;'>Cần bổ sung lý do:</span> tại sao [["..args['tách'].."]] lại tách biệt với '"..tp.."', bằng cách bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tách vì=[lý do tại sao mục từ có nội dung gần nhất vẫn tách biệt với '"..tp.."']</b>'.''\n" |
− | return p.progress( | + | return p.progress(5,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ tách biệt thì mới bình duyệt tiếp |
else | else | ||
− | str = str.."<span style='color:red;'>Cần tìm kiếm trong BKTT.vn xem đã có những mục từ nào nêu nội dung có ý nghĩa gần với chủ đề '"..tp.."' chưa.</span> Nếu đã tìm và không thấy, thì dùng bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '|tách = không trùng'. Nếu đã tìm và đã thấy có các mục từ nêu nội dung có ý nghĩa gần với chủ đề '"..tp.."', thì chọn lấy mục từ có nội dung gần với chủ đề '"..tp.."' nhất và bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '|tách =[tên mục từ có nội dung gần nhất]|tách vì=[lý do tại sao mục từ có nội dung gần nhất vẫn tách biệt với '"..tp.."']'.\n" | + | str = str.."''<span style='color:red;'>Cần tìm kiếm trong BKTT.vn xem đã có những mục từ nào nêu nội dung có ý nghĩa gần với chủ đề '"..tp.."' chưa.</span> Nếu đã tìm và không thấy, thì dùng bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tách = không trùng</b>'. Nếu đã tìm và đã thấy có các mục từ nêu nội dung có ý nghĩa gần với chủ đề '"..tp.."', thì chọn lấy mục từ có nội dung gần với chủ đề '"..tp.."' nhất và bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tách =[tên mục từ có nội dung gần nhất]|tách vì=[lý do tại sao mục từ có nội dung gần nhất vẫn tách biệt với '"..tp.."']</b>'.''\n" |
− | return p.progress( | + | return p.progress(5,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ tách biệt thì mới bình duyệt tiếp |
end | end | ||
end | end | ||
− | str = str.."\n | + | str = str.."\n===Tên & bản quyền===\n" |
str = str.."* Tên mục từ: " | str = str.."* Tên mục từ: " | ||
if p.inBKTT(pt) then | if p.inBKTT(pt) then | ||
− | str = str.." | + | str = str.."✅ Tên '"..pt.."' nằm trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam. Nếu có đề xuất thay đổi tên này, xin hãy viết ở mục Đề xuất bên dưới.\n" |
elseif args['tên 1'] then | elseif args['tên 1'] then | ||
− | str = str.." | + | str = str.."✅ 1 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']] ủng hộ và sử dụng tên mục từ '"..pt.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 1: "..args['tên 1'].."\n" |
else | else | ||
− | str = str.."<span style='color:red;'>Cần nêu nguồn uy tín dùng tên mục từ được đề xuất.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '|tên 1 =[mã ISBN hoặc DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]', với mã số chỉ đến nguồn [[BKTT:Nguồn uy tín|'''uy tín''']] ủng hộ và sử dụng tên mục từ được đề xuất. Trường hợp cần bổ sung lập luận và phản biện chuyên môn cho lựa chọn của tên mục từ, xin hãy viết ở mục Đề xuất bên dưới.\n" | + | str = str.."''<span style='color:red;'>Cần nêu nguồn uy tín dùng tên mục từ được đề xuất.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tên 1 =[mã ISBN hoặc DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]</b>', với mã số chỉ đến nguồn [[BKTT:Nguồn uy tín|'''uy tín''']] ủng hộ và sử dụng tên mục từ được đề xuất. Trường hợp cần bổ sung lập luận và phản biện chuyên môn cho lựa chọn của tên mục từ, xin hãy viết ở mục Đề xuất bên dưới.''\n" |
− | return p.progress( | + | return p.progress(7,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong tên thì mới bình duyệt tiếp |
end | end | ||
-- local content = mw.title.new(pt):getContent() -- mã nguồn gốc của nội dung mục từ | -- local content = mw.title.new(pt):getContent() -- mã nguồn gốc của nội dung mục từ | ||
-- local content = frame:expandTemplate{ title = ':' .. pt } -- mã nguồn mục từ đã loại bỏ bản mẫu {{mới}} ở đầu | -- local content = frame:expandTemplate{ title = ':' .. pt } -- mã nguồn mục từ đã loại bỏ bản mẫu {{mới}} ở đầu | ||
− | local content = mw.title.new(pt):getContent():gsub("%b{}", "") -- mã nguồn mục từ đã loại bỏ mọi bản mẫu | + | local content = mw.title.new(pt):getContent():gsub("%b{}", "<ref/>") -- mã nguồn mục từ đã loại bỏ mọi bản mẫu |
local cl = content:len() -- độ dài của mã nguồn trên | local cl = content:len() -- độ dài của mã nguồn trên | ||
if content then | if content then | ||
− | str = str.."* Kiểm chứng & Văn phong | + | str = str.."* Bản quyền:\n**Bản quyền văn bản: " |
+ | if args['bản quyền'] then | ||
+ | if args['bản quyền']=='ok' then | ||
+ | str = str.."✅ nội dung văn bản của mục từ không có bằng chứng được sao chép từ nguồn khác, hoặc được sao chép / biên dịch / phát triển từ các nguồn có giấy phép tự do và có ghi công đầy đủ.\n" | ||
+ | elseif args['bản quyền']:sub(0,2)=='ok' then | ||
+ | str = str.."✅ "..args['bản quyền']:sub(3).."\n" | ||
+ | else | ||
+ | str = str.."<span style='color:red;'>Có vấn đề</span>. Hãy xử lý vấn đề bản quyền trước khi bình duyệt tiếp. Hãy trao đổi với các thành viên đã đưa nội dung có nghi vấn về vấn đề bản quyền, hoặc ghi ở mục Đề xuất bên dưới. Sau khi đã thống nhất, có thể xóa bỏ các nội dung vi phạm bản quyền, rồi thực hiện bổ sung lại các nội dung không vi phạm bản quyền, rồi bình duyệt lại.\n" | ||
+ | return p.progress(10,color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | else | ||
+ | str = str.."''<span style='color:red;'>Cần đánh giá bản quyền nội dung văn bản của mục từ.</span> Kiểm tra nguồn gốc nội dung văn bản: đọc các phần ghi công, sao nội dung văn bản của mục từ lên các máy tìm kiếm để kiểm tra liệu có nguồn có nội dung tương tự, kiểm tra giấy phép ở các nguồn có nội dung tương tự nếu có. Sau khi đã điều tra về tình trạng bản quyền của nội dung văn bản của mục từ, bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|bản quyền=ok</b>' hoặc '<b>|bản quyền=ok [lý do]</b>', nếu nội dung này không có bằng chứng được sao chép từ nguồn khác, hoặc được sao chép / biên dịch / phát triển từ các nguồn có giấy phép tự do và có ghi công đầy đủ.''\n" | ||
+ | return p.progress(10,color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | |||
+ | str = str.."**Bản quyền tập tin: " | ||
+ | if args['tập tin'] then | ||
+ | if args['tập tin']=='ok' then | ||
+ | str = str.."✅ Các tập tin đưa vào mục từ đều có giấy phép sử dụng tự do, không vi phạm bản quyền.\n" | ||
+ | elseif args['tập tin']:sub(0,2)=='ok' then | ||
+ | str = str.."✅ "..args['tập tin']:sub(3).."\n" | ||
+ | elseif args['tập tin']=='chưa có' then | ||
+ | str = str.."<span style='color:red;'>Chưa có hình ảnh hoặc các tập tin minh họa cho mục từ</span>.\n" | ||
+ | color = "orange" | ||
+ | else | ||
+ | str = str.."<span style='color:red;'>Có vấn đề</span>. Hãy xử lý vấn đề bản quyền trước khi bình duyệt tiếp. Hãy trao đổi với các thành viên đã đưa nội dung có nghi vấn về vấn đề bản quyền, hoặc ghi ở mục Đề xuất bên dưới. Sau khi đã thống nhất, có thể xóa bỏ các nội dung vi phạm bản quyền, rồi thực hiện bổ sung lại các nội dung không vi phạm bản quyền, rồi bình duyệt lại.\n" | ||
+ | return p.progress(10,color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | else | ||
+ | str = str.."''<span style='color:red;'>Cần đánh giá bản quyền các tập tin đưa vào mục từ.</span> Nếu chưa có tập tin (thường là hình ảnh) dùng trong mục từ, bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tập tin=chưa có</b>'. Nếu có tập tin được dùng trong mục từ, kiểm tra nguồn gốc và giấy phép sử dụng của các tập tin dùng trong mục từ: nếu mục từ có nguồn gốc ở Commons, xem giấy phép sử dụng tại Commons, nếu tập tin được tải lên đây, xem tập tin đã có thông tin nguồn gốc và giấy phép chưa - các tập tin chưa có thông tin nguồn gốc và giấy phép cần báo cáo lại cho những người quản trị ở đây để xem xét xóa bỏ. Sau khi đã điều tra về tình trạng bản quyền của các tập tin dùng trong mục từ, bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tập tin=ok</b>' hoặc '<b>|tập tin=ok [lý do]</b>', nếu các tập tin đều có giấy phép sử dụng tự do, không vi phạm bản quyền.''\n" | ||
+ | return p.progress(10,color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | |||
+ | str = str.."\n===Kiểm chứng & Văn phong===\n====Giới thiệu====\n" | ||
local i = 1 | local i = 1 | ||
+ | local pos = 0 | ||
+ | local lastpos = 0 | ||
while args['câu '..i] do | while args['câu '..i] do | ||
− | if args['câu '..i]=='ok' then | + | |
− | str = str.." | + | -- hiển thị đề mục để dễ theo dõi |
+ | if args['mục câu '..i] and args['mục câu '..i]~="" then | ||
+ | str = str.."\n===="..args['mục câu '..i].."====\n" | ||
+ | end | ||
+ | |||
+ | if args['câu '..i]:sub(0,2)=='ok' then | ||
+ | |||
+ | local ci = args['câu '..i]:gsub("\n"," ") | ||
+ | |||
+ | pos = ci:find(" ") | ||
+ | |||
+ | if pos then | ||
+ | local lydo = args['câu '..i]:sub(pos) | ||
+ | lydo = lydo:gsub("*","#*") | ||
+ | lydo = lydo:gsub("#","#*") | ||
+ | pos = tonumber(args['câu '..i]:sub(3,pos)) | ||
+ | if pos then | ||
+ | lastpos = pos | ||
+ | local l = content:find(" ",pos-41) | ||
+ | str = str.."# (đoạn cuối '..."..content:sub(l,pos-1).."'):✅"..lydo..".\n" | ||
+ | else | ||
+ | str = str.."* Câu "..i..": <span style='color:red;'>có ghi ok và dường như kèm theo lý do, nhưng chưa thấy ghi đúng mẫu '|câu "..i.."=ok[vị trí kết thúc] [lý do]'</span>.\n" | ||
+ | return p.progress(10+math.ceil(lastpos/cl*80),color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | |||
+ | else | ||
+ | |||
+ | pos = tonumber(args['câu '..i]:sub(3)) | ||
+ | if pos then | ||
+ | lastpos = pos | ||
+ | local l = content:find(" ",pos-41) | ||
+ | if ((pos+2)<cl and content:sub(pos,pos+3)=="<ref") then -- kiểm tra có <ref chưa | ||
+ | str = str.."* Câu "..i.." (đoạn cuối '..."..content:sub(l,pos-1).."'): ✅ nguồn chú thích là [[BKTT:Nguồn uy tín|uy tín]] và ủng hộ nội dung đưa vào; [[BKTT:Tiêu chuẩn mục từ#Văn phong|văn phong phù hợp]].\n" | ||
+ | else | ||
+ | str = str.."* Câu "..i.." (đoạn cuối '..."..content:sub(l,pos-1).."')': <span style='color:red;'>có ghi ok, nhưng chưa thấy có chú thích kiểm chứng</span>. Nếu vẫn còn vấn đề, có thể ghi vào bản mẫu đang dùng '|câu "..i.."="..pos.." [vấn đề còn tồn tại]'.\n" | ||
+ | return p.progress(10+math.ceil(pos/cl*80),color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | else | ||
+ | str = str.."* Câu "..i..": <span style='color:red;'>có ghi ok, nhưng chưa thấy ghi đúng mẫu '|câu "..i.."=ok[vị trí kết thúc]'</span>.\n" | ||
+ | return p.progress(10+math.ceil(lastpos/cl*80),color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | |||
+ | end | ||
+ | |||
else | else | ||
− | str = str.." | + | local t = args['câu '..i]:find(" ",0,true) |
+ | if t then | ||
+ | pos = tonumber(args['câu '..i]:sub(0,t-1)) | ||
+ | if pos then | ||
+ | lastpos = pos | ||
+ | local l = content:find(" ",pos-41) | ||
+ | str = str.."* Câu "..i.." (đoạn cuối '..."..content:sub(l,pos-1).."'): <span style='color:red;'>có vấn đề</span> - ".. args['câu '..i]:sub(t+1)..".\n" | ||
+ | color="orange" | ||
+ | else | ||
+ | str = str.."* Câu "..i..": <span style='color:red;'>có thể có vấn đề, chưa thấy ghi đúng mẫu '|câu "..i.."=[vị trí kết thúc] [vấn đề còn tồn tại]', hoặc mẫu '|câu "..i.."=ok[vị trí kết thúc]'</span>.\n" | ||
+ | return p.progress(10+math.ceil(lastpos/cl*80),color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | else | ||
+ | str = str.."* Câu "..i..": <span style='color:red;'>có thể có vấn đề, chưa thấy ghi đúng mẫu '|câu "..i.."=[vị trí kết thúc] [vấn đề còn tồn tại]', hoặc mẫu '|câu "..i.."=ok[vị trí kết thúc]'</span>.\n" | ||
+ | return p.progress(10+math.ceil(lastpos/cl*80),color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
end | end | ||
i = i + 1 | i = i + 1 | ||
end | end | ||
− | + | local f = p.ket(content,pos+2) -- vị trí hết câu, tính từ pos | |
− | |||
− | |||
− | |||
− | local f = p.ket(content,pos) -- vị trí hết câu, tính từ pos | ||
if f then | if f then | ||
+ | |||
+ | -- kiểm tra đề mục | ||
+ | local dm = content:sub(pos,f):match("==(.+)==") | ||
+ | if dm then | ||
+ | str = str.."* Hãy bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|mục câu "..i.."="..dm:gsub("=","").."</b>'.\n" | ||
+ | end | ||
+ | |||
local l = f-pos | local l = f-pos | ||
if l > 30 then | if l > 30 then | ||
Dòng 246: | Dòng 355: | ||
end | end | ||
l = content:find(" ",f-l) | l = content:find(" ",f-l) | ||
− | str = str.." | + | str = str.."* Câu "..i.." (đoạn cuối '..."..content:sub(l,f).."') ''<span style='color:red;'>cần được đánh giá</span>''. ''Hãy bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|câu "..i.."=ok"..(f+1).."</b>' nếu câu này có ghi nguồn chú thích [[BKTT:Nguồn uy tín|uy tín]] ủng hộ nội dung đưa vào và có văn phong phù hợp; hoặc '<b>|câu "..i.."=ok"..(f+1).." [lý do]</b>' (đầy đủ hơn là '<b>|câu "..i.."=ok"..(f+1).." [xuống dòng] *[lý do 1] [xuống dòng] *[lý do 2] ...</b>') để bổ sung thêm đánh giá tại sao câu này có ghi nguồn chú thích uy tín ủng hộ nội dung đưa vào và có văn phong phù hợp; hoặc '<b>|câu "..i.."="..(f+1).." [vấn đề còn tồn tại]</b>' nếu vẫn có vấn đề với chú thích kiểm chứng và văn phong. Nếu trong quá trình đánh giá câu này, phát hiện có vấn đề bản quyền, xin hãy quay trở lại mục Bản quyền để đánh giá lại.''\n" |
− | return p.progress( | + | return p.progress(10+math.ceil(f/cl*80),color,pt)..str..sign -- dừng ở đây |
end | end | ||
− | str = str.." | + | str = str.."===Bố cục===" |
− | str = str.." | + | if args['bố cục'] then |
+ | if args['bố cục']=='ok' then | ||
+ | str = str.."✅ Dựa trên tất cả nguồn thông tin uy tín đề cập đến chủ đề mục từ, bố cục các mục đã đề cập đến đủ các khía cạnh quan trọng của chủ đề, thứ tự các mục bám theo gợi ý của [[BKTT:Tiêu chuẩn mục từ#Bố cục|tiêu chuẩn mục từ]], và có phần giới thiệu ở đầu và mục thông tin tham khảo ở cuối.\n" | ||
+ | else | ||
+ | str = str.."<span style='color:red;'>Có vấn đề</span> - "..args['bố cục']..".\n" | ||
+ | color="orange" | ||
+ | end | ||
+ | else | ||
+ | str = str.."''<span style='color:red;'>Cần đánh giá bố cục.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|bố cục=ok</b>', nếu sau khi đọc hết các tài liệu tham khảo uy tín đề cập đến chủ đề mục từ, nhận thấy các mục đã đề cập đến đủ các khía cạnh quan trọng của chủ đề, thứ tự các mục bám theo gợi ý của [[BKTT:Tiêu chuẩn mục từ#Bố cục|tiêu chuẩn mục từ]], và có phần giới thiệu ở đầu và mục thông tin tham khảo ở cuối; hoặc '<b>|bố cục=[vấn đề]</b>' nếu còn có vấn đề ở bố cục.''\n" | ||
+ | return p.progress(91,color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | |||
+ | str = str.."** Giới thiệu: " | ||
+ | if args['giới thiệu'] then | ||
+ | if args['giới thiệu']=='ok' then | ||
+ | str = str.."✅ phần giới thiệu có đề cập tóm tắt đến những ý quan trọng ở các mục, không có khía cạnh quan trọng nào được giới thiệu mà chưa được diễn giải chi tiết ở các mục, đồng thời phần giới thiệu in đậm tên mục từ và nêu ngay định nghĩa về chủ đề của mục từ ở câu đầu tiên.\n" | ||
+ | else | ||
+ | str = str.."<span style='color:red;'>Có vấn đề</span> - "..args['giới thiệu']..".\n" | ||
+ | color="orange" | ||
+ | end | ||
+ | else | ||
+ | str = str.."''<span style='color:red;'>Cần đánh giá mục giới thiệu.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|giới thiệu=ok</b>', nếu phần giới thiệu có đề cập tóm tắt đến những ý quan trọng ở các mục, không có khía cạnh quan trọng nào được giới thiệu mà chưa được diễn giải chi tiết ở các mục, đồng thời phần giới thiệu in đậm tên mục từ và nêu ngay định nghĩa về chủ đề của mục từ ở câu đầu tiên; hoặc '<b>|giới thiệu=[vấn đề]</b>' nếu còn có vấn đề ở mục giới thiệu.''\n" | ||
+ | return p.progress(93,color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
− | str = str.." | + | str = str.."===Tổng hợp===" |
+ | if args['tổng hợp'] then | ||
+ | if args['tổng hợp']=='ok' then | ||
+ | str = str.."✅ Nội dung bám sát vào chủ đề, không có đoạn nào bị sa đà vào các chi tiết không quan trọng, tất cả đều theo văn phong tổng hợp.\n" | ||
+ | else | ||
+ | str = str.."<span style='color:red;'>Có vấn đề</span> - "..args['tổng hợp']..".\n" | ||
+ | color="orange" | ||
+ | end | ||
+ | else | ||
+ | str = str.."''<span style='color:red;'>Cần đánh giá .</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tổng hợp=ok</b>', nếu nội dung bám sát vào chủ đề, không có đoạn nào bị sa đà vào các chi tiết không quan trọng, tất cả đều theo văn phong tổng hợp; hoặc '<b>|tổng hợp=[vấn đề]</b>' nếu còn có vấn đề như có đoạn bị đi vào chi tiết gây mất tính tổng hợp.''\n" | ||
+ | return p.progress(95,color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
+ | |||
+ | str = str.."===Các hộp thông tin và các bản mẫu===" | ||
+ | if args['hộp thông tin'] then | ||
+ | if args['hộp thông tin']=='ok' then | ||
+ | str = str.."✅ Các hộp thông tin và các bản mẫu phụ trợ chỉ chứa các dữ kiện, không nêu quan điểm, và có thể gồm hình minh họa, đều có chú thích nguồn kiểm chứng [[BKTT:Nguồn uy tín|uy tín]] ủng hộ cho thông tin đưa vào.\n" | ||
+ | elseif args['hộp thông tin']=='không có' then | ||
+ | str = str.."không có hộp thông tin hoặc bảng biểu từ các bản mẫu phụ trợ.\n" | ||
+ | else | ||
+ | str = str.."<span style='color:red;'>Có vấn đề</span> - "..args['hộp thông tin']..".\n" | ||
+ | color="orange" | ||
+ | end | ||
+ | else | ||
+ | str = str.."''<span style='color:red;'>Cần đánh giá.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|hộp thông tin=không có</b>'; hoặc '<b>|hộp thông tin=ok</b>', nếu các hộp thông tin và các bản mẫu phụ trợ chỉ chứa các dữ kiện, không nêu quan điểm, và có thể gồm hình minh họa, đều có chú thích nguồn kiểm chứng [[BKTT:Nguồn uy tín|uy tín]] ủng hộ cho thông tin đưa vào; hoặc '<b>|hộp thông tin=[vấn đề]</b>' nếu còn có vấn đề ở các hộp thông tin hoặc các bản mẫu phụ trợ.''\n" | ||
+ | return p.progress(97,color,pt)..str..sign -- dừng ở đây | ||
+ | end | ||
else | else | ||
− | str = str.."<span style='color:red;'>Không thấy nội dung mục từ '"..pt.."'</span>.\n" | + | str = str.."''<span style='color:red;'>Không thấy nội dung mục từ '"..pt.."'</span>''.\n" |
− | return p.progress( | + | return p.progress(10,color,pt)..str..sign -- dừng ở đây |
end | end | ||
− | return str | + | if args['kết thúc'] then |
+ | |||
+ | if color=="orange" then | ||
+ | return p.progress(100,color,pt)..str.. "\n'''Phần 3. Kết luận & Ký tên'''\n\n<span style='color:red;'>'''Chưa đạt'''</span>.\n" | ||
+ | else | ||
+ | return p.progress(100,color,pt)..str.. "\n'''Phần 3. Kết luận & Ký tên'''\n\n<span style='color:green;'>'''Đạt'''</span>.\n" | ||
+ | end | ||
+ | |||
+ | else | ||
+ | |||
+ | str = str.."''<span style='color:red;'>Cần kết thúc</span>. Hãy sao chép đoạn mã sau vào mục Bình duyệt ở trang thảo luận của mục từ (thay thế cho phần bình duyệt đang có của bạn) rồi lưu; sau đó ký tên bằng cách gõ ~~~~ ở bên dưới Phần 3 rồi lưu.''\n {{subst:#invoke:BD|bd|\n" | ||
+ | if args['chủ đề'] then str = str.." |chủ đề="..args['chủ đề'].."\n" end | ||
+ | if args['nổi 1'] then str = str.." |nổi 1="..args['nổi 1'].."\n" end | ||
+ | if args['nổi 2'] then str = str.." |nổi 2="..args['nổi 2'].."\n" end | ||
+ | if args['tách'] then str = str.." |tách="..args['tách'].."\n" end | ||
+ | if args['tách vì'] then str = str.." |tách vì="..args['tách vì'].."\n" end | ||
+ | if args['tên 1'] then str = str.." |tên 1="..args['tên 1'].."\n" end | ||
+ | str = str.." |bản quyền="..args['bản quyền'].."\n" | ||
+ | str = str.." |tập tin="..args['tập tin'].."\n" | ||
+ | local i = 1 | ||
+ | while args['câu '..i] do | ||
+ | str = str.." |câu "..i.."="..args['câu '..i].."\n" | ||
+ | if args['mục câu '..i] then | ||
+ | str = str.." |mục câu "..i.."="..args['mục câu '..i].."\n" | ||
+ | end | ||
+ | i = i + 1 | ||
+ | end | ||
+ | str = str.." |bố cục="..args['bố cục'].."\n" | ||
+ | str = str.." |giới thiệu="..args['giới thiệu'].."\n" | ||
+ | str = str.." |tổng hợp="..args['tổng hợp'].."\n" | ||
+ | str = str.." |hộp thông tin="..args['hộp thông tin'].."\n" | ||
+ | str = str.." |kết thúc=ok\n }}\n" | ||
+ | return p.progress(99,color,pt)..str.."\n'''Phần 3. Kết luận & Ký tên'''\n"..sign -- dừng ở đây | ||
+ | |||
+ | end | ||
+ | |||
end | end | ||
return p | return p |
Bản hiện tại lúc 16:51, ngày 15 tháng 5 năm 2021
Có thể viết tài liệu về mô đun này tại Mô đun:BD/tài liệu.
-- danh sách các mục từ chính thức của Đề án Biên soạn Bách khoa toàn thư Việt Nam local bktt1 = mw.loadData("Mô đun:BD/bktt1") local bktt2 = mw.loadData("Mô đun:BD/bktt2") local bktt3 = mw.loadData("Mô đun:BD/bktt3") local bktt4 = mw.loadData("Mô đun:BD/bktt4") local bktt5 = mw.loadData("Mô đun:BD/bktt5") local bktt6 = mw.loadData("Mô đun:BD/bktt6") local bktt7 = mw.loadData("Mô đun:BD/bktt7") local bktt8 = mw.loadData("Mô đun:BD/bktt8") local bktt9 = mw.loadData("Mô đun:BD/bktt9") local bktt10 = mw.loadData("Mô đun:BD/bktt10") local bktt11 = mw.loadData("Mô đun:BD/bktt11") local bktt12 = mw.loadData("Mô đun:BD/bktt12") local bktt13 = mw.loadData("Mô đun:BD/bktt13") local bktt14 = mw.loadData("Mô đun:BD/bktt14") local bktt15 = mw.loadData("Mô đun:BD/bktt15") local bktt16 = mw.loadData("Mô đun:BD/bktt16") local bktt17 = mw.loadData("Mô đun:BD/bktt17") local bktt18 = mw.loadData("Mô đun:BD/bktt18") local bktt19 = mw.loadData("Mô đun:BD/bktt19") local bktt20 = mw.loadData("Mô đun:BD/bktt20") local bktt21 = mw.loadData("Mô đun:BD/bktt21") local bktt22 = mw.loadData("Mô đun:BD/bktt22") local bktt23 = mw.loadData("Mô đun:BD/bktt23") local bktt24 = mw.loadData("Mô đun:BD/bktt24") local bktt25 = mw.loadData("Mô đun:BD/bktt25") local bktt26 = mw.loadData("Mô đun:BD/bktt26") local bktt27 = mw.loadData("Mô đun:BD/bktt27") local bktt28 = mw.loadData("Mô đun:BD/bktt28") local bktt29 = mw.loadData("Mô đun:BD/bktt29") local bktt30 = mw.loadData("Mô đun:BD/bktt30") local bktt31 = mw.loadData("Mô đun:BD/bktt31") local bktt32 = mw.loadData("Mô đun:BD/bktt32") local bktt33 = mw.loadData("Mô đun:BD/bktt33") local bktt34 = mw.loadData("Mô đun:BD/bktt34") local bktt35 = mw.loadData("Mô đun:BD/bktt35") local bktt36 = mw.loadData("Mô đun:BD/bktt36") local TableTools = require("Mô đun:TableTools") local color="#00af32"; local p = {}; -- Hàm hiển thị tiến độ bình duyệt, p là phần trăm hoàn thành, c là màu p.progress = function( p , c, pt) local str = "<div style='width:70%; margin:auto; text-align:center;'><p>Mục từ '''"..pt.."''' <span style='font-size: 120%;'><b>"..p.."%</b> </span>hoàn thành</p><p style='overflow:hidden;background:#efefef;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:10px'><span style='width:"..p.."%; height: 15px; background:"..c..";float:left;border-radius:10px'> </span><span style='width:"..(100-tonumber(p)).."%; height:15px; float:left;'> </span></p></div>" return str end -- Hàm kiểm tra xem chủ đề pt đã nằm trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam chưa p.inBKTT = function( pt ) if TableTools.inArray(bktt1, pt) then return true elseif TableTools.inArray(bktt2, pt) then return true elseif TableTools.inArray(bktt3, pt) then return true elseif TableTools.inArray(bktt4, pt) then return true elseif TableTools.inArray(bktt5, pt) then return true elseif TableTools.inArray(bktt6, pt) then return true elseif TableTools.inArray(bktt7, pt) then return true elseif TableTools.inArray(bktt8, pt) then return true elseif TableTools.inArray(bktt9, pt) then return true elseif TableTools.inArray(bktt10, pt) then return true elseif TableTools.inArray(bktt11, pt) then return true elseif TableTools.inArray(bktt12, pt) then return true elseif TableTools.inArray(bktt13, pt) then return true elseif TableTools.inArray(bktt14, pt) then return true elseif TableTools.inArray(bktt15, pt) then return true elseif TableTools.inArray(bktt16, pt) then return true elseif TableTools.inArray(bktt17, pt) then return true elseif TableTools.inArray(bktt18, pt) then return true elseif TableTools.inArray(bktt19, pt) then return true elseif TableTools.inArray(bktt20, pt) then return true elseif TableTools.inArray(bktt21, pt) then return true elseif TableTools.inArray(bktt22, pt) then return true elseif TableTools.inArray(bktt23, pt) then return true elseif TableTools.inArray(bktt24, pt) then return true elseif TableTools.inArray(bktt25, pt) then return true elseif TableTools.inArray(bktt26, pt) then return true elseif TableTools.inArray(bktt27, pt) then return true elseif TableTools.inArray(bktt28, pt) then return true elseif TableTools.inArray(bktt29, pt) then return true elseif TableTools.inArray(bktt30, pt) then return true elseif TableTools.inArray(bktt31, pt) then return true elseif TableTools.inArray(bktt32, pt) then return true elseif TableTools.inArray(bktt33, pt) then return true elseif TableTools.inArray(bktt34, pt) then return true elseif TableTools.inArray(bktt35, pt) then return true elseif TableTools.inArray(bktt36, pt) then return true else return false end end -- Hàm xác định vị trí kết thúc 1 câu, bắt đầu từ pos -- Tránh các mẫu viết tắt tr. H. B. b.y. ... hoặc nguyên câu văn nằm trong <ref></ref> p.ket = function( content, pos ) local e1 = content:find(". ",pos,true) local e2 = content:find(".\n",pos,true) local e3 = content:find(".<ref",pos,true) if (not(e1) and not(e2) and not(e3)) then return nil end if not(e1) then e1 = math.huge end if not(e2) then e2 = math.huge end if not(e3) then e3 = math.huge end local e = math.min(e1,e2,e3) local x = content:find("</ref>",e,true) if not(x) then return e end local y = content:find("<ref",e,true) if not(y) then y = math.huge end if y<x then return e else return p.ket(content,e+2) end end -- Hàm chính, hiển thị nội dung bình duyệt p.bd = function( frame ) local sign = "\n<span style='color:red;'>'''Chưa bình duyệt xong hoặc chưa đạt'''</span>.\n" -- lấy tham số do người dùng đưa vào local args = {} for k, v in pairs(frame.args) do -- trước hết lấy tham số từ {{#invoke:BD|bd| ... args[k] = v end for k, v in pairs(frame:getParent().args) do -- sau đó lấy tham số từ {{bình duyệt| ... args[k] = v end -- page title local pt = mw.title.getCurrentTitle().text -- page topic local tp = pt if args['chủ đề'] then tp = args['chủ đề'] end local str = "Những người [[BKTT:Tiêu_chuẩn_mục_từ#Quy_trình_bình_duyệt|bình duyệt]] (ký tên bên dưới đây hoặc ghi trong [https://bktt.vn/index.php?title=Talk:"..(pt:gsub(" ","_")).."&action=history lịch sử bình duyệt]) xác nhận các thông tin sau cho phiên bản truy cập lúc "..(os.date("!UTC %Y-%m-%d %H:%M:%S")).." của mục từ '"..pt.."'\n===Chủ đề mục từ===\n" if p.inBKTT(tp) then str = str.."Chủ đề '"..tp.."' nằm trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam, do vậy tự động thỏa mãn các yêu cầu về độ nổi bật và độ tách biệt." if not(pt==tp) then str = str.." Xem xét di chuyển mục từ về tên '"..tp.."'\n" else str = str.."\n" end else str = str.."'"..tp.."' <span style='color:orange;'>không</span> trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam. ''Có thể tìm các tên gọi tương đương về chủ đề và dùng {{bình duyệt<b>|chủ đề=[tên tương đương]</b>}} để kiểm tra lại xem tên tương đương có nằm trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam không.'' Nếu không được thì xét các đánh giá dưới.\n" str = str.."* Độ nổi bật: " if args['nổi 1'] and args['nổi 2'] then str = str.."✅ có ít nhất 2 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 1: "..args['nổi 1'].."\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 2: "..args['nổi 2'].."\n" elseif args['nổi 1'] then str = str.."''<span style='color:red;'>Cần bổ sung nguồn xác định độ nổi bật.</span> Xác nhận 1 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 1: "..args['nổi 1'].."\nTuy nhiên cần bổ sung thêm nguồn nữa.''\n" return p.progress(2,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ nổi bật thì mới bình duyệt tiếp elseif args['nổi 2'] then str = str.."''<span style='color:red;'>Cần bổ sung nguồn xác định độ nổi bật.</span> Xác nhận 1 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 2: "..args['nổi 2'].."\nTuy nhiên cần bổ sung thêm nguồn nữa.''\n" return p.progress(2,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ nổi bật thì mới bình duyệt tiếp else str = str.."''<span style='color:red;'>Cần bổ sung 2 nguồn xác định độ nổi bật.</span> Hãy dùng {{bình duyệt<b>|nổi 1=[mã ISBN, DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]|nổi 2=[mã ISBN hoặc DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]</b>}}, với 2 mã số chỉ đến 2 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']], [[BKTT:Nguồn thứ cấp|'''thứ cấp''']], '''độc lập''' có đề cập một cách '''đáng kể''' về chủ đề '"..tp.."'.''\n" return p.progress(0,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ nổi bật thì mới bình duyệt tiếp end str = str.."* Độ tách biệt: " if args['tách']=='không trùng' then str = str.."✅ Đã tìm trong BKTT.vn và không tìm thấy được mục từ nào có ý nghĩa gần với chủ đề '"..tp.."'\n" elseif args['tách'] and args['tách vì'] then str = str.."✅ Đã tìm trong BKTT.vn và chỉ tìm thấy được mục từ nêu nội dung có ý nghĩa gần nhất với chủ đề '"..tp.."' là [["..args['tách'].."]]. Tuy nhiên [["..args['tách'].."]] tách biệt với '"..tp.."' vì "..args['tách vì']..".\n" elseif args['tách'] then str = str.." Xác nhận đã tìm kiếm trong BKTT.vn và tìm thấy được mục từ nêu nội dung có ý nghĩa gần nhất với chủ đề '"..tp.."' là [["..args['tách'].."]]. ''<span style='color:red;'>Cần bổ sung lý do:</span> tại sao [["..args['tách'].."]] lại tách biệt với '"..tp.."', bằng cách bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tách vì=[lý do tại sao mục từ có nội dung gần nhất vẫn tách biệt với '"..tp.."']</b>'.''\n" return p.progress(5,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ tách biệt thì mới bình duyệt tiếp else str = str.."''<span style='color:red;'>Cần tìm kiếm trong BKTT.vn xem đã có những mục từ nào nêu nội dung có ý nghĩa gần với chủ đề '"..tp.."' chưa.</span> Nếu đã tìm và không thấy, thì dùng bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tách = không trùng</b>'. Nếu đã tìm và đã thấy có các mục từ nêu nội dung có ý nghĩa gần với chủ đề '"..tp.."', thì chọn lấy mục từ có nội dung gần với chủ đề '"..tp.."' nhất và bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tách =[tên mục từ có nội dung gần nhất]|tách vì=[lý do tại sao mục từ có nội dung gần nhất vẫn tách biệt với '"..tp.."']</b>'.''\n" return p.progress(5,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong độ tách biệt thì mới bình duyệt tiếp end end str = str.."\n===Tên & bản quyền===\n" str = str.."* Tên mục từ: " if p.inBKTT(pt) then str = str.."✅ Tên '"..pt.."' nằm trong danh sách mục từ của Đề án Biên soạn Bách khoa toàn thư Việt Nam. Nếu có đề xuất thay đổi tên này, xin hãy viết ở mục Đề xuất bên dưới.\n" elseif args['tên 1'] then str = str.."✅ 1 nguồn [[BKTT:Nguồn uy tín|'''uy tín''']] ủng hộ và sử dụng tên mục từ '"..pt.."':\n**Mã số lưu trữ hoặc ISBN hoặc DOI của nguồn 1: "..args['tên 1'].."\n" else str = str.."''<span style='color:red;'>Cần nêu nguồn uy tín dùng tên mục từ được đề xuất.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tên 1 =[mã ISBN hoặc DOI hoặc mã số lưu trữ tại nơi lưu trữ quốc gia]</b>', với mã số chỉ đến nguồn [[BKTT:Nguồn uy tín|'''uy tín''']] ủng hộ và sử dụng tên mục từ được đề xuất. Trường hợp cần bổ sung lập luận và phản biện chuyên môn cho lựa chọn của tên mục từ, xin hãy viết ở mục Đề xuất bên dưới.''\n" return p.progress(7,color,pt)..str..sign -- dừng ở đây, cần giải quyết xong tên thì mới bình duyệt tiếp end -- local content = mw.title.new(pt):getContent() -- mã nguồn gốc của nội dung mục từ -- local content = frame:expandTemplate{ title = ':' .. pt } -- mã nguồn mục từ đã loại bỏ bản mẫu {{mới}} ở đầu local content = mw.title.new(pt):getContent():gsub("%b{}", "<ref/>") -- mã nguồn mục từ đã loại bỏ mọi bản mẫu local cl = content:len() -- độ dài của mã nguồn trên if content then str = str.."* Bản quyền:\n**Bản quyền văn bản: " if args['bản quyền'] then if args['bản quyền']=='ok' then str = str.."✅ nội dung văn bản của mục từ không có bằng chứng được sao chép từ nguồn khác, hoặc được sao chép / biên dịch / phát triển từ các nguồn có giấy phép tự do và có ghi công đầy đủ.\n" elseif args['bản quyền']:sub(0,2)=='ok' then str = str.."✅ "..args['bản quyền']:sub(3).."\n" else str = str.."<span style='color:red;'>Có vấn đề</span>. Hãy xử lý vấn đề bản quyền trước khi bình duyệt tiếp. Hãy trao đổi với các thành viên đã đưa nội dung có nghi vấn về vấn đề bản quyền, hoặc ghi ở mục Đề xuất bên dưới. Sau khi đã thống nhất, có thể xóa bỏ các nội dung vi phạm bản quyền, rồi thực hiện bổ sung lại các nội dung không vi phạm bản quyền, rồi bình duyệt lại.\n" return p.progress(10,color,pt)..str..sign -- dừng ở đây end else str = str.."''<span style='color:red;'>Cần đánh giá bản quyền nội dung văn bản của mục từ.</span> Kiểm tra nguồn gốc nội dung văn bản: đọc các phần ghi công, sao nội dung văn bản của mục từ lên các máy tìm kiếm để kiểm tra liệu có nguồn có nội dung tương tự, kiểm tra giấy phép ở các nguồn có nội dung tương tự nếu có. Sau khi đã điều tra về tình trạng bản quyền của nội dung văn bản của mục từ, bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|bản quyền=ok</b>' hoặc '<b>|bản quyền=ok [lý do]</b>', nếu nội dung này không có bằng chứng được sao chép từ nguồn khác, hoặc được sao chép / biên dịch / phát triển từ các nguồn có giấy phép tự do và có ghi công đầy đủ.''\n" return p.progress(10,color,pt)..str..sign -- dừng ở đây end str = str.."**Bản quyền tập tin: " if args['tập tin'] then if args['tập tin']=='ok' then str = str.."✅ Các tập tin đưa vào mục từ đều có giấy phép sử dụng tự do, không vi phạm bản quyền.\n" elseif args['tập tin']:sub(0,2)=='ok' then str = str.."✅ "..args['tập tin']:sub(3).."\n" elseif args['tập tin']=='chưa có' then str = str.."<span style='color:red;'>Chưa có hình ảnh hoặc các tập tin minh họa cho mục từ</span>.\n" color = "orange" else str = str.."<span style='color:red;'>Có vấn đề</span>. Hãy xử lý vấn đề bản quyền trước khi bình duyệt tiếp. Hãy trao đổi với các thành viên đã đưa nội dung có nghi vấn về vấn đề bản quyền, hoặc ghi ở mục Đề xuất bên dưới. Sau khi đã thống nhất, có thể xóa bỏ các nội dung vi phạm bản quyền, rồi thực hiện bổ sung lại các nội dung không vi phạm bản quyền, rồi bình duyệt lại.\n" return p.progress(10,color,pt)..str..sign -- dừng ở đây end else str = str.."''<span style='color:red;'>Cần đánh giá bản quyền các tập tin đưa vào mục từ.</span> Nếu chưa có tập tin (thường là hình ảnh) dùng trong mục từ, bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tập tin=chưa có</b>'. Nếu có tập tin được dùng trong mục từ, kiểm tra nguồn gốc và giấy phép sử dụng của các tập tin dùng trong mục từ: nếu mục từ có nguồn gốc ở Commons, xem giấy phép sử dụng tại Commons, nếu tập tin được tải lên đây, xem tập tin đã có thông tin nguồn gốc và giấy phép chưa - các tập tin chưa có thông tin nguồn gốc và giấy phép cần báo cáo lại cho những người quản trị ở đây để xem xét xóa bỏ. Sau khi đã điều tra về tình trạng bản quyền của các tập tin dùng trong mục từ, bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tập tin=ok</b>' hoặc '<b>|tập tin=ok [lý do]</b>', nếu các tập tin đều có giấy phép sử dụng tự do, không vi phạm bản quyền.''\n" return p.progress(10,color,pt)..str..sign -- dừng ở đây end str = str.."\n===Kiểm chứng & Văn phong===\n====Giới thiệu====\n" local i = 1 local pos = 0 local lastpos = 0 while args['câu '..i] do -- hiển thị đề mục để dễ theo dõi if args['mục câu '..i] and args['mục câu '..i]~="" then str = str.."\n===="..args['mục câu '..i].."====\n" end if args['câu '..i]:sub(0,2)=='ok' then local ci = args['câu '..i]:gsub("\n"," ") pos = ci:find(" ") if pos then local lydo = args['câu '..i]:sub(pos) lydo = lydo:gsub("*","#*") lydo = lydo:gsub("#","#*") pos = tonumber(args['câu '..i]:sub(3,pos)) if pos then lastpos = pos local l = content:find(" ",pos-41) str = str.."# (đoạn cuối '..."..content:sub(l,pos-1).."'):✅"..lydo..".\n" else str = str.."* Câu "..i..": <span style='color:red;'>có ghi ok và dường như kèm theo lý do, nhưng chưa thấy ghi đúng mẫu '|câu "..i.."=ok[vị trí kết thúc] [lý do]'</span>.\n" return p.progress(10+math.ceil(lastpos/cl*80),color,pt)..str..sign -- dừng ở đây end else pos = tonumber(args['câu '..i]:sub(3)) if pos then lastpos = pos local l = content:find(" ",pos-41) if ((pos+2)<cl and content:sub(pos,pos+3)=="<ref") then -- kiểm tra có <ref chưa str = str.."* Câu "..i.." (đoạn cuối '..."..content:sub(l,pos-1).."'): ✅ nguồn chú thích là [[BKTT:Nguồn uy tín|uy tín]] và ủng hộ nội dung đưa vào; [[BKTT:Tiêu chuẩn mục từ#Văn phong|văn phong phù hợp]].\n" else str = str.."* Câu "..i.." (đoạn cuối '..."..content:sub(l,pos-1).."')': <span style='color:red;'>có ghi ok, nhưng chưa thấy có chú thích kiểm chứng</span>. Nếu vẫn còn vấn đề, có thể ghi vào bản mẫu đang dùng '|câu "..i.."="..pos.." [vấn đề còn tồn tại]'.\n" return p.progress(10+math.ceil(pos/cl*80),color,pt)..str..sign -- dừng ở đây end else str = str.."* Câu "..i..": <span style='color:red;'>có ghi ok, nhưng chưa thấy ghi đúng mẫu '|câu "..i.."=ok[vị trí kết thúc]'</span>.\n" return p.progress(10+math.ceil(lastpos/cl*80),color,pt)..str..sign -- dừng ở đây end end else local t = args['câu '..i]:find(" ",0,true) if t then pos = tonumber(args['câu '..i]:sub(0,t-1)) if pos then lastpos = pos local l = content:find(" ",pos-41) str = str.."* Câu "..i.." (đoạn cuối '..."..content:sub(l,pos-1).."'): <span style='color:red;'>có vấn đề</span> - ".. args['câu '..i]:sub(t+1)..".\n" color="orange" else str = str.."* Câu "..i..": <span style='color:red;'>có thể có vấn đề, chưa thấy ghi đúng mẫu '|câu "..i.."=[vị trí kết thúc] [vấn đề còn tồn tại]', hoặc mẫu '|câu "..i.."=ok[vị trí kết thúc]'</span>.\n" return p.progress(10+math.ceil(lastpos/cl*80),color,pt)..str..sign -- dừng ở đây end else str = str.."* Câu "..i..": <span style='color:red;'>có thể có vấn đề, chưa thấy ghi đúng mẫu '|câu "..i.."=[vị trí kết thúc] [vấn đề còn tồn tại]', hoặc mẫu '|câu "..i.."=ok[vị trí kết thúc]'</span>.\n" return p.progress(10+math.ceil(lastpos/cl*80),color,pt)..str..sign -- dừng ở đây end end i = i + 1 end local f = p.ket(content,pos+2) -- vị trí hết câu, tính từ pos if f then -- kiểm tra đề mục local dm = content:sub(pos,f):match("==(.+)==") if dm then str = str.."* Hãy bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|mục câu "..i.."="..dm:gsub("=","").."</b>'.\n" end local l = f-pos if l > 30 then l = 30 end l = content:find(" ",f-l) str = str.."* Câu "..i.." (đoạn cuối '..."..content:sub(l,f).."') ''<span style='color:red;'>cần được đánh giá</span>''. ''Hãy bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|câu "..i.."=ok"..(f+1).."</b>' nếu câu này có ghi nguồn chú thích [[BKTT:Nguồn uy tín|uy tín]] ủng hộ nội dung đưa vào và có văn phong phù hợp; hoặc '<b>|câu "..i.."=ok"..(f+1).." [lý do]</b>' (đầy đủ hơn là '<b>|câu "..i.."=ok"..(f+1).." [xuống dòng] *[lý do 1] [xuống dòng] *[lý do 2] ...</b>') để bổ sung thêm đánh giá tại sao câu này có ghi nguồn chú thích uy tín ủng hộ nội dung đưa vào và có văn phong phù hợp; hoặc '<b>|câu "..i.."="..(f+1).." [vấn đề còn tồn tại]</b>' nếu vẫn có vấn đề với chú thích kiểm chứng và văn phong. Nếu trong quá trình đánh giá câu này, phát hiện có vấn đề bản quyền, xin hãy quay trở lại mục Bản quyền để đánh giá lại.''\n" return p.progress(10+math.ceil(f/cl*80),color,pt)..str..sign -- dừng ở đây end str = str.."===Bố cục===" if args['bố cục'] then if args['bố cục']=='ok' then str = str.."✅ Dựa trên tất cả nguồn thông tin uy tín đề cập đến chủ đề mục từ, bố cục các mục đã đề cập đến đủ các khía cạnh quan trọng của chủ đề, thứ tự các mục bám theo gợi ý của [[BKTT:Tiêu chuẩn mục từ#Bố cục|tiêu chuẩn mục từ]], và có phần giới thiệu ở đầu và mục thông tin tham khảo ở cuối.\n" else str = str.."<span style='color:red;'>Có vấn đề</span> - "..args['bố cục']..".\n" color="orange" end else str = str.."''<span style='color:red;'>Cần đánh giá bố cục.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|bố cục=ok</b>', nếu sau khi đọc hết các tài liệu tham khảo uy tín đề cập đến chủ đề mục từ, nhận thấy các mục đã đề cập đến đủ các khía cạnh quan trọng của chủ đề, thứ tự các mục bám theo gợi ý của [[BKTT:Tiêu chuẩn mục từ#Bố cục|tiêu chuẩn mục từ]], và có phần giới thiệu ở đầu và mục thông tin tham khảo ở cuối; hoặc '<b>|bố cục=[vấn đề]</b>' nếu còn có vấn đề ở bố cục.''\n" return p.progress(91,color,pt)..str..sign -- dừng ở đây end str = str.."** Giới thiệu: " if args['giới thiệu'] then if args['giới thiệu']=='ok' then str = str.."✅ phần giới thiệu có đề cập tóm tắt đến những ý quan trọng ở các mục, không có khía cạnh quan trọng nào được giới thiệu mà chưa được diễn giải chi tiết ở các mục, đồng thời phần giới thiệu in đậm tên mục từ và nêu ngay định nghĩa về chủ đề của mục từ ở câu đầu tiên.\n" else str = str.."<span style='color:red;'>Có vấn đề</span> - "..args['giới thiệu']..".\n" color="orange" end else str = str.."''<span style='color:red;'>Cần đánh giá mục giới thiệu.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|giới thiệu=ok</b>', nếu phần giới thiệu có đề cập tóm tắt đến những ý quan trọng ở các mục, không có khía cạnh quan trọng nào được giới thiệu mà chưa được diễn giải chi tiết ở các mục, đồng thời phần giới thiệu in đậm tên mục từ và nêu ngay định nghĩa về chủ đề của mục từ ở câu đầu tiên; hoặc '<b>|giới thiệu=[vấn đề]</b>' nếu còn có vấn đề ở mục giới thiệu.''\n" return p.progress(93,color,pt)..str..sign -- dừng ở đây end str = str.."===Tổng hợp===" if args['tổng hợp'] then if args['tổng hợp']=='ok' then str = str.."✅ Nội dung bám sát vào chủ đề, không có đoạn nào bị sa đà vào các chi tiết không quan trọng, tất cả đều theo văn phong tổng hợp.\n" else str = str.."<span style='color:red;'>Có vấn đề</span> - "..args['tổng hợp']..".\n" color="orange" end else str = str.."''<span style='color:red;'>Cần đánh giá .</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|tổng hợp=ok</b>', nếu nội dung bám sát vào chủ đề, không có đoạn nào bị sa đà vào các chi tiết không quan trọng, tất cả đều theo văn phong tổng hợp; hoặc '<b>|tổng hợp=[vấn đề]</b>' nếu còn có vấn đề như có đoạn bị đi vào chi tiết gây mất tính tổng hợp.''\n" return p.progress(95,color,pt)..str..sign -- dừng ở đây end str = str.."===Các hộp thông tin và các bản mẫu===" if args['hộp thông tin'] then if args['hộp thông tin']=='ok' then str = str.."✅ Các hộp thông tin và các bản mẫu phụ trợ chỉ chứa các dữ kiện, không nêu quan điểm, và có thể gồm hình minh họa, đều có chú thích nguồn kiểm chứng [[BKTT:Nguồn uy tín|uy tín]] ủng hộ cho thông tin đưa vào.\n" elseif args['hộp thông tin']=='không có' then str = str.."không có hộp thông tin hoặc bảng biểu từ các bản mẫu phụ trợ.\n" else str = str.."<span style='color:red;'>Có vấn đề</span> - "..args['hộp thông tin']..".\n" color="orange" end else str = str.."''<span style='color:red;'>Cần đánh giá.</span> Bổ sung vào bản mẫu bình duyệt đang sử dụng tham số '<b>|hộp thông tin=không có</b>'; hoặc '<b>|hộp thông tin=ok</b>', nếu các hộp thông tin và các bản mẫu phụ trợ chỉ chứa các dữ kiện, không nêu quan điểm, và có thể gồm hình minh họa, đều có chú thích nguồn kiểm chứng [[BKTT:Nguồn uy tín|uy tín]] ủng hộ cho thông tin đưa vào; hoặc '<b>|hộp thông tin=[vấn đề]</b>' nếu còn có vấn đề ở các hộp thông tin hoặc các bản mẫu phụ trợ.''\n" return p.progress(97,color,pt)..str..sign -- dừng ở đây end else str = str.."''<span style='color:red;'>Không thấy nội dung mục từ '"..pt.."'</span>''.\n" return p.progress(10,color,pt)..str..sign -- dừng ở đây end if args['kết thúc'] then if color=="orange" then return p.progress(100,color,pt)..str.. "\n'''Phần 3. Kết luận & Ký tên'''\n\n<span style='color:red;'>'''Chưa đạt'''</span>.\n" else return p.progress(100,color,pt)..str.. "\n'''Phần 3. Kết luận & Ký tên'''\n\n<span style='color:green;'>'''Đạt'''</span>.\n" end else str = str.."''<span style='color:red;'>Cần kết thúc</span>. Hãy sao chép đoạn mã sau vào mục Bình duyệt ở trang thảo luận của mục từ (thay thế cho phần bình duyệt đang có của bạn) rồi lưu; sau đó ký tên bằng cách gõ ~~~~ ở bên dưới Phần 3 rồi lưu.''\n {{subst:#invoke:BD|bd|\n" if args['chủ đề'] then str = str.." |chủ đề="..args['chủ đề'].."\n" end if args['nổi 1'] then str = str.." |nổi 1="..args['nổi 1'].."\n" end if args['nổi 2'] then str = str.." |nổi 2="..args['nổi 2'].."\n" end if args['tách'] then str = str.." |tách="..args['tách'].."\n" end if args['tách vì'] then str = str.." |tách vì="..args['tách vì'].."\n" end if args['tên 1'] then str = str.." |tên 1="..args['tên 1'].."\n" end str = str.." |bản quyền="..args['bản quyền'].."\n" str = str.." |tập tin="..args['tập tin'].."\n" local i = 1 while args['câu '..i] do str = str.." |câu "..i.."="..args['câu '..i].."\n" if args['mục câu '..i] then str = str.." |mục câu "..i.."="..args['mục câu '..i].."\n" end i = i + 1 end str = str.." |bố cục="..args['bố cục'].."\n" str = str.." |giới thiệu="..args['giới thiệu'].."\n" str = str.." |tổng hợp="..args['tổng hợp'].."\n" str = str.." |hộp thông tin="..args['hộp thông tin'].."\n" str = str.." |kết thúc=ok\n }}\n" return p.progress(99,color,pt)..str.."\n'''Phần 3. Kết luận & Ký tên'''\n"..sign -- dừng ở đây end end return p