Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:Authority control/documentation
Module
Discussion
English
Read
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit source
View history
General
What links here
Related changes
Special pages
Page information
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 frame = mw.getCurrentFrame() local config_file = frame.args.config and frame.args.config~='' and ('/' .. frame.args.config) or '' local config = mw.loadData('Module:Authority control/config' .. config_file) 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 category, redlinkcat = '', '' if testcases == false and mw.title.new(cat, 14).exists == false then redlinkcat = needsAttention('N') end category = '[[' .. config.i18n.category .. ':' .. cat if sortkey then category = category .. '|' .. sortkey .. title.text end category = category .. ']]' .. redlinkcat return category else return '' end end 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 getname = function(property) local name for _, propnameqid in ipairs(config.property_items) do name = getstatement(property, propnameqid) if name then break end end if name then return frame:expandTemplate{ title = 'Wikidata fallback link', args = {name} } 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() local doc = '' local row = function(conf) local example_qid = getstatement(conf.property, 1855) local example = example_qid and frame:expandTemplate{ title = 'Hlist', args = {tostring( mw.html.create('ul') :node(makelink(conf, example_qid)) )} } or '' local out if conf.remark then out = '<tr><th rowspan=2 data-sort-value=' .. conf.property .. '>' else out = '<tr><th data-sort-value=' .. conf.property .. '>' end out = out .. frame:expandTemplate{ title = 'Wikidata property link', args = {conf.property} } .. '</th>' .. '<td>' .. getname(conf.property) .. '</td>' .. '<td style="text-align: center">' .. config.sections[conf.section].name .. '</td>' .. '<td>' .. example .. '</td></tr>' if conf.remark then out = out .. '<tr class="expand-child"><td colspan="3">' .. "'''Remarks:''' " .. frame:preprocess{text = conf.remark} .. "</td></tr>" end return out end local doc = '<table class="wikitable sortable">' .. '<tr><th data-sort-type=number>' .. config.i18n.WDproperty .. '</th>' .. '<th>' .. lang:ucfirst(config.i18n.identifier) .. '</th>' .. '<th>' .. config.i18n.Section .. '</th>' .. '<th>' .. config.i18n.Appears_as .. '</th></tr>' for _, conf in pairs(config.config) do doc = doc .. row(conf) end doc = doc .. '</table>' return doc end function p.whitelisttable() 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() 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() local function whichTOC() -- standardize TOC behavior via {{CatAutoTOC}} return frame:expandTemplate{ title = 'CatAutoTOC', args = { align = 'center' } } end local function wpa(id, faulty) local outString = '' for _, conf in pairs(config.config) do if conf.category==id then outString = frame:expandTemplate{ title = 'Category explanation', args = {'articles with ' .. getname(conf.property) .. ' 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() end end 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 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(wpfaultyID, true)-- must be before wpID check, in case they both match elseif wpID then return wpa(wpID, false) else return needsAttention('U') end end end function p.idproposal() 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 = {makelink({[1]='', link=link, label=label}, example)}} 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 Bourbon Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, 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 (see
Bourbon Wiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width