Modul:Artikkellenke

Fra Wikisida.no
Sideversjon per 14. sep. 2025 kl. 03:46 av nb>EdoAug
(diff) ← Eldre sideversjon | Nåværende sideversjon (diff) | Nyere sideversjon → (diff)
Hopp til navigering Hopp til søk

Dokumentasjon for denne modulen kan opprettes på Modul:Artikkellenke/dok

local mRedirect = require('Module:Redirect')

local p = {}
local imageSize = "200px" -- default image size (shortest side). should be same as div.
local dimensionX = "" -- leave empty, i guess
local instance = "default"
local language = "nb" -- local language
local images = {
	["default"] = "Simply Stringy Landscape.svg", -- default image if no image available
	["human"] = "Simply Stringy Human.svg",
	["list"] = "Simply Stringy List.svg",
	["comp"] = "Simply Stringy Competition.svg",
	["media"] = "Simply Stringy Media.svg",
	}

function p.thumbnail(frame)
	local article = mRedirect.getTarget(frame.args["article"]) or frame.args["article"]
	local qid = mw.wikibase.getEntityIdForTitle(article)
	page = mw.wikibase.getEntity(qid)
	if page:getBestStatements("P18")[1] then
		image = page:getBestStatements("P18")[1].mainsnak.datavalue.value
	elseif page:getBestStatements("P41")[1] then
		image = page:getBestStatements("P41")[1].mainsnak.datavalue.value
	elseif page:getBestStatements("P154")[1] then
		image = page:getBestStatements("P154")[1].mainsnak.datavalue.value
	elseif pid(page,"P31") == "Q5" then
		image = images["human"]
	elseif pid(page,"P31") == "Q15416" or pid(page,"P31") == "Q11424" or pid(page,"P31") == "Q5398426" then
		image = images["media"]
	elseif pid(page,"P31") == "Q13406463" then
		image = images["list"]
	elseif pid(page,"P641") then
		image = images["comp"]
	else
		image = images["default"]
	end
	if isWider(image) then
		dimensionX = "x"
	end
	image = "[[Fil:" .. image .. "|" .. dimensionX .. imageSize .. "|link=" .. article .. "]]"
	return "<div class='artikkellenke'>[[" .. article  .. "|<div class='lenkedekke'></div>]]" .. "<div><p><span class='artikkeltittel'>" .. page:getLabel() .. "</span><br />".. cleanDescription(mw.wikibase.getDescriptionByLang(qid, language)) .. "</p></div>" .. image .. "</div>"
end

function cleanDescription(descr)
	if descr == nil then
		descr = ""
	elseif string.match(descr,"Wikimedia-") then
		descr = ""
	end
	return descr
end

function p.dimensionX(frame)
	return isWider(frame.args["filename"])
end

function pid(page, prop)
	if page:getBestStatements(prop)[1] ~= nil then
		return page:getBestStatements(prop)[1].mainsnak.datavalue.value.id
	else
		return false
	end
end

function isWider(i)
	file = mw.title.new(i, "File").file
	if file.width > file.height then
		return true
	else
		return false
	end
end

return p