-------------------------------------------------------------------------------
-- Configuration data for [[Module:Article history]]
-------------------------------------------------------------------------------
return {
-------------------------------------------------------------------------------
-- Actions
-------------------------------------------------------------------------------
actions = {
FAC = {
id = 'FAC',
name = 'Featured article candidate',
results = {
promoted = {
text = 'Promoted',
aliases = {'pass', 'passed'}
},
['not promoted'] = {
text = 'Not promoted',
aliases = {'fail', 'failed'}
}
},
validStatuses = {
FFAC = true,
FA = true,
FFA = true
}
},
FAR = {
id = 'FAR',
name = 'Featured article review',
aliases = {'FARC'},
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'pass', 'passed', 'keep'}
},
demoted = {
id = 'demoted',
text = 'Demoted',
aliases = {'fail', 'failed', 'remove', 'removed'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
}
},
validStatuses = {
FA = true,
FFA = true
},
categories = {
function (actionObj, articleHistoryObj)
local result = actionObj:getResult()
if result == 'demoted' or result == 'merged' then
local status = articleHistoryObj:getStatusId()
local sortKey = articleHistoryObj.currentTitle.subjectPageTitle.prefixedText
if status == 'FA' or status == 'FL' then
sortKey = '#' .. sortKey
end
return 'Wikipedia former featured articles', sortKey
end
end
}
},
BP = {
id = 'BP',
name = 'Brilliant prose',
results = {
nominated = {
id = 'nominated',
text = 'Nominated',
aliases = {'pass', 'promoted', 'nom'}
}
},
validStatuses = {
}
},
RBP = {
id = 'RBP',
name = 'Refreshing brilliant prose',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'pass', 'passed', 'keep'}
},
['not kept'] = {
id = 'not kept',
text = 'Not kept',
aliases = {'fail', 'failed', 'remove', 'removed', 'demoted'}
}
},
validStatuses = {
FA = true,
FFAC = true
},
categories = {
function (actionObj, articleHistoryObj)
if actionObj:getResult() == 'not kept' then
return 'Wikipedia former brilliant prose', articleHistoryObj.currentTitle.text
end
end
}
},
FLC = {
id = 'FLC',
name = 'Featured list candidate',
results = {
promoted = {
text = 'Promoted',
aliases = {'pass', 'passed'}
},
['not promoted'] = {
text = 'Not promoted',
aliases = {'fail', 'failed'}
}
},
validStatuses = {
FFLC = true,
FL = true,
FFL = true
}
},
FLR = {
id = 'FLR',
name = 'Featured list removal candidate',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'pass', 'passed', 'keep'}
},
demoted = {
id = 'demoted',
text = 'Demoted',
aliases = {'fail', 'failed', 'remove', 'removed'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
}
},
validStatuses = {
FL = true,
FFL = true
},
categories = {
function (actionObj, articleHistoryObj)
local result = actionObj:getResult()
if result == 'demoted' or result == 'merged' then
local sortKey
if articleHistoryObj:getStatusId() == 'FL' then
sortKey = '#' .. articleHistoryObj.currentTitle.subjectPageTitle.prefixedText
else
sortKey = articleHistoryObj.currentTitle.text
end
return 'Wikipedia former featured lists', sortKey
end
end
}
},
FTC = {
id = 'FTC',
name = 'Featured topic candidate',
results = {
promoted = {
id = 'promoted',
text = 'Promoted',
aliases = {'pass', 'passed'}
},
['not promoted'] = {
id = 'not promoted',
text = 'Not promoted',
aliases = {'fail', 'failed'}
}
},
validStatuses = false, -- Any status
},
FTR = {
id = 'FTR',
name = 'Featured topic removal candidate',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'pass', 'passed', 'keep'}
},
demoted = {
id = 'demoted',
text = 'Demoted',
aliases = {'fail', 'failed', 'remove', 'removed'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
}
},
validStatuses = false, -- Any status
},
FPOC = {
id = 'FPOC',
name = 'Featured portal candidate',
results = {
promoted = {
id = 'promoted',
text = 'Promoted',
aliases = {'pass', 'passed'}
},
['not promoted'] = {
id = 'not promoted',
text = 'Not promoted',
aliases = {'fail', 'failed'}
}
},
validStatuses = {
FFPOC = true,
FPO = true,
FFPO = true
}
},
FPOR = {
id = 'FPOR',
name = 'Featured portal review',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'pass', 'passed', 'keep'}
},
demoted = {
id = 'demoted',
text = 'Demoted',
aliases = {'fail', 'failed', 'remove', 'removed'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
}
},
validStatuses = {
FPO = true,
FFPO = true
}
},
GAN = {
id = 'GAN',
name = 'Good article nominee',
aliases = {'GAC'},
results = {
listed = {
id = 'listed',
text = 'Listed',
aliases = {'pass', 'passed', 'promoted'}
},
['not listed'] = {
id = 'not listed',
text = 'Not listed',
aliases = {'fail', 'failed', 'not promoted'}
}
},
validStatuses = {
FGAN = true,
GA = true,
DGA = true,
FFAC = true,
FA = true,
FFA = true
},
categories = {
function (actionObj, articleHistoryObj)
if actionObj:getResult() == 'not listed' then
local status = articleHistoryObj:getStatusId()
if status ~= 'FA'
and status ~= 'GA'
and status ~= 'FFA'
then
return 'Former good article nominees', articleHistoryObj.currentTitle.text
end
end
end
}
},
GAR = {
id = 'GAR',
name = 'Good article reassessment',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'pass', 'passed', 'keep'}
},
delisted = {
id = 'delisted',
text = 'Delisted',
aliases = {'fail', 'failed'}
},
listed = {
id = 'listed',
text = 'Listed'
},
['not listed'] = {
id = 'not listed',
text = 'Not listed'
}
},
validStatuses = {
GA = true,
DGA = true,
FFAC = true,
FA = true,
FFA = true
},
categories = {
function (actionObj, articleHistoryObj)
if actionObj:getResult() == 'delisted' then
local status = articleHistoryObj:getStatusId()
if status ~= 'FA'
and status ~= 'GA'
then
return 'Delisted good articles', articleHistoryObj.currentTitle.text
end
end
end
}
},
GTC = {
id = 'GTC',
name = 'Good topic candidate',
results = {
promoted = {
id = 'promoted',
text = 'Promoted',
aliases = {'pass', 'passed'}
},
['not promoted'] = {
id = 'not promoted',
text = 'Not promoted',
aliases = {'fail', 'failed'}
}
},
validStatuses = false
},
GTR = {
id = 'GTR',
name = 'Good topic removal candidate',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'pass', 'passed', 'keep'}
},
demoted = {
id = 'demoted',
text = 'Demoted',
aliases = {'fail', 'failed', 'remove', 'removed'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
}
},
validStatuses = false
},
PR = {
id = 'PR',
name = 'Peer review',
results = {
reviewed = {
id = 'reviewed',
text = 'Reviewed',
},
['not reviewed'] = {
id = 'not reviewed',
text = 'Not reviewed',
}
},
validStatuses = false,
categories = {'Old requests for peer review'}
},
WPR = {
id = 'WPR',
name = function (actionObj, articleHistoryObj)
local names = {
approved = 'WikiProject approved revision',
copyedited = 'Guild of Copy Editors',
collaboration = 'WikiProject collaboration',
maindate = "Today's featured article"
}
local result = actionObj:getResult()
return result and names[result] or 'WikiProject peer review'
end,
results = {
approved = {
id = 'approved',
text = function(actionObj, articleHistoryObj)
if actionObj.oldid then
local url = mw.uri.fullUrl(
articleHistoryObj.currentTitle.prefixedText,
{diff = 'cur', oldid = actionObj.oldid}
)
return string.format(
'[%s %s]',
tostring(url),
'Diff to current version'
)
else
error(string.format(
"No oldid detected for the approved version; " ..
"please set the 'action%doldid' parameter " ..
"or give the 'action%dresult' parameter a " ..
"different value.",
actionObj.paramNum,
actionObj.paramNum
))
end
end,
aliases = {'approved version'}
},
copyedited = {
id = 'copyedited',
text = 'Copyedited',
aliases = {'copyedit', 'proofread'}
},
maindate = {
id = 'maindate',
text = 'Main Page'
},
collaborated = {
id = 'collaborated',
text = 'Collaborated',
aliases = {'cotw', 'collaboration'}
},
reviewed = {
id = 'reviewed',
text = 'Reviewed',
aliases = {''} -- This is "Reviewed" if the reason is blank, but not absent.
}
},
validStatuses = false
},
WAR = {
id = 'WAR',
name = 'WikiProject A-class review',
results = {
approved = {
id = 'approved',
text = 'Approved',
aliases = {'pass', 'passed'}
},
['not approved'] = {
id = 'not approved',
text = 'Not approved',
aliases = {'fail', 'failed', 'not reviewed'}
},
reviewed = {
id = 'reviewed',
text = 'Reviewed',
aliases = {''}
},
kept = {
id = 'kept',
text = 'Kept',
aliases = {'keep'}
},
demoted = {
id = 'demoted',
text = 'Demoted',
aliases = {'demote'}
},
},
validStatuses = false
},
AFD = {
id = 'AFD',
name = 'Articles for deletion',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'withdrawn', 'keep'}
},
deleted = {
id = 'deleted',
text = 'Deleted',
aliases = {'delete'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
},
['no consensus'] = {
id = 'no consensus',
text = 'No consensus'
},
['speedily kept'] = {
id = 'speedily kept',
text = 'Speedily kept',
aliases = {'speedy keep'}
},
['speedily deleted'] ={
id = 'speedily deleted',
text = 'Speedily deleted',
aliases = {'speedy delete'}
},
redirected = {
id = 'redirected',
text = 'Redirected',
aliases = {'redirect'}
},
renamed = {
id = 'renamed',
text = 'Renamed',
aliases = {'rename', 'move', 'moved'}
}
},
validStatuses = false
},
MFD = {
id = 'MFD',
name = 'Miscellanea for deletion',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'withdrawn', 'keep'}
},
deleted = {
id = 'deleted',
text = 'Deleted',
aliases = {'delete'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
},
['no consensus'] = {
id = 'no consensus',
text = 'No consensus'
},
['speedily kept'] = {
id = 'speedily kept',
text = 'Speedily kept',
aliases = {'speedy keep'}
},
['speedily deleted'] = {
id = 'speedily deleted',
text = 'Speedily deleted',
aliases = {'speedy delete'}
},
redirected = {
id = 'redirected',
text = 'Redirected',
aliases = {'redirect'}
},
renamed = {
id = 'renamed',
text = 'Renamed',
aliases = {'rename', 'move', 'moved'}
}
},
validStatuses = false
},
TFD = {
id = 'TFD',
name = 'Templates for discussion',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'withdrawn', 'keep'}
},
deleted = {
id = 'deleted',
text = 'Deleted',
aliases = {'delete'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
},
['no consensus'] = {
id = 'no consensus',
text = 'No consensus'
},
['speedily kept'] = {
id = 'speedily kept',
text = 'Speedily kept',
aliases = {'speedy keep'}
},
['speedily deleted'] = {
id = 'speedily deleted',
text = 'Speedily deleted',
aliases = {'speedy delete'}
},
redirected = {
text = 'Redirected',
aliases = {'redirect'}
},
renamed = {
text = 'Renamed',
aliases = {'rename', 'move', 'moved'}
}
},
validStatuses = false
},
CSD = {
id = 'CSD',
name = 'Candidate for speedy deletion',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'withdrawn', 'keep'}
},
deleted = {
id = 'deleted',
text = 'Deleted',
aliases = {'delete'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
},
['no consensus'] = {
id = 'no consensus',
text = 'No consensus'
},
['speedily kept'] = {
id = 'speedily kept',
text = 'Speedily kept',
aliases = {'speedy keep'}
},
['speedily deleted'] = {
id = 'speedily deleted',
text = 'Speedily deleted',
aliases = {'speedy delete'}
},
redirected = {
id = 'redirected',
text = 'Redirected',
aliases = {'redirect'}
},
renamed = {
id = 'renamed',
text = 'Renamed',
aliases = {'rename', 'move', 'moved'}
}
},
validStatuses = false
},
PROD = {
id = 'PROD',
name = 'Proposed deletion',
results = {
kept = {
id = 'kept',
text = 'Kept',
aliases = {'withdrawn', 'keep'}
},
deleted = {
id = 'deleted',
text = 'Deleted',
aliases = {'delete'}
},
merged = {
id = 'merged',
text = 'Merged',
aliases = {'merge'}
},
['no consensus'] = {
id = 'no consensus',
text = 'No consensus'
},
['speedily kept'] = {
id = 'no consensus',
text = 'Speedily kept',
aliases = {'speedy keep'}
},
['speedily deleted'] = {
id = 'speedily deleted',
text = 'Speedily deleted',
aliases = {'speedy delete'}
},
redirected = {
id = 'redirected',
text = 'Redirected',
aliases = {'redirect'}
},
renamed = {
id = 'renamed',
text = 'Renamed',
aliases = {'rename', 'move', 'moved'}
}
},
validStatuses = false
},
DRV = {
id = 'DRV',
name = 'Deletion review',
results = {
endorsed = {
id = 'endorsed',
text = 'Endorsed',
aliases = {'endorse'}
},
relisted = {
id = 'relisted',
text = 'Relisted',
aliases = {'relist'}
},
overturned = {
id = 'overturned',
text = 'Overturned',
aliases = {'overturn'}
},
['no consensus'] = {
id = 'no consensus',
text = 'No consensus'
}
},
validStatuses = false
}
},
-------------------------------------------------------------------------------
-- Statuses
-- Configuration for possible current statuses of the article.
-------------------------------------------------------------------------------
-- The statuses table contains valid statuses.
-- Each status can have the following fields:
--
-- id: the main ID for the status.
-- aliases: a table of ID aliases that can be used to access the config table.
-- image: The status image.
-- imageSize: The image size, including "px" suffix. The default is defined in
-- defaultStatusIconSize.
-- imageSmallSize: The image size if we are outputting a small template. The
-- default is defined in defaultSmallStatusIconSize.
-- text: The status text.
-- $1 - The full page name of the article or subject page
-- categories: An array of categories used by the status.
statuses = {
FA = {
id = 'FA',
image = 'Featured article star.svg'
},
FFA = {
id = 'FFA',
image = 'Featured article star - cross.svg',
text = "'''$1''' is a [[Wikipedia:Former featured articles|former featured article]]. " ..
"Please see the links under Article milestones below for its original nomination page " ..
"(for older articles, check [[Wikipedia:Featured article candidates/Archived nominations/Index|the nomination archive]]) " ..
"and why it was removed.",
categories = {'Wikipedia former featured articles'}
},
FFAC = {
id = 'FFAC',
aliases = {'FACFAILED'},
image = 'Cscr-former.svg'
},
FL = {
id = 'FL',
image = 'Featured article star.svg'
},
FFL = {
id = 'FFL',
image = 'Cscr-featured-strike.svg'
},
FFLC = {
id = 'FFLC',
image = 'Cscr-former.svg'
},
['FFA/GA'] = {
id = 'FFA/GA',
isDouble = true,
statuses = {'FFA', 'GA'}
},
GA = {
id = 'GA',
image = 'Symbol support vote.svg'
},
FGAN = {
id = 'FGAN',
aliases = {'FAILEDGA'},
image = 'Symbol unsupport vote.svg'
},
DGA = {
id = 'DGA',
aliases = {'DELISTEDGA'},
image = 'Symbol unsupport vote.svg'
},
FFT = {
id = 'FFT',
image = 'Cscr-featured-strike.svg'
},
FFTC = {
id = 'FFTC',
image = 'Cscr-former.svg'
},
FPO = {
id = 'FPO',
image = 'Cscr-former.svg'
},
FFPO = {
id = 'FFPO',
image = 'Featured article star - cross.svg'
},
FFPOC = {
id = 'FFPOC',
image = 'Cscr-former.svg'
},
},
invalidStatuses = {
FAC = {
id = 'FAC'
},
FAR = {
id = 'FAR'
},
STUB = {
id = 'STUB',
aliases = {'START', 'B', 'A'}
},
NA = {
id = 'NA',
aliases = {'PR', ''}
},
},
getStatusIdFunction = function (articleHistoryObj)
-- Get the status ID. The status code is the code passed in from the
-- arguments, and the ID is the value contained in the config.
local statuses = articleHistoryObj.cfg.statuses
local statusCode = articleHistoryObj.args.currentstatus
local statusId = articleHistoryObj:getStatusIdForCode(statusCode)
-- Check for former featured articles.
if statusId ~= 'FA'
and statusId ~= 'FL'
and statusId ~= 'FFA'
and statusId ~= 'FFL'
and statusId ~= 'FFA/GA'
then
local ffaObj
for i = #articleHistoryObj.actions, 1, -1 do
local actionObj = articleHistoryObj.actions[i]
if actionObj.id == 'FAR' and actionObj:getResult() == 'demoted' then
ffaObj = actionObj
break
end
end
if ffaObj then
if not statusId then
-- @TODO: Error
elseif statusId == 'GA' then
statusId = 'FFA/GA'
elseif statusId ~= 'FFA' then
-- @TODO: Error -
end
end
end
return statusId
end,
-------------------------------------------------------------------------------
-- Notices
-------------------------------------------------------------------------------
notices = {
{
param = 'ftname'
}
},
-------------------------------------------------------------------------------
-- Collapsible notices
-------------------------------------------------------------------------------
collapsibleNotices = {
},
-------------------------------------------------------------------------------
-- Parameters
-------------------------------------------------------------------------------
-- The parameter values used to generate the page actions. These are used as
-- Lua patterns, so any of the magic characters *+-.^$%[] should be escaped
-- with a preceding % symbol.
actionParamPrefix = 'action',
actionParamSuffixes = {
[''] = 'code',
date = 'date',
link = 'link',
result = 'result',
oldid = 'oldid'
},
-------------------------------------------------------------------------------
-- Other settings
-------------------------------------------------------------------------------
-- If this number or fewer of collapsible rows are present (including actions
-- and collapsible notices) they will not be collapsed. If this is set to the
-- string "all", all rows will always be visible. Otherwise, the input must be
-- a number. The default is three rows.
uncollapsedRows = 3,
-- The default size for icons. The default is 30px.
defaultIconSize = '30px',
-- The default size for icons for small templates. The default is 15px.
defaultSmallIconSize = '15px',
-- The default size for status icons. The default is 50px.
defaultStatusIconSize = '50px',
-- The default size for status icons for small templates. The default is 30px.
defaultSmallStatusIconSize = '30px',
-- The default size for notice bar icons. The default is 15px.
defaultNoticeBarIconSize = '15px',
-------------------------------------------------------------------------------
-- Messages
-------------------------------------------------------------------------------
msg = {
-- The heading for the collapsible table of actions if we are in the main
-- namespace or the talk namespace.
['milestones-header'] = 'Article milestones',
-- The heading for the collapsible table of actions if we are in a different
-- namespace.
-- $1 - the subject namespace name.
['milestones-header-other-ns'] = '$1 milestones',
-- The milestones date header.
['milestones-date-header'] = 'Date',
-- The milestones process header.
['milestones-process-header'] = 'Process',
-- The milestones result header.
['milestones-result-header'] = 'Result'
}
-------------------------------------------------------------------------------
-- End config
-------------------------------------------------------------------------------
}