Modul:SportsReference

This module returns a link to Sports-Reference.com. The URL is taken from Wikidata, unless there is no link on Wikidata. If that's the case, the module uses the link from the optional backup parameter; if there is no link on Wikidata and no backup parameter, it will return an error message explaining how to fix the issue.

The module only has one function, link, which returns the external link text ready for use. It should be used in the {{Sports-reference}} template thusly:

{{#invoke:SportsReference|link|optional backup parameter}}

The reason the module prefers links from Wikidata rather than the links given in the backup parameter is that it is much simpler to correct the links in Wikidata, and that will benefit all projects and not just this wiki; also, Wikidata supports various constraints so that the items and values can easily be checked for errors.




local function linktext(s)
	entity = mw.wikibase.getEntityObject()
	if not entity then
		label = mw.title.getCurrentTitle().text
	else
		label = mw.wikibase.label(entity.id) or mw.title.getCurrentTitle().text
	end
	if (s == nil) or (s == "") then
		-- This text returns an error that says that the Sports Reference ID is neither
		-- present on Wikidata nor in the article, and categorises the page as missing
		-- the Wikidata property.
		return "<span class='error'>S git kai Sports Reference ID uf Wikidata un au nit im Artikel!</span> \
		[[Vorlage:SportsReference|Wie chan i des repariere?]]\
		[[Kategorie:SportsReference nit uf Wikidata]]"
	else
		-- This is the text that is returned if there is a Sports Reference ID on Wikidata or in the article.
		return "[http://www.sports-reference.com/olympics/athletes/" .. s .. ".html " .. label .. "] in dr Datebank vu ''Sports-Reference.com'' (änglisch)"
	end
end

local p = {}

function p.link(frame)
	-- This is a check to see if the optional first parameter contains ".html". If it does, remove it.
	id = string.gsub((frame.args[1] or ""), ".html", "")
	if not mw.wikibase then
		return linktext(id)
	end
	local entity = mw.wikibase.getEntityObject()
	if not entity then
		-- This is the place to insert a category for articles that don't have items in Wikidata.
		-- enwiki doesn't seem to have such a category, so in this case it is empty.
		-- For other wikis, just remove the two comment dashes and insert the correct category name.
		return linktext(id) -- .. "[[Kategorie:Artikel ohni wikidata-Iitrag]]"
	end
	local claims = entity.claims or {}
	local hasProp = claims["P1447"]
	if not hasProp then
		-- Category for articles that don't have the Sports Reference property on Wikidata.
		return linktext(id) .. "[[Kategorie:SportsReference nit uf Wikidata]]"
	end
	local propValue = hasProp[1].mainsnak.datavalue.value
	return linktext(propValue)
end

return p