Wiki - KEONHACAI COPA

Thành viên:NgocAnMaster/Biểu quyết xóa bài cũ/mô đun

Tài liệu

Đây là mã nguồn cho trang Thành viên:NgocAnMaster/Biểu quyết xóa bài cũ dưới dạng wikitext. Xem thêm Mô đun:Old XfD multitrang chỗ thử của nó.

local yesno = require('Module:Yesno') local mMessageBox = require('Module:Message box') local TEMPLATE_PAGE = 'Template:Đã biểu quyết giữ'


-- Helper functions


local function exists(page) local success, exists = pcall(function () local title = mw.title.new(page) return title.exists end) return success and exists end

local function getAfdPage(page) if page and mw.title.new(page) then if mw.title.new(page).namespace ~= 0 then return page else return 'Wikipedia:Biểu quyết xoá bài/' .. page end else return nil end end

local function getVfdPage(page) if page and mw.title.new(page) then if mw.title.new(page).rootPageTitle.fullText == 'Wikipedia:Votes for deletion' then return page else return 'Wikipedia:Votes for deletion/' .. page end else return nil end end

local function makeWikilink(page, display) display = display or 'discussion' if page then return string.format('%s', page, display) else return display --probably a bad title end end

local function makeUrlLink(page, display) display = display or 'discussion' return string.format('[%s %s]', page, display) end

local function pageTypeName(title) local display = mw.ustring.lower(title.subjectNsText) local pageTypes = { [] = 'Bài viết', ['thành viên'] = 'Trang thành viên', ['wikipedia'] = 'Trang dự án', ['mediawiki'] = 'Trang giao diện', ['trợ giúp'] = 'Trang trợ giúp' } if pageTypes[display] then display = pageTypes[display] end return display end

local function cleanupTitle(title) if not title then return title end title = mw.uri.decode(title, 'PATH') title = string.gsub(title, '|.*', ) title = string.gsub(title, '[%[%]{}]', ) return title end


-- OldAfdMulti class


local OldAfdMulti = {} OldAfdMulti.__index = OldAfdMulti

function OldAfdMulti.new(args) local self = setmetatable({}, OldAfdMulti) self.currentTitle = mw.title.getCurrentTitle()

-- Preprocess the row args for easier looping. self.rowData = {} for k, v in pairs(args) do if type(k) == 'string' then local prefix, num = k:match('^(.-)([1-9][0-9]*)$') if prefix and num then num = tonumber(num) if prefix == 'result' or prefix == 'date' or prefix == 'page' or prefix == 'link' or prefix == 'caption' or prefix == 'votepage' or prefix == 'merge' then self.rowData[num] = self.rowData[num] or {} self.rowData[num][prefix] = v if v and v ~= and prefix=='merge' then self.isMerge = true end end end end end -- Set aliases for parameters ending in "1". if self.rowData[1] then self.rowData[1].result = self.rowData[1].result or args.result self.rowData[1].date = self.rowData[1].date or args.date self.rowData[1].page = self.rowData[1].page or args.page self.rowData[1].votepage = self.rowData[1].votepage or args.votepage self.rowData[1].link = self.rowData[1].link or args.link self.rowData[1].caption = self.rowData[1].caption or args.caption self.rowData[1].merge = self.rowData[1].merge or args.merge elseif args.result or args.date or args.page or args.votepage or args.link or args.caption or args.merge then self.rowData[1] = { result = args.result, date = args.date, page = args.page, votepage = args.votepage, link = args.link, caption = args.caption, merge = args.merge } end -- Remove any gaps in the array we made. local function compressSparseArray(t) local ret, nums = {}, {} for num, data in pairs(t) do nums[#nums + 1] = num end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end self.rowData = compressSparseArray(self.rowData) -- Set aliases that apply to all of the data tables. for i, data in ipairs(self.rowData) do data.page = data.page or data.votepage data.page = cleanupTitle(data.page) data.votepage = nil end

-- Set collapsedness self.collapse = tonumber(args.collapse) if not self.collapse then self.collapse = yesno(args.collapse) end

-- Set other properties self.isNumbered = yesno(args.numbered) self.isSmall = yesno(args.small) self.pageType = args.type or pageTypeName(self.currentTitle) if args.merge and args.merge ~= then self.isMerge = true end

return self end

function OldAfdMulti:renderResult(result) return result or "Giữ" end

function OldAfdMulti:renderDate(date) if date then return date else self.hasMissingDate = true return string.format( '%sthiếu ngày%s', mw.text.nowiki('['), TEMPLATE_PAGE, mw.text.nowiki(']') ) end end

function OldAfdMulti:renderPageText(linkFunc, page, caption) return string.format(', see %s.', linkFunc(page, caption)) end

function OldAfdMulti:renderRow(result, date, link, merge) local result = self:renderResult(result) local date = self:renderDate(date) local mergeText = if merge and merge ~= then mergeText = string.format('Hợp nhất với %s: ', merge) end if link then return string.format('%s%s, %s, see %s.', mergeText, result, date, link) else return string.format('%s%s, %s', mergeText, result, date) end end

function OldAfdMulti:renderFirstRow(data) local link if data.link then link = makeUrlLink(data.link, data.caption) else local page = data.page or self.currentTitle.text link = makeWikilink(getAfdPage(page), data.caption) end return self:renderRow(data.result, data.date, link, data.merge) end

function OldAfdMulti:renderSubsequentRow(data) local link if data.page then link = makeWikilink(getAfdPage(data.page), data.caption) elseif data.link then link = makeUrlLink(data.link, data.caption) end return self:renderRow(data.result, data.date, link, data.merge) end

function OldAfdMulti:renderRows() local root = mw.html.create() local nRows = #self.rowData local i = nRows

local nCollapsedRows if type(self.collapse) == 'number' then nCollapsedRows = self.collapse elseif self.collapse then nCollapsedRows = nRows else nCollapsedRows = 0 end local hasNormalRows = nRows - nCollapsedRows > 0

local function makeList(isCollapsed, header) local tableRoot = root:tag('table') tableRoot :addClass(isCollapsed and 'collapsible collapsed' or nil) :css('width', '100%') :css('background-color', '#f8eaba') if header then tableRoot :tag('tr') :tag('th') :wikitext(header) end return tableRoot :tag('tr') :tag('td') :tag(self.isNumbered and 'ol' or 'ul') end

local function renderRow(html, method, data) html :tag('li') :attr('value', self.isNumbered and i or nil) :wikitext(self[method](self, data)) end

-- Render normal rows if hasNormalRows then local normalList = makeList(false) while i > 1 and i > nCollapsedRows do renderRow(normalList, 'renderSubsequentRow', self.rowData[i]) i = i - 1 end if i == 1 and i > nCollapsedRows then renderRow(normalList, 'renderFirstRow', self.rowData[i]) i = i - 1 end end

-- Render collapsed rows if nCollapsedRows > 0 then local header if hasNormalRows then header = 'Các lần thảo luận xóa trước đây:' elseif nRows > 1 then header = 'Các lần thảo luận xóa:' else header = 'Thảo luận xóa:' end local collapsedList = makeList(true, header) while i > 1 do renderRow(collapsedList, 'renderSubsequentRow', self.rowData[i]) i = i - 1 end renderRow(collapsedList, 'renderFirstRow', self.rowData[i]) end

return tostring(root) end

function OldAfdMulti:renderFirstRowOnly() local data = self.rowData[1] or {} local caption = data.caption or 'thảo luận' local link if data.link then link = makeUrlLink(data.link, caption) else local page = data.page or self.currentTitle.text if exists(getAfdPage(page)) then link = makeWikilink(getAfdPage(page), caption) elseif exists(getVfdPage(page)) then link = makeWikilink(getVfdPage(page), caption) else link = caption -- Make this an error? end end local result = self:renderResult(data.result or "giữ") return string.format( 'Kết quả của %s này là %s.', link, result ) end

function OldAfdMulti:renderBannerText() local nRows = #self.rowData local ret = {} if self.isMerge then if nRows < 1 or not self.rowData[1].date then ret[#ret + 1] = string.format( '%s này được cân nhắc hợp nhất với %s.', self.pageType, self.rowData[1].merge ) elseif nRows == 1 and self.rowData[1].date then ret[#ret + 1] = string.format( '%s này được cân nhắc hợp nhất với %s vào %s.', self.pageType, self.rowData[1].merge, self.rowData[1].date ) else ret[#ret + 1] = string.format( '%s này được cân nhắc để xóa hoặc hợp nhất.', self.pageType ) end else if nRows < 1 or not self.rowData[1].date then ret[#ret + 1] = string.format( '%s này đã từng được đề cử xóa.', self.pageType ) elseif nRows == 1 and self.rowData[1].date then ret[#ret + 1] = string.format( '%s này đã từng được đề cử xóa vào %s.', self.pageType, self.rowData[1].date ) else ret[#ret + 1] = string.format( '%s này đã từng được đề cử xóa.', self.pageType ) end end

if nRows > 1 then ret[#ret + 1] = ' ' if self.isSmall then ret[#ret + 1] = 'Xem lại các thảo luận trước đây trước khi cân nhắc đề cử lại:' else ret[#ret + 1] = 'Vui lòng xem lại các thảo luận trước đây nếu bạn muốn cân nhắc đề cử lại:' end ret[#ret + 1] = '\n' ret[#ret + 1] = self:renderRows() else ret[#ret + 1] = ' ' ret[#ret + 1] = self:renderFirstRowOnly() end return table.concat(ret) end

function OldAfdMulti:renderBanner() return mMessageBox.main('tmbox', { small = self.isSmall, type = 'notice', image = 'Biểu quyết xóa bài', smallimage = 'none', text = self:renderBannerText() }) end

function OldAfdMulti:renderTrackingCategories() local ret = {} if self.hasMissingDate and self.currentTitle.isTalkPage then ret[#ret + 1] = end return table.concat(ret) end

function OldAfdMulti:__tostring() return self:renderBanner() .. self:renderTrackingCategories() end


-- Exports


local p = {}

function p._main(args) local afd = OldAfdMulti.new(args) return tostring(afd) end

function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = TEMPLATE_PAGE }) return p._main(args) end

return p

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:NgocAnMaster/Bi%E1%BB%83u_quy%E1%BA%BFt_x%C3%B3a_b%C3%A0i_c%C5%A9/m%C3%B4_%C4%91un