پرش به محتوا

پودمان:پیوند ویکی‌داده

از ویکی‌نبشته

توضیحات این پودمان می‌تواند در پودمان:پیوند ویکی‌داده/توضیحات قرار گیرد.

local p = {}

-- Get a link to the given Wikidata item's page on the first of the following places:
--  1. Wikisource
--  2. Wikipedia
--  3. Commons
--  4. Reasonator
function p.link(frame)
	-- Check input.
	if frame.args.wikidata == nil or frame.args.wikidata == '' then
		return "<span class='error'>لطفاً «پارامتر» ویکی‌داده را مشخص کنید.</span>"
	end
	local itemId = frame.args.wikidata
	if not mw.wikibase.isValidEntityId(itemId) then
		return "<span class='error'>" .. itemId .. "' یک آیتم معتبر ویکی‌داده نیست.</span>"
	end
	if not mw.wikibase.entityExists(itemId) then
		return "<span class='error'>" .. itemId .. "' در ویکی‌داده وجود ندارد.</span>"
	end
	
	local label = mw.wikibase.getLabel(itemId)
	if frame.args.label ~= nil and frame.args.label ~= '' then
		label = frame.args.label
	end

	-- Look through the site hierarchy for a matching sitelink.
	-- These two variables are in the same order.
		local sitelinks = {'fawikisource', 'fawiki', 'enwiki', 'enwikisource'}
	local interwikis = {'', ':fa:w', ':en:w',  ':en:'}
	for i = 1, #sitelinks do
		local sitelink = mw.wikibase.getSitelink(itemId, sitelinks[i])
		if sitelink then
			return '<span class="module-wikidata-link">[[' .. interwikis[i] .. ':' .. sitelink .. '|' .. label .. ']]</span>';
		end
	end

	-- Fall back on Reasonator if no sitelink found.
	return '<span class="plainlinks module-wikidata-link reasonator-link">[https://reasonator.toolforge.org/?q=' .. itemId .. ' ' .. label .. ']</span>'
end

return p