Модуль:Повторное использование
Из Википедии, бесплатной энциклопедии
Модуль реализует функционал шаблона {{Повторное использование}} и является его неотъемлемой частью.
local MessageBox = require('Модуль:Message box') local p = {} local function row(args, i) local text = "" local afd = args["к удалению" .. i] if (afd or args["к объединению" .. i]) then text = string.format("%s\n*Объединено", text) else local action = args["действие" .. i] if not action then action = "Скопировано" end action = mw.ustring.gsub(action, '^%l', mw.ustring.upper) text = string.format("%s\n*%s:", text, action) end local from = args["из" .. i] or "" text = string.format("%s [%s %s] (", text, tostring(mw.uri.fullUrl(from, {redirect = "no"} )), from) local from_oldid = args["исходный oldid" .. i] if (from_oldid) then text = string.format("%s[%s %s], ", text, tostring(mw.uri.fullUrl(from, {oldid = from_oldid} )), from_oldid) end local to = args["в".. i] or "" text = string.format("%s[%s история]) → [[%s]]", text, tostring(mw.uri.fullUrl(from, {action = "history"} )), to) local diff = args["diff" .. i] if (diff) then text = string.format("%s ([%s diff])", text, diff) elseif (args["целевой oldid" .. i] or args["целевой diff".. i]) then local to_diff = args["целевой diff".. i] or "next" local to_oldid = args["целевой oldid" .. i] or "prev" text = string.format("%s ([%s diff])", text, tostring(mw.uri.fullUrl(to, {diff=to_diff, oldid = to_oldid} ))) end local date = args["дата" .. i] if (date) then text = string.format("%s от %s", text, date) end if (afd) then if (mw.ustring.match(afd, "Википедия:", 1 )) then --If no venue is given add AfD prefix text = string.format("%s после [[%s|номинирования на удаление]]", text, afd) else text = string.format("%s после [[Википедия:К удалению/%s|номинирования на удаление]]",text,afd) end end return text end local function list(args) local text = "" local from = args["из"] local from1 = args["из1"] if from then text = string.format("%s%s", text, row(args, "")) elseif from1 then text = string.format("%s%s", text, row(args, 1)) else return '<div class="error">Не указан параметр "из1" (или "из").</div>' end local i = 2 while i > 0 do if not args["из" .. i] then break end text = string.format("%s%s", text, row(args, i)) i = i + 1 --Check if from(i+1) exist end return text end local function multiText(args) local pageType if (mw.title.getCurrentTitle():inNamespace(1)) then pageType = "статью" else pageType = "страницу" end local historyList = list(args) if (args["collapse"] == 'yes') then local collapsedText = '<table style="width:100%%; background: transparent;" class="mw-collapsible mw-collapsed">\n<tr><th>Страницы, в рамках которых было копирование:</th></tr>\n<tr><td> %s </td></tr></table>' historyList = string.format(collapsedText, historyList) end local text = "Содержимое было скопировано/перемещено/переведено из или в текущую %s; смотрите список ниже. Исходная страница теперь служит для [[Википедия:Копирование внутри Википедии|предоставления атрибуции]] для содержимого, добавленного в целевую статью, и не должна удаляться до тех пор, пока существует целевая статья со скопированным/перемещённым/переведённым в неё содержимым. Для атрибуции и просмотра сделанных изменений смотрите ссылки на историю правок ниже. %s" text = string.format(text, pageType, historyList) return text end local function categories(args) local nocat = args["nocat"] if nocat then return '' end local title = mw.title.getCurrentTitle() local talkNamespaces = mw.site.talkNamespaces local isTalkPage = false for _, nm in ipairs(talkNamespaces) do if nm.id == title.namespace then isTalkPage = true break end end if not isTalkPage then return '' end local text = "[[Категория:Страницы Википедии, использующие шаблон повторного использования]]" local i = 1 while i > 0 do if not args["из" .. i] then break end if not (args["целевой oldid" .. i] or args["целевой diff".. i]) then text = text .. "%s[[Категория:Страницы Википедии, использующие шаблон повторного использования без oldid]]" break end i = i + 1 end local to_oldid = args["целевой oldid"] or args["целевой diff"] or args["diff"] or args["целевой oldid1"] or args["целевой diff1"] or args["diff1"] local from_oldid = args["исходный oldid"] or args["исходный oldid1"] if (not from_oldid) or (not to_oldid) then text = text .. "[[Категория:Страницы Википедии, использующие шаблон повторного использования без oldid]]" end return text end local function BannerText(args) --Checks if there are multiple rows local text text = multiText(args) .. categories(args) return text end local function renderBanner(args) return MessageBox.main('tmbox', { class = "copiednotice", small = args["small"], image = '[[File:Splitsection.svg|50px]]', text = BannerText(args) }) end function p.main(frame) local getArgs = require('Модуль:Arguments').getArgs local args = getArgs(frame) return renderBanner(args) end return p