モジュール:Authority control/sandbox
表示
これはモジュール:Authority control (差分)のモジュール・サンドボックスページです。 |
Wikipedia:典拠管理 |
---|
テンプレート |
モジュール |
Config |
Auxiliary |
Docモジュール |
カテゴリ |
Luaモジュールを使用しています: |
{{Normdaten}}のコードを生成しているモジュールです。
識別子、ウィキデータプロパティと追跡カテゴリ
[編集]ウィキデータのプロパティ | 識別子 | 分類 | 表示例 |
---|---|---|---|
ISNI (P213) | 国際標準名称識別子 | 全般 | |
Remarks:ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles. Please take care not to confuse ISNI and ORCID identifiers. | |||
VIAF識別子 (P214) | VIAF識別子 | 全般 | |
Remarks:International authority data from the Online Computer Library Center (OCLC) | |||
GND識別子 (P227) | GND識別子 | 国立図書館 | |
Remarks:Authority data on people, corporations and subjects from the German National Library (DNB) | |||
アメリカ議会図書館典拠管理識別子 (P244) | アメリカ議会図書館リンクデータサービス | 国立図書館 | |
Remarks:See Wikipedia:Authority control#LCCN for formatting instructions | |||
ULAN (P245) | 美術人名ユニオン・リスト | 芸術家 | |
Remarks:ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists. Names in ULAN may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names). | |||
フランス国立図書館識別子 (P268) | フランス国立図書館 | 国立図書館 | |
Remarks:Authority data of people listed in the general catalogue of the National Library of France | |||
フランス国立図書館識別子 (P268) | フランス国立図書館 | 国立図書館 | |
IdRef識別子 (P269) | IdRef | その他 | |
Remarks:Authority data of people listed in the general catalogue of the University Documentation System of France. Also available from English-speaking catalog (search author, click one book, click author name, take PPN= value of the URL) | |||
NACSIS-CAT著者名典拠ID (P271) | NACSIS-CAT著者名典拠ID | 学術データベース | |
Remarks:CiNii is a bibliographic database service for material in Japanese academic libraries. It is maintained by the National Institute of Informatics. | |||
Joconde (P347) | ジョコンデ | その他 | |
国立国会図書館典拠ID (P349) | ウェブ版国立国会図書館典拠 | 国立図書館 | |
Remarks:Authority data listed in the catalog of the national library of Japan. Search also available via VIAF. | |||
RKDimages (P350) | RKD絵画データベース | その他 | |
メリメ識別子 (P380) | フランス登録記念物 | 地理 | |
イタリア国立図書館サービス著者識別子 (P396) | 国立図書館 | ||
Remarks:Central Institute for the Union Catalogue (ICCU: Istituto Centrale per il Catalogo Unico) is an Italian government agency created to build a single catalog of all the libraries in the nation. It manages National Library Service (Servizio bibliotecario nazionale). | |||
オーストラリア図書館識別子 (P409) | オーストラリア国立図書館典拠 | 国立図書館 | |
Remarks:NLA Trove's People and Organisation view allows the discovery of biographical and other contextual information about people and organisations. Search also available via VIAF. | |||
植物学者の短縮名 (P428) | International Plant Names Index | 学術データベース | |
Remarks:Author citation (botany): standard form (official abbreviation) of a personal name for use in an author citation (only for names of algae, fungi and plants). Links to page at International Plant Names Index (IPNI). | |||
MusicBrainzアーティスト識別子 (P434) | MusicBrainzアーティスト識別子 | 芸術家 | |
Remarks:MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public. | |||
MusicBrainz作品ID (P435) | その他 | ||
MusicBrainzリリース・グループ識別子 (P436) | その他 | ||
Structurae (P454) | Structurae | 地理 | |
ORCID (P496) | ORCID | 学術データベース | |
Remarks:Authority data on researchers, academics, etc. The ID range is a subset of the ISNI range. For free text links (for example when mentioning a person on page which is not about them), it is also possible to use {{ORCID}}. Authors—including Wikipedia editors—may obtain an ORCID by signing up at orcid.org/register. Please take care not to confuse ORCID and ISNI identifiers. | |||
Mathematics Genealogy Project ID (P549) | 学術データベース | ||
Remarks:Mathematics Genealogy Project is a web-based database for the academic genealogy of mathematicians. | |||
RKDartists識別子 (P650) | オランダ美術史研究所データベース | 芸術家 | |
Remarks:RKDartists is an online database using a controlled vocabulary currently containing around 200,000+ names and other information about artists. Names in RKDartists may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names). | |||
(P651) | オランダ人物典拠管理データベース | 人物 | |
Remarks:Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands. | |||
チェコ国立図書館識別子 (P691) | チェコ国立図書館典拠データベース | 国立図書館 | |
Remarks:National Library of the Czech Republic (Národní knihovna České republiky) is the central library of the Czech Republic. | |||
JPL小天体データベース SPK-ID (P716) | JPL Small-Body Database | その他 | |
(P781) | 芸術家 | ||
Remarks:SIKART is a biographical dictionary and a database on visual art in Switzerland and Liechtenstein. It is published online by the Swiss Institute for Art Research (SIAR). | |||
ISIL識別子 (P791) | 図書館及び関連組織のための国際標準識別子 | 人物 | |
Remarks:Libraries, museums and archives, decentralized national databases. | |||
ACM電子図書館著者識別子 (P864) | ACM電子図書館 | 学術データベース | |
BMLO (P865) | 人物 | ||
Lexicon istoric retic識別子 (P886) | Lexicon istoric retic | その他 | |
Remarks:Lexicon Istoric Retic (LIR) is a two volume version with a selection of articles published in Romansh. | |||
スイス歴史事典識別子 (P902) | スイス歴史事典 | その他 | |
Remarks:Historical Dictionary of Switzerland is an encyclopedia on the history of Switzerland. | |||
ロシア国立図書館 (モスクワ)人物識別子 (P947) | ロシア国立図書館 | 国立図書館 | |
Remarks:Russian State Library (Российская государственная библиотека) is the national library of Russia. | |||
スペイン国立図書館識別子 (P950) | スペイン国立図書館識別子 | 国立図書館 | |
Remarks:National Library of Spain (BNE: Biblioteca Nacional de España) is a major public library, the largest in Spain. | |||
MusicBrainzレーベルID (P966) | その他 | ||
MusicBrainz地域ID (P982) | 地理 | ||
ルーマニア国立図書館識別子 (P1003) | 国立図書館 | ||
MusicBrainz 場所 ID (P1004) | 地理 | ||
PTBNP識別子 (P1005) | 国立図書館 | ||
NTA PPN識別子 (P1006) | 国立図書館 | ||
BIBSYS識別子 (P1015) | 国立図書館 | ||
Remarks:BIBSYS is a supplier of library and information systems for all Norwegian university Libraries, the National Library of Norway, college libraries, and a number of research libraries and institutions. | |||
(P1045) | 国民議会議員 | 人物 | |
国家図書館識別子 (P1048) | 国家図書館 | 国立図書館 | |
Remarks:National Central Library is the national library of Taiwan, Republic of China. | |||
ResearcherID (P1053) | ResearcherID | 学術データベース | |
Remarks:An identifying system for scientific authors. The system was introduced in January 2008 by Thomson Reuters. The combined use of the digital object identifier with the ResearcherID allows for a unique association of authors and scientific articles. | |||
ワールド・アスレティックスID (P1146) | ワールド・アスレティックス・データベース | 人物 | |
Remarks:The IAAF athlete database lists information about sport of athletics competitors. | |||
Scopus著者識別子 (P1153) | Scopus | 学術データベース | |
Remarks:SciVerse Scopus is a bibliographic database containing abstracts and citations for academic journal articles. It covers nearly 19,500 titles from over 5,000 international publishers, of which 16,500 are peer-reviewed journals in the scientific, technical, medical, and social sciences (including arts and humanities). | |||
アメリカ国会識別子 (P1157) | アメリカ国会人物識別子 | 人物 | |
Remarks:Biographical Directory of the United States Congress is a biographical dictionary of all present and former members of the United States Congress and its predecessor, the Continental Congress. Also included are Delegates from territories and the District of Columbia and Resident Commissioners from the Philippines and Puerto Rico. | |||
欧州議会議員データベースのID (P1186) | 欧州議会議員 | 人物 | |
アメリカ国立公文書記録管理局識別子 (P1225) | 国立公文書館識別子 | その他 | |
Remarks:National Archives and Records Administration (NARA) is an independent agency of the United States government charged with preserving and documenting government and historical records. | |||
(P1248) | 芸術家 | ||
Remarks:KulturNav is a Norwegian cloud-based software service, allowing users to create, manage and distribute name authorities and terminology, focusing on the needs of museums and other cultural heritage institutions. The software is developed by KulturIT ANS and the development project is funded by the Arts Council Norway. | |||
NLAトローヴ人物識別子 (P1315) | トローヴ | 人物 | |
Terminologia Anatomica 98 (P1323) | Terminologia Anatomica | その他 | |
MusicBrainz楽器ID (P1330) | その他 | ||
(P1362) | その他 | ||
Remarks:Theaterlexikon der Schweiz (TLS) is an encyclopedia about theatre in Switzerland. It was developed by the Institute of Theatre Studies of the University of Berne. | |||
LNB識別子 (P1368) | 国立図書館 | ||
NSK識別子 (P1375) | 国立図書館 | ||
MusicBrainzシリーズID (P1407) | その他 | ||
zbMATH著者識別子 (P1556) | 学術データベース | ||
プレアデスID (P1584) | プレアデス | 地理 | |
Remarks:Pleiades is a joint project of the Institute for the Study of the Ancient World at New York University and the Ancient World Mapping Center at the University of North Carolina at Chapel Hill. | |||
(P1707) | 芸術家 | ||
(P1736) | 芸術家 | ||
GVP火山番号 (P1886) | Global Volcanism Program | 地理 | |
チリ書誌典拠収集目録識別子 (P1890) | 国立図書館 | ||
オーストラリア人名辞典ID (P1907) | オーストラリア人名事典 | 人物 | |
CWGC人物識別子 (P1908) | コモンウェルス戦争墓地委員会データベース | 人物 | |
Google Scholar著者識別子 (P1960) | Google Scholar著者識別子 | 学術データベース | |
イタリア人名事典識別子 (P1986) | イタリア人名事典 | 人物 | |
ビクトリア国立美術館芸術家ID (P2041) | ヴィクトリア国立美術館 | 芸術家 | |
FAST識別子 (P2163) | 全般 | ||
ニューヨーク近代美術館 芸術家ID (P2174) | 芸術家 | ||
オルセー美術館 作者識別子 (P2268) | 芸術家 | ||
シュトゥットガルト科学イラストレーター・データベースID (P2349) | 芸術家 | ||
(P2418) | Structurae | 人物 | |
DBLP著者識別子 (P2456) | DBLP | 学術データベース | |
NCES 学校ID (P2484) | 地理 | ||
autores.uy ID (P2558) | Autores.uy | 人物 | |
Remarks:autores.uy is an author's database, that focus on Uruguayan authors. It was created and maintained by the Uruguayan chapter of Creative Commons. It also provides access to digitized works of the authors in public domain. | |||
写真家識別目録識別子 (P2750) | 写真家識別目録 | 芸術家 | |
Remarks:PIC is a photographer's database. It is maintained by the New York Public Library. | |||
ARLHS灯台ID (P2980) | ARLHS 灯台 ID | 地理 | |
(P3223) | 地理 | ||
(P3233) | PhilPapers | 学術データベース | |
(P3326) | 地理 | ||
ギリシャ国立図書館識別子 (P3348) | ギリシア国立図書館 | 国立図書館 | |
オークランド美術館芸術家ID (P3372) | オークランド美術館 | 芸術家 | |
(P3407) | 地理 | ||
SNAC ARK識別子 (P3430) | SNAC | その他 | |
テ・パパ代理識別子 (P3544) | ニュージーランド国立博物館テ・パパ・トンガレワ収蔵物オンライン | その他 | |
英国水路部灯台番号 (P3562) | 英国水路部灯台番号 | 地理 |
|
アメリカ国家地理空間情報局灯台識別子 (P3563) | アメリカ国家地理空間情報局灯台識別子 | 地理 | |
マリントラフィック灯台識別子 (P3601) | マリントラフィック灯台識別子 | 地理 | |
アメリカ沿岸警備隊灯台識別子 (P3723) | アメリカ沿岸警備隊灯台識別子 | 地理 | |
(P3788) | 国立図書館 | ||
Publons著者識別子 (P3829) | パブロンズ | 学術データベース | |
イタリア海軍ビーコン識別子 (P3863) | Fari e Segnalamenti | 地理 | |
カナダ沿岸警備隊灯台識別子 (P3920) | カナダ沿岸警備隊灯台識別子 | 地理 | |
Remarks:Identifier from one of 4 volumes of List of Lights, Buoys and Fog Signals issued by the Canadian Coast Guard. | |||
(P3993) | 地理 |
| |
(P4038) | 地理 |
| |
(P4055) | 地理 |
| |
ADK メンバーID (P4114) | ベルリン芸術アカデミー | 芸術家 | |
(P4143) | 地理 |
| |
Australian Women's Register ID (P4186) | 人物 | ||
(P4423) | 地理 |
| |
(P4457) | 歴史的録音の資料台帳 (アメリカ) | 芸術家 | |
(P4534) | 人物 | ||
(P4535) | 地理 | ||
シュテーデル美術館 芸術家ID (P4581) | シュテーデル美術館 | 芸術家 | |
現代ウクライナ百科事典ID (P4613) | 現代ウクライナ百科事典 | その他 | |
MathSciNet著者識別子 (P4955) | 学術データベース | ||
韓国国立中央図書館識別子 (P5034) | 韓国国立中央図書館典拠ファイル | 国立図書館 | |
(P5226) | 芸術家 | ||
Remarks:Identifier of an artist in the B.R.A.H.M.S. (Base Relationnelle d'Articles Hypertextes sur la Musique du 20e Siècle database), by the IRCAM | |||
(P5288) | 地理 | ||
(P5302) | その他 | ||
Remarks:Identifier for a musical work in the B.R.A.H.M.S. (Base Relationnelle d'Articles Hypertextes sur la Musique du 20e Siècle database) database, by the IRCAM | |||
(P5321) | 芸術家 | ||
(P5368) | カナダ国立美術館 | 芸術家 | |
(P5504) | その他 | ||
Libris-URI (P5587) | LIBRIS | 国立図書館 | |
SELIBR識別子 (P906) | LIBRIS | 国立図書館 | |
Remarks:Authority data from the National Library of Sweden | |||
小惑星センター 天体ID (P5736) | 小惑星センター・データベース | その他 | |
(P5818) | 植物園自然保護国際機構 | 地理 | |
イギリス議会識別子 (P6213) | イギリスの議会 | 人物 | |
Remarks:UK parliament member data | |||
(P6792) | 芸術家 | ||
南オーストラリア美術館芸術家ID (P6804) | 南オーストラリア美術館 | 芸術家 | |
(P6829) | アイルランド人名事典 | 人物 | |
ポーランド国立図書館識別子 (P7293) | MAK | 国立図書館 | |
ポーランド国立図書館識別子(旧) (P1695) | ポーランド国立図書館 | 国立図書館 | |
グラミー賞芸術家識別子 (P7303) | グラミー賞芸術家識別子 | 芸術家 | |
トルコ宗教財団イスラーム百科事典ID (P7314) | トルコ宗教財団イスラーム百科事典 | その他 | |
ドイッチェ・ビオグラフィー識別子 (P7902) | GND識別子 | 人物 | |
バチカン図書館VcBA識別子 (P8034) | opac.vatlib.it | 国立図書館 | |
Remarks:Vatican Library document data | |||
イスラエル国立図書館J9U識別子 (P8189) | イスラエル国立図書館名称・主題典拠ファイル | 国立図書館 | |
(P8381) | エミー賞 | 芸術家 | |
(P8671) | その他 | ||
Remarks:Deutsche Bahn station code, identifier for train stations and other operating points used by Deutsche Bahn | |||
KANTO ID (P8980) | KANTO | 国立図書館 | |
ウクライナ・インターネット百科事典識別子 (P9070) | IEU (識別子) | その他 | |
(P9692) | 芸術家 | ||
Remarks:Identifier for a musician in the Lexikon verfolgter Musiker und Musikerinnen der NS-Zeit | |||
(P9725) | 地理 | ||
Remarks:Identifier for an entry in the castles inventory database EBIDAT | |||
CANTIC識別子 (P9984) | カタルーニャ名称・題名典拠ファイル | 国立図書館 | |
(P10020) | 人物 | ||
レオポルディーナ会員識別子(新) (P10299) | www.leopoldina.org | 学術データベース | |
WorldCat Entities識別子 (P10832) | WorldCat Entities | 全般 | |
Remarks:WorldCat Entities for persons and works, by OCLC | |||
ベルギー王立図書館 人物ID (P11249) | ベルギー王立図書館オンライン・カタログ | 国立図書館 | |
CiNii Research ID (P11496) | CiNii Research ID | 学術データベース | |
(P11646) | ドイッチェ・シンクロンカルテイ | 人物 | |
Remarks:Online database of voice actors in film and television productions | |||
(P12204) | その他 | ||
Remarks:Identifier for an entry in the Electronic Literature as a Model of Creativity and Innovation in Practice (ELNCIP) Knowledge Base | |||
(P12754) | その他 | ||
DDB 人物 (GND) ID (P13049) | ドイツ電子図書館 | 人物 | |
Remarks:Deutsche Digitale Bibliothek |
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 wikilink = function(target, label)
return label and '[[' .. target .. '|' .. label .. ']]' or '[[' .. target .. ']]'
end
local needsAttention = function(sortkey)
return wikilink(config.i18n.category .. ':' .. config.i18n.attentioncat, sortkey .. title.text)
end
local addCat = function(cat, sortkey)
if cat and cat~='' and (namespace==0 or namespace==14 or testcases) then
local redlinkcat = ''
if testcases==false then
local success, exists = pcall(function() return mw.title.new(cat, 14).exists end)
if success and not exists then
redlinkcat = needsAttention('N')
end
end
return wikilink(config.i18n.category..':'..cat, sortkey and sortkey..title.text) .. redlinkcat
else
return ''
end
end
local tooltip = function(text, label)
if label and label~='' then
return frame:expandTemplate{
title = 'Tooltip',
args = {text, label}
}
else
return text
end
end
local _makelink = function(id, val, additional, qid) --validate values and create a link
local link = mw.html.create('span'):addClass('uid')
if not additional and id.prefix then --show prefix on primary value
link:wikitext(id.prefix .. ': ')
end
local valid_value = false
if id.customlink then -- use function to validate and generate link
local newlink = require(config.auxiliary)[id.customlink](val.id, additional)
if newlink then
link:wikitext(newlink)
valid_value = true
end
else
if id.pattern then -- check pattern to determine validity
valid_value = string.match(val.id, '^' .. id.pattern .. '$')
elseif id.patterns then -- check multiple patterns to determine validity
for _, pattern in ipairs(id.patterns) do
valid_value = val.id:match('^' .. pattern .. '$')
if valid_value then break end
end
elseif id.valid then -- use function to determine validity
valid_value = require(config.auxiliary)[id.valid](val.id)
else -- no validation possible
valid_value = val.id
end
if valid_value then
local label = id.label
if not label or additional then
label = tostring(additional)
end
local newlink
if id.link then
valid_value = valid_value:gsub('%%', '%%%%')
newlink = '[' .. mw.ustring.gsub(id.link, '%$1', valid_value) .. ' ' .. label .. ']'
else
newlink = valid_value
end
link:wikitext(tooltip(newlink, val.name))
end
end
if valid_value then
local cat = id.category and string.format(config.i18n.cat, id.category)
link:wikitext(addCat(cat))
else
local wdlink = qid and wikilink(':wikidata:' .. qid .. '#P' .. id.property) or ''
local name = mw.wikibase.getLabel('P' .. id.property) or ''
local tooltip = string.format(
config.i18n.idnotvalid,
name,
val.id
)
local cat = id.category and string.format(
config.i18n.cat,
config.i18n.faulty .. ' ' .. id.category
)
link:wikitext(wikilink('File:' .. config.i18n.warningicon .. '|20px|frameless|link=' .. wdlink, tooltip .. '.'))
:wikitext(addCat(cat))
:wikitext(addCat(config.i18n.allfaultycat, name))
end
return link
end
local _makelinks = function(id, qid)
--[[==================================]]
--[[ Make links ]]
--[[==================================]]
local getquals = function(statement, qualid)
if statement.qualifiers and statement.qualifiers['P'..qualid] then
return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1])
end
end
local ids = {}
if qid then
for _, statement in ipairs(mw.wikibase.getBestStatements(qid, 'P'..id.property)) do
if statement.mainsnak.datavalue then
local val = statement.mainsnak.datavalue.value
if val then
local namedas = getquals(statement, 1810) or getquals(statement, 742) or ''
table.insert(ids, {id=val, name=namedas})
end end end end
local links
if ids[1] then
links = mw.html.create('li'):node(_makelink(id, ids[1], false, qid))
if ids[2] then
local sublinks = mw.html.create('ul')
for n = 2, #ids do
sublinks:tag('li'):node(_makelink(id, ids[n], n, qid)):done()
end
links:node(sublinks)
end
end
return links
end
p.authorityControl = function(frame)
--[[==================================]]
--[[ Main ]]
--[[==================================]]
local resolveQID = function(qid)
if qid then
qid = 'Q' .. mw.ustring.gsub(qid, '^[Qq]', '')
if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then
local sitelink = mw.wikibase.getSitelink(qid)
if sitelink then
return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id
end
return mw.wikibase.getEntity(qid).id
end end end
local conf = config.config
local parentArgs = frame:getParent().args
local auxCats = ''
local rct = false -- boolean to track if there are any links to be returned
local qid, topic
if namespace==0 then
qid = mw.wikibase.getEntityIdForCurrentPage()
end
if qid then -- article is connected to a Wikidata item
if parentArgs.qid and resolveQID(parentArgs.qid)~=qid then -- non-matching qid parameter
auxCats = auxCats .. needsAttention('D')
end
else -- page is not connected to any Wikidata item
qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected
if qid then -- qid parameter is valid, set topic to display
topic = mw.wikibase.getLabel(qid)
if topic then
if mw.ustring.lower(title.subpageText)==mw.ustring.lower(topic) then -- suppress topic display if subpagename equals topic up to case change
topic = nil
end
if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article
topic = wikilink(mw.wikibase.getSitelink(qid), topic)
end
else
auxCats = auxCats .. needsAttention('L')
end
elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat
auxCats = auxCats .. needsAttention('Q')
end
end
local qids = {} -- setup any additional QIDs
if parentArgs.additional=='auto' and qid then -- check P527 for parts to add additional qids
local checkparts = function(property)
local parts = mw.wikibase.getBestStatements(qid, property)
if parts then
for _, part in ipairs(parts) do
if part.mainsnak.datavalue and part.mainsnak.datavalue.value.id then
local resolvedqid = resolveQID(part.mainsnak.datavalue.value.id)
if resolvedqid then
table.insert(qids,resolvedqid)
end end end end end
for _, part in ipairs(config.auto_additional) do
checkparts('P' .. part)
end
elseif parentArgs.additional and parentArgs.additional~='' then
for _, v in ipairs(mw.text.split(parentArgs.additional, '%s*,%s*')) do
v = resolveQID(v)
if v then
if v==qid then -- duplicate of qid parameter
auxCats = auxCats .. needsAttention('R')
end
table.insert(qids, v)
else -- invalid QID specified
auxCats = auxCats .. needsAttention('A')
end
end
end
local numsections, sections = 0, {}
for _, _ in ipairs(config.sections) do -- count number of regular sections
numsections = numsections + 1
end
for _ = 1, #qids+numsections do
table.insert(sections, {})
end
-- check which identifiers to show/suppress in template
local show, show_all_unsuppressed = {}, true
local stripP = function(pid) --strip P from property number
if pid:match('^[Pp]%d+$') then
pid = mw.ustring.gsub(pid, '[Pp]', '')
end
if pid:match('^%d+$') then
return tonumber(pid)
end
end
local addshowlist = function(list)
if list and list~='' then
for _, v in ipairs(mw.text.split(string.lower(list), '%s*,%s*')) do
local vprop = stripP(v)
if vprop then -- e.g. show=P214 to show one particular property
show[vprop] = true
else -- e.g. show=arts to use whitelist
if config.whitelists[v] then
for _, w in ipairs(config.whitelists[v].properties) do
show[w] = true
end end end end
show_all_unsuppressed = false
end end
addshowlist(frame.args.show) -- check show parameter on wrapper template
addshowlist(parentArgs.show) -- check show parameter on article
addshowlist(parentArgs.country) -- check country parameter on article
if parentArgs.suppress then
local suppresslist = mw.text.split(parentArgs.suppress, '%s*,%s*') -- split parameter by comma
for _, v in ipairs(suppresslist) do
v = stripP(v)
if v then
show[v] = false
auxCats = auxCats .. wikilink(config.i18n.category .. ':' .. config.i18n.suppressedcat)
else
auxCats = auxCats .. needsAttention('P')
end
end
end
local makeSections = function(qid, addit)
for _, id in ipairs(conf) do
if id.suppressedbyproperty then
for _, property in ipairs(id.suppressedbyproperty) do
if show[property]=='used' then -- property is in use
show[id.property] = false -- suppressed by another property
end end end
if show[id.property]==nil then
show[id.property] = show_all_unsuppressed
end
if show[id.property] then
local links = _makelinks(id, qid)
if links then
table.insert(
sections[addit or id.section],
links
)
show[id.property] = 'used'
rct = true
end end end end
local pencil = function(qid)
if qid then
return require('Module:EditAtWikidata')._showMessage{
pid = 'identifiers',
qid = qid
}
else
return ''
end
end
makeSections(qid, false)
for c = 1, #qids do
makeSections(qids[c], numsections+c)
end
--configure Navbox
local outString = ''
if rct then -- there is at least one link to display
local Navbox = require('Module:Navbox')
local sect, lastsect = 0, 0
local navboxArgs = {
name = 'Authority control',
navboxclass = 'authority-control',
bodyclass = 'hlist',
state = parentArgs.state or config.i18n.autocollapse,
navbar = 'off'
}
for c = 1, numsections+#qids do
if #sections[c]>0 then -- section is non-empty
sect = sect + 1
lastsect = c
local sectname
if c<=numsections then -- regular section
sectname = config.sections[c].name
else -- section from additional qid
local qid = qids[c-numsections]
local label, sitelink = mw.wikibase.getLabel(qid), mw.wikibase.getSitelink(qid)
if label then
if sitelink then
local target = mw.title.new(sitelink)
if target==title or (target.isRedirect and target.redirectTarget==title) then -- do not link
sectname = label
else -- make wikilink to article
sectname = wikilink(sitelink, label)
end
else
sectname = label
end
else
auxCats = auxCats .. needsAttention('L')
sectname = qid
end
sectname = sectname .. pencil(qid)
end
navboxArgs['group' .. c] = sectname
local list = mw.html.create('ul')
for _, link in ipairs(sections[c]) do
list:node(link)
end
navboxArgs['list' .. c] = tostring(list)
end
end
if topic then -- display in expanded form with topic
navboxArgs.title = config.i18n.aclink .. ' – ' .. topic .. pencil(qid)
elseif sect==1 then -- special display when only one section
if lastsect<=numsections then
if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present
navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid)
else -- other regular section
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid)
end
else -- section from additional qid
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect]
end
else -- add title to navbox
navboxArgs.title = config.i18n.aclink .. pencil(qid)
end
outString = Navbox._navbox(navboxArgs)
end
if parentArgs.state
and parentArgs.state~=''
and parentArgs.state~=config.i18n.collapsed
and parentArgs.state~=config.i18n.expanded
and parentArgs.state~=config.i18n.autocollapse then --invalid state parameter
auxCats = auxCats .. needsAttention('S')
end
if testcases then
auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking
end
--out
outString = outString .. auxCats
if namespace~=0 then
-- 日本語版独自の変更あり
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':)([^%|%]]+' .. config.i18n.Articles .. ')%|?[^%|%]]*(%]%])','%1:%2%3%4')
end
local check = require('Module:Check for unknown parameters/sandbox')._check
local sortkey
if namespace==0 then
sortkey = '*' .. title.text
else
sortkey = title.fullText
end
outString = outString .. check({
['unknown'] = wikilink(config.i18n.category .. ':' .. config.i18n.pageswithparams, sortkey),
['preview'] = config.i18n.previewwarning, 'show', 'country', 'suppress', 'additional', 'qid', 'state'
}, parentArgs)
return outString
end
p.makelink = function(id, qid)
return _makelinks(id, qid)
end
return p