Module:Redirect hatnote: Difference between revisions
From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Content deleted Content added
Updated from sandbox with a couple of comment tweaks; now uses Module:Hatnote list for a good chunk of its functionality. |
m Protected "Module:Redirect hatnote": High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) |
||
(9 intermediate revisions by 4 users not shown) | |||
Line 13: | Line 13: | ||
local p = {} |
local p = {} |
||
-------------------------------------------------------------------------------- |
|||
-- Helper functions |
|||
-------------------------------------------------------------------------------- |
|||
local function getTitle(...) |
local function getTitle(...) |
||
--Calls mw.title.new and returns either a title object, or nil on error |
|||
local success, titleObj = pcall(mw.title.new, ...) |
local success, titleObj = pcall(mw.title.new, ...) |
||
return success and titleObj or nil |
|||
return titleObj |
|||
⚫ | |||
return nil |
|||
⚫ | |||
end |
end |
||
-------------------------------------------------------------------------------- |
|||
-- Main functions |
|||
-------------------------------------------------------------------------------- |
|||
function p.redirect(frame) |
function p.redirect(frame) |
||
Line 46: | Line 51: | ||
local redirect = {} |
local redirect = {} |
||
for i = 1, numRedirects do |
for i = 1, numRedirects do |
||
-- Return an error if |
-- Return an error if a redirect parameter is missing. |
||
if not args[i] then |
if not args[i] then |
||
return mHatnote.makeWikitextError( |
return mHatnote.makeWikitextError( |
||
' |
'missing redirect parameter', |
||
'Template:Redirect#Errors', |
'Template:Redirect#Errors', |
||
args.category |
args.category |
||
Line 59: | Line 64: | ||
local formattedRedirect = {} |
local formattedRedirect = {} |
||
for k,v in pairs(redirect) do |
for k,v in pairs(redirect) do |
||
formattedRedirect[k] = |
formattedRedirect[k] = mHatnote.quote(v) |
||
end |
end |
||
local text = { |
local text = { |
||
mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'redirects' or 'redirect') .. ' here.', |
mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'redirects' or 'redirect') .. ' here.', |
||
mHatList._forSee(args, #redirect + 1, {title = redirect[1]}) |
mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text}) |
||
} |
} |
||
text = table.concat(text, ' ') |
text = table.concat(text, ' ') |
||
-- Functionality for adding categories |
-- Functionality for adding categories |
||
local categoryTable = {} |
local categoryTable = {} |
||
function addCategory(cat) |
local function addCategory(cat) |
||
if cat and cat ~= '' then |
if cat and cat ~= '' then |
||
-- Add by index to avoid duplicates |
-- Add by index to avoid duplicates |
||
Line 76: | Line 81: | ||
--Generate tracking categories |
--Generate tracking categories |
||
local mhOptions = {} |
local mhOptions = {} |
||
local redirTitle |
|||
for k,v in pairs(redirect) do |
for k,v in pairs(redirect) do |
||
-- We don't need a tracking category if the template invocation has been |
-- We don't need a tracking category if the template invocation has been |
||
Line 82: | Line 88: | ||
and currentTitle.namespace == 0 or currentTitle.namespace == 14 |
and currentTitle.namespace == 0 or currentTitle.namespace == 14 |
||
then |
then |
||
redirTitle = redirectTitle or getTitle(v) |
|||
if not |
if not redirTitle or not redirTitle.exists then |
||
addCategory('Missing redirects') |
addCategory('Missing redirects') |
||
elseif not |
elseif not redirTitle.isRedirect then |
||
if string.find(redirTitle:getContent(), '#invoke:RfD') then |
|||
⚫ | |||
addCategory('Articles with redirect hatnotes impacted by RfD') |
|||
⚫ | |||
⚫ | |||
⚫ | |||
else |
else |
||
local |
local target = targetTitle or redirTitle.redirectTarget |
||
if target and target ~= currentTitle then |
|||
targetTitle = targetTitle or target and getTitle(target) |
|||
if targetTitle and targetTitle ~= currentTitle then |
|||
addCategory('Articles with redirect hatnotes needing review') |
addCategory('Articles with redirect hatnotes needing review') |
||
end |
end |
||
Line 99: | Line 107: | ||
-- Generate the options to pass to [[Module:Hatnote]]. |
-- Generate the options to pass to [[Module:Hatnote]]. |
||
if currentTitle.namespace == 0 and not mhOptions.selfref |
if currentTitle.namespace == 0 and not mhOptions.selfref |
||
and |
and redirTitle and redirTitle.namespace ~= 0 |
||
then |
then |
||
-- We are on a mainspace page, and the hatnote starts with something |
-- We are on a mainspace page, and the hatnote starts with something |