Modul:CommonsLink
Účelem modulu CommonsLink je sjednocení přebírání odkazů na galerie a kategorie Wikimedia Commons z Wikidat.
Použití
{{#invoke:CommonsLink|gallery}}
- z položky Wikidat přebere vlastnost galerie na Commons (P935), pokud je dostupná, případně mezijazykový odkaz, pokud odkazuje do hlavního jmenného prostoru
- pokud není nalezen vhodný odkaz, provede se to samé i v položce, na kterou se ze stávající odkazuje pomocí hlavní kategorie tématu (P910) (pokud taková existuje)
{{#invoke:CommonsLink|category}}
- z položky Wikidat přebere vlastnost kategorie na Commons (P373), pokud je dostupná, případně mezijazykový odkaz, pokud odkazuje do jmenného prostoru kategorií
- pokud není nalezen vhodný odkaz, provede se to samé i v položce, na kterou se ze stávající odkazuje pomocí hlavní kategorie tématu (P910) (pokud taková existuje)
{{#invoke:CommonsLink|any}}
- odpovídá
category or gallery
, tj. přebere kategorii nebo galerii, pokud kategorie není dostupná (prakticky využitelné pouze slink=true
)
Parametr prefix=true
vynutí název stránky se jmenným prostorem (u kategorií). Parametr link=true
změní výstup modulu na interwiki odkaz.
require 'Modul:No globals'
local WD = require 'Modul:Wikidata'
local lib = require 'Modul:Wikidata/lib'
local getArgs = (require 'Modul:Arguments').getArgs
local function gallery(args, of)
args.property = 'P935'
args.of = of
local link = WD.getRawValueFromLua(args)
if not link then
args.site = 'commonswiki'
link = WD.getSitelinkFromLua(args)
if not link or mw.ustring.sub(link, 1, #'Category:') == 'Category:' then
return nil
end
end
if lib.IsOptionTrue(args, 'link') then
return mw.ustring.format('[[c:%s|%s]]', link, link)
end
return link
end
local function category(args, of)
local args = args --mw.clone(args)
args.property = 'P373'
args.of = of
local link = WD.getRawValueFromLua(args)
if not link then
args.site = 'commonswiki'
link = WD.getSitelinkFromLua(args)
if not link or mw.ustring.sub(link, 1, #'Category:') ~= 'Category:' then
return nil
else
link = mw.ustring.sub(link, #'Category:' + 1)
end
end
if lib.IsOptionTrue(args, 'link') then
return mw.ustring.format('[[c:Category:%s|%s]]', link, link)
end
if lib.IsOptionTrue(args, 'prefix') then
return 'Category:' .. link
end
return link
end
local p = {}
function p._gallery(args)
return gallery(args) or gallery(args, 'P910')
end
function p.gallery(frame)
return p._gallery(getArgs(frame, { noOverwrite = false, frameOnly = true }))
end
function p._category(args)
return category(args) or category(args, 'P910')
end
function p.category(frame)
return p._category(getArgs(frame, { noOverwrite = false, frameOnly = true }))
end
function p._any(args)
return p._category(args) or p._gallery(args)
end
function p.any(frame)
return p._any(getArgs(frame, { noOverwrite = false, frameOnly = true }))
end
return p