Khác biệt giữa các bản “Mô đun:BD”
Dòng 234: | Dòng 234: | ||
if pos then | if pos then | ||
lastpos = pos | lastpos = pos | ||
− | local l = content:find(" ",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 | 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).."'): <span style='color:green;'>'''Đạt'''</span> - 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" | str = str.."** Câu "..i.." (đoạn cuối '..."..content:sub(l,pos-1).."'): <span style='color:green;'>'''Đạt'''</span> - 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 | 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" | + | 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)..str..sign -- dừng ở đây | return p.progress(10+math.ceil(pos/cl*80),color)..str..sign -- dừng ở đây | ||
end | end | ||
Dòng 251: | Dòng 251: | ||
if pos then | if pos then | ||
lastpos = pos | lastpos = pos | ||
− | local l = content:find(" ",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" | 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" | color="orange" |
Phiên bản lúc 16:38, ngày 9 tháng 11 năm 2020
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 p.progress = function( p , c) 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:"..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 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 return math.min(e1,e2,e3) end -- Hàm chính, hiển thị nội dung bình duyệt p.bd = function( frame ) local sign = "\n'''Phần 3. Kết luận & Ký tên'''\n\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:getParent().args) do 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 = "Người bình duyệt ký tên bên dưới đây 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\n'''Phần 1. Đánh giá về chủ đề của mục từ'''\n\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|chủ đề=[tên tương đương]}} để 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.."<span style='color:green;'>'''Đạt'''</span> - xác nhận chủ đề đạt độ nổi bật, do 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)..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)..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 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" return p.progress(0,color)..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.."<span style='color:green;'>'''Đạt'''</span> - Xác nhận đã tìm kiế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.."<span style='color:green;'>'''Đạt'''</span> - Xác nhận đã tìm kiế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ố '|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" return p.progress(5,color)..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ố '|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" return p.progress(5,color)..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'''Phần 2. Đánh giá về nội dung của mục từ'''\n\n" str = str.."* Tên mục từ: " if p.inBKTT(pt) then str = str.."<span style='color:green;'>'''Đạt'''</span> - 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.."<span style='color:green;'>'''Đạt'''</span> - Xác nhận 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ố '|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" return p.progress(7,color)..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.."* Kiểm chứng & Văn phong :\n" local i = 1 local pos = 0 local lastpos = 0 while args['câu '..i] do if args['câu '..i]:sub(0,2)=='ok' then 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).."'): <span style='color:green;'>'''Đạt'''</span> - 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)..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)..str..sign -- dừng ở đây 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)..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)..str..sign -- dừng ở đây end end i = i + 1 end local f = p.ket(content,pos) -- vị trí hết câu, tính từ pos if f then 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ố '|câu "..i.."=ok"..(f+1).."' 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 '|câu "..i.."="..(f+1).." [vấn đề còn tồn tại]' nếu vẫn có vấn đề với chú thích kiểm chứng và văn phong.\n" return p.progress(10+math.ceil(f/cl*80),color)..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.."<span style='color:green;'>'''Đạt'''</span> - 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ừ]], phần giới thiệu có đề cập tóm tắt đến ý quan trọng ở các mục, và có 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ố cục=ok', 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ừ]], phần giới thiệu có đề cập tóm tắt đến ý quan trọng ở các mục, và có mục thông tin tham khảo ở cuối; hoặc '|bố cục=[vấn đề]' nếu còn có vấn đề ở bố cục.\n" return p.progress(91,color)..str..sign -- dừng ở đây end str = str.."* Tổng hợp: " str = str.."* Bản quyền: " 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)..str..sign -- dừng ở đây end if color=="orange" then return p.progress(100,color)..str..sign else return p.progress(100,color)..str.. "\n'''Phần 3. Kết luận & Ký tên'''\n\n<span style='color:green;'>'''Đạt'''</span>.\n" end end return p