local module = {} local getArgs = require('Module:Arguments').getArgs function _error(text) local frame = mw.getCurrentFrame() return frame:expandTemplate{ title = "info", args = { class = "error", color = "#CC0000", leftimage = "[[File:Warning.png|50px|link=Help:重定向页面#分类重定向]]", text = text } } end function _main(args) local frame = mw.getCurrentFrame() -- 检查是否是模板空间 local page = mw.title.getCurrentTitle() if page.namespace ~= 14 then return "[[Category:错误的已重定向分类|-非属分类]]" .. _error("分类重定向错误:本页面不属于分类页面。请不要使用{{[[Template:分类重定向|分类重定向]]}}模板。") end local args1Target = mw.title.new(args[1], 'Category') -- 检查是否使用原生重定向 local redirectTarget = page.redirectTarget if not redirectTarget then return "[[Category:错误的已重定向分类|R重定向错误]]" .. _error("分类重定向错误:本页面未使用MediaWiki原生的重定向。请在源代码最开始加入:<pre>#重定向 [[:Category:" .. args[1] .. "]]</pre>") end if redirectTarget.fullText ~= args1Target.fullText then return "[[Category:错误的已重定向分类|D重定向目标不一致]]" .. _error("分类重定向错误:MediaWiki原生的重定向与模板的重定向指向不同页面。请检查源代码。") end -- 检查是否与自身相同 if page.text == args[1] then return "[[Category:错误的已重定向分类|*同名称]]" .. _error("分类重定向错误:本页面重定向到了自己。请检查源代码。") end -- 检查是否存在 if not args1Target.exists then return "[[Category:错误的已重定向分类|!不存在]]" .. _error("分类重定向错误:重定向目标不存在。请检查源代码。") else local output = "[[Category:已重定向的分类|" .. (args[2] or page.text) .. "]]" .. frame:expandTemplate{ title = "info", args = { color = "gray", backgroundColor = "#E4D8FF", leftimage = "[[Image:Redirect arrow zh.svg|52px|link=]]", text = "'''本分类已重定向至:<span id=\"SoftRedirect\">-{[[:Category:" .. args[1] .. "]]}-</span>'''\n:请注意,本分类不应该包括任何条目页面,所有条目页面都应该重新被分类至[[:Category:" .. args[1] .. "|Category:" .. args[1] .. "]]。<br>欢迎您协助进行重新分类,如需更多帮助请参阅[[Help:重定向页面#分类重定向|分类重定向的说明]]。但请不要因为分类中没有内容而删除本分类,以防止同名分类不断被创建。" } } -- 检查是否清空 if mw.site.stats.pagesInCategory(page.text, "all") > 0 then output = output .. "[[Category:尚未清空的已重定向分类]]" .. _error("本分类尚未清空。请检查本分类下的页面并修改为正确的分类。") end return output end end function module.main(frame) local args = getArgs(frame) return _main(args) end function module.add(frame) local page = mw.title.getCurrentTitle() if page.namespace == 14 and page.redirectTarget then return "{{cr|" .. page.redirectTarget.text .. "}}" end end return module