模块:分类重定向

来自萌娘共享
跳转至: 导航搜索

此模块的文档可以在模块:分类重定向/doc创建

  1. local module = {}
  2. local getArgs = require('Module:Arguments').getArgs
  3. function _error(text)
  4. local frame = mw.getCurrentFrame()
  5. return "\n" .. frame:expandTemplate{
  6. title = "info",
  7. args = {
  8. class = "error",
  9. color = "#CC0000",
  10. leftimage = "[[File:Warning.png|50px|link=zhmoe:Help:重定向页面#分类重定向]]",
  11. text = text
  12. }
  13. }
  14. end
  15. function _main(args)
  16. local frame = mw.getCurrentFrame()
  17. -- 检查是否是模板空间
  18. local page = mw.title.getCurrentTitle()
  19. if page.namespace ~= 14 then
  20. return "[[Category:错误的已重定向分类|-非属分类]]" .. _error("分类重定向错误:本页面不属于分类页面。请不要使用{{[[Template:分类重定向|分类重定向]]}}模板。")
  21. end
  22. local args1Target = mw.title.new(args[1], 'Category')
  23. -- 检查是否使用原生重定向
  24. local redirectTarget = page.redirectTarget
  25. if not redirectTarget then
  26. return "[[Category:错误的已重定向分类|R重定向错误]]" .. _error("分类重定向错误:本页面未使用MediaWiki原生的重定向。请在源代码最开始加入:<pre>#重定向 &#91;&#91;:Category:" .. args[1] .. "&#93;&#93;</pre>")
  27. end
  28. if redirectTarget.fullText ~= args1Target.fullText then
  29. return "[[Category:错误的已重定向分类|D重定向目标不一致]]" .. _error("分类重定向错误:MediaWiki原生的重定向与模板的重定向指向不同页面。请检查源代码。")
  30. end
  31. -- 检查是否与自身相同
  32. if page.text == args[1] then
  33. return "[[Category:错误的已重定向分类|*同名称]]" .. _error("分类重定向错误:本页面重定向到了自己。请检查源代码。")
  34. end
  35. -- 检查是否存在
  36. if not args1Target.exists then
  37. return "[[Category:错误的已重定向分类|!不存在]]" .. _error("分类重定向错误:重定向目标不存在。请检查源代码。")
  38. else
  39. local output = "[[Category:已重定向的分类|" .. (args[2] or page.text) .. "]]\n" .. frame:expandTemplate{
  40. title = "info",
  41. args = {
  42. color = "gray",
  43. backgroundColor = "#E4D8FF",
  44. leftimage = "[[Image:Redirect arrow zh.svg|52px|link=]]",
  45. text = "'''本分类已重定向至:<span id=\"SoftRedirect\">-{[[:Category:" .. args[1] .. "]]}-</span>'''\n:请注意,本分类不应该包括任何页面,所有页面都应该重新被分类至[[:Category:" .. args[1] .. "|Category:" .. args[1] .. "]]。<br>欢迎您协助进行重新分类,如需更多帮助请参阅[[zhmoe:Help:重定向页面#分类重定向|分类重定向的说明]]。但请不要因为分类中没有内容而删除本分类,以防止同名分类不断被创建。"
  46. }
  47. }
  48. -- 检查是否清空
  49. if mw.site.stats.pagesInCategory(page.text, "all") > 0 then
  50. output = output .. "[[Category:尚未清空的已重定向分类]]" .. _error("本分类尚未清空。请检查本分类下的页面并修改为正确的分类。")
  51. end
  52. return output
  53. end
  54. end
  55. function module.main(frame)
  56. local args = getArgs(frame)
  57. return _main(args)
  58. end
  59. function module.add(frame)
  60. local page = mw.title.getCurrentTitle()
  61. if page.namespace == 14 and page.redirectTarget then
  62. return "{{cr|" .. page.redirectTarget.text .. "}}"
  63. end
  64. end
  65. return module