Editing
Module:Authority control/documentation
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
require('strict') local p = {} local configfile = 'Module:Authority control/config' -- default configuation module local arg = mw.getCurrentFrame().args.config if arg and arg~='' then configfile = 'Module:Authority control/config/' .. arg end local config if mw.title.new(configfile).exists then config = mw.loadData(configfile) else return error('Invalid configuration file',0) end local title = mw.title.getCurrentTitle() local namespace = title.namespace local testcases = title.subpageText == config.i18n.testcases local makelink = require(config.i18n.ACmodule).makelink local lang = mw.getContentLanguage() local function needsAttention(sortkey) return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]' end local function addCat(cat,sortkey) if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then local redlinkcat = '' if testcases == false and mw.title.new(cat, 14).exists == false then redlinkcat = needsAttention('N') end if sortkey then cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]' else cat = '[[' .. config.i18n.category .. ':'..cat..']]' end cat = cat .. redlinkcat return cat else return '' end end -- Creates a human-readable standalone wikitable version of conf, and tracking categories with page counts, for use in the documentation function p.docConfTable(frame) local function checkcat(category,label) local ret='[[:Category:'..category..'|'..label..']]' --if mw.title.new(category,14).exists == false then --ret = ret..' <span class="plainlinks" style="font-size:85%;">[['..tostring(mw.uri.fullUrl('Category:'..category,'action=edit&preload=Template:Authority_control/preload'))..' create]]</span>' --end return ret end local doc = '' local a, P, f = 0, 0, 0 --cumulative sums local count = frame.args.count or false local columns = 3 + (count and 1 or 0) local row = function(conf) local category = conf.category or conf[1] local articleCat = string.format(config.i18n.cat,category) local articleCount = mw.site.stats.pagesInCategory(articleCat,config.i18n.pages) local errorCat = conf.errorcat or string.format( config.i18n.cat, config.i18n.faulty .. ' ' .. category ) local errorCount = mw.site.stats.pagesInCategory(errorCat,config.i18n.pages) P = P + 1 --property count a = a + articleCount f = f + errorCount local getstatement = function(id,propid,qualid) local statement = mw.wikibase.getBestStatements('P' .. id, 'P' .. propid) local value if statement and statement[1] and statement[1].mainsnak.datavalue.value.id then value = statement[1].mainsnak.datavalue.value.id local qual if qualid and statement[1].qualifiers['P' .. qualid][1].datavalue.value then qual = statement[1].qualifiers['P' .. qualid][1].datavalue.value end return value, qual end end local _, example = getstatement(conf.property, 1855, conf.property) if not example then example = '' end example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink(conf,{id=example},1)}} .. '\n' local getname = function(nameprop) local name = getstatement(conf.property,nameprop) if name then return frame:expandTemplate{title='Wikidata fallback link',args={name}} end end local name = getname(1629) or getname(10726) or getname(9073) or getname(2378) or '' local out = '' if conf.remark then out = out .. '<tr><td rowspan=2>' else out = out .. '<tr><td>' end out = out .. name .. '</td>' .. '<td style="text-align: center">' .. config.sections[conf.section].name .. '</td>' .. '<td data-sort-value=' .. conf.property .. '>' .. frame:expandTemplate{title='Wikidata property link',args={id='f',conf.property}} .. '</td>' .. '<td>' .. example .. '</td>' if count then out = out .. '<td style="text-align: right;">'..checkcat(articleCat,lang:formatNum(articleCount))..' ('..checkcat(errorCat,errorCount)..')</td>' end out = out .. '</tr>' if conf.remark then out = out .. "<tr class='expand-child'><td colspan=" .. columns .. ">'''Remarks:''' " .. frame:preprocess{text = conf.remark} .. "</td></tr>" end return out end local doc = '<table class="wikitable sortable">' .. '<tr><th>' .. lang:ucfirst(config.i18n.identifier) .. '</th>' .. '<th>' .. config.i18n.Section .. '</th>' .. '<th data-sort-type=number>' .. config.i18n.WDproperty .. '</th>' .. '<th>' .. config.i18n.Appears_as .. '</th>' if count then doc = doc .. '<th>[[:' .. config.i18n.category .. ':' .. config.i18n.maincat .. '|' .. config.i18n.Articles .. ']] ' .. '([[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Faults .. ']])</th>' end doc = doc .. '</tr>' for _, conf in pairs(config.config) do doc = doc .. row(conf) end if count then doc = doc .. '<tr><th style="text-align: right;" colspan=' .. columns-1 .. '>' .. config.i18n.Totals .. '</th>' .. '<th style="text-align: right;">' .. P .. '</th>' .. '<th style="text-align: right;">' .. lang:formatNum(a) .. ' ([[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. f .. ']])</th></tr>' end doc = doc .. '</table>' return doc end function p.errorTable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.WDproperty .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.faulty) .. ' ' .. config.i18n.identifiers .. '</th>'.. '<th>[[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Tracking_category .. ']]</th></tr>' local f, P = 0, 0, 0 --cumulative sums for _, conf in pairs(config.config) do local category = conf.errorcat or string.format( config.i18n.cat, config.i18n.faulty .. ' ' .. (conf.category or conf[1]) ) local count = mw.site.stats.pagesInCategory(category,'pages') if count > 0 then P = P + 1 f = f + count Table = Table..'<tr><td>'..frame:expandTemplate{ title = config.i18n.linktemplate, args = { id = 'f', conf.property } } .. '</td>'.. '<td style="text-align:center;">'..tostring(count)..'</td>'.. '<td>[[:' .. config.i18n.category .. ':'..category..']]</td></tr>' end end Table = Table..'<tr><th>' .. config.i18n.Totals .. '</th>'.. '<th style="text-align:center;">' .. '[[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. tostring(f) .. ']]</th>'.. '<th style="text-align:center;">'..tostring(P)..'</th></tr></table>' return Table end function p.whitelisttable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.Code .. '</th>'.. '<th>' .. config.i18n.Topic .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>' for code, wlist in pairs(config.whitelists) do Table = Table .. '<tr><th>' .. code .. '</th>'.. '<td>[[' .. mw.wikibase.getSitelink('Q' .. wlist.topic) .. ']]</td>' local plist = {} for _, property in pairs(wlist.properties) do table.insert(plist,frame:expandTemplate{title='Wikidata property link', args={'P' .. property}}) end Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>' end Table = Table .. '</table>' return Table end function p.sectiontable(frame) local Table = '<table class="wikitable sortable">'.. '<tr><th>' .. config.i18n.Section .. '</th>' .. '<th>' .. config.i18n.Description .. '</th>'.. '<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>' for number,section in ipairs(config.sections) do Table = Table .. '<tr><th>' .. number .. '</th>' .. '<td>' .. section.name .. '</td>' local plist = {} for _,id in pairs(config.config) do if id.section == number then table.insert(plist,frame:expandTemplate{title=config.i18n.linktemplate, args={'P' .. id.property}}) end end Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>' end Table = Table .. '</table>' return Table end -- Main/External Call for Pages with authority control identifiers function p.autoDetect(frame) local function whichTOC(frame) -- standardize TOC behavior via {{CatAutoTOC}} return frame:expandTemplate{ title = 'CatAutoTOC', args = { align = 'center' } } end local function wpa(frame,id,faulty) for _,conf in pairs(config.config) do if conf.category == id or conf[1] == id then local getname = function(nameprop) local name = mw.wikibase.getBestStatements('P'..conf.property,nameprop) if name and name[1] and name[1].mainsnak.datavalue.value.id then return frame:expandTemplate{title='Wikidata fallback link',args={name[1].mainsnak.datavalue.value.id}} end end local name = getname('P1629') or getname('P10726') or getname('P9073') or getname('P2378') or '' local outString = frame:expandTemplate{ title = 'Category explanation', args = {'articles with '..name..' identifiers.'..' Please do not add [[Wikipedia:Categorization#Subcategorization|subcategories]].\nPages in this category should only be added by [[Module:Authority control]].'}} .. frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control', ':d:Property:P'..conf.property} } .. frame:expandTemplate{ title = 'Possibly empty category' } .. frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } } .. frame:expandTemplate{ title = 'Polluted category' } .. whichTOC( frame ) if faulty then outString = outString .. addCat(config.i18n.faultcat,id) .. addCat(string.format(config.i18n.cat, id)) else outString = outString .. addCat(config.i18n.maincat,id) end return outString end end end if namespace == 14 then --cat space local wpfaultyID = mw.ustring.match(title.text, 'Articles with faulty (.+) identifiers') local wpID = mw.ustring.match(title.text, 'Articles with (.+) identifiers') if wpfaultyID then return wpa(frame,wpfaultyID,true)-- must be before wpID check, in case they both match elseif wpID then return wpa(frame,wpID,false) else return needsAttention('U') end end end function p.idproposal(frame) local property = frame.args.property or '' local out = '<ul><li>Wikidata property: ' .. frame:expandTemplate{title='Wikidata property link', args={'P' .. property}} .. '</li>' out = out .. '<li>Section: ' local section = frame.args.section or '' if section~='' then out = out .. config.sections[section].name .. ' (' .. section .. ')' else out = out .. 'Not specified' end out = out .. '</li><li>Link: ' local link = frame.args.link or '' if link=='' then link = mw.wikibase.getBestStatements('P'..property,'P1630') or '' link = link[1].mainsnak.datavalue.value end if link~='' then out = out .. '<code>' .. link .. '</code>' else out = out .. 'Not specified' end out = out .. '</li><li>Label: ' local label = frame.args.label or '' if label~='' then out = out .. label else out = out .. 'Not specified' end out = out .. '</li><li>Example: ' local example = mw.wikibase.getBestStatements('P'..property,'P1855') or '' if example then example = example[1].qualifiers['P'..property][1].datavalue.value example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink({[1]='',link=link,label=label},{id=example},1)}} .. '\n' out = out .. example else out = out .. 'Not available' end out = out .. '</li></ul>' return out end return p
Summary:
Please note that all contributions to Mirrorplay: Fae are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
MPFae:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Module
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information