Moduuli:FacebookCite

Jedipediasta, vapaasta Tähtien sota-tietosanakirjasta tänään, 11. tammikuuta 2025
Siirry navigaatioonSiirry hakuun

Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:FacebookCite/ohje

-- <nowiki>
-- Tämä moduuli toteuttaa mallineen [[Malline:FacebookCite]].
 
local p = {}
local lang = mw.language.getContentLanguage()
local currentTitle = mw.title.getCurrentTitle()
 
local function makeCategoryLink(cat)
	-- "Category" is split out here so that the module isn't put into the
	-- category "%s" when the page is saved.
	return string.format('[[%s:%s]]', 'Luokka', cat)
end

local function formatDate(format, date)
	local success, date = pcall(lang.formatDate, lang, format, date)
	if success then
		return date
	end
end
 
local function makeLinkedDate(date)
	return formatDate('[[j. F"ta"]] [[Y]]', date)
end
 
local function makeArchiveLink(archive)
	if archive:find('^http') then
		return string.format('[%s %s]', archive, 'linkki varmuuskopioon')
	elseif mw.title.new(archive, 'Tiedosto').fileExists then
		return string.format('[[:Tiedosto:%s|%s]]', archive, 'kuvakaappaus')
	else
		return string.format('[[:en:File:%s|%s]]', archive, 'kuvakaappaus')
	end
end
 
function p._main(args)
	local ret = {}
 
	-- Shortcut function for adding new strings
	local function add(val)
		ret[#ret + 1] = val
	end
 
	-- Facebook icon
	add('[[Tiedosto:Facebook_icon.svg|14px|link=https://facebook.com]]&nbsp;')
 
	-- Start citation details.
	if args.profilelink then
		add(string.format(
			'%s ([https://www.facebook.com/%s @%s]) [[wikipedia:fi:Facebook|Facebookissa]]',
			args.author, args.profilelink, args.profilelink
		))
	end
	-- Link or archive link
	if args.url then
		add(string.format(
			'[https://www.facebook.com/%s %s].',
			args.url, args.description
		))
	end
	-- Date posted
	do
		if args.dateposted then
			add(string.format(' (%s).', makeLinkedDate(args.dateposted)))
		end
	end

	-- Quote
	if args.quote then
		add(string.format(' ”%s”', args.quote))
	end

	-- Archive
	if args.url then
		if args.archivedate then
			add(string.format(' <small>([https://web.archive.org/web/%s/https://facebook.com/%s linkki varmuuskopioon]</small>', args.archivedate, args.url))
		elseif args.archiveurl then
			local archive = makeArchiveLink(args.archiveurl)
			add(string.format(' <small>(%s)</small>', archive))
		elseif args.image then
			add(string.format(' <small>([[:en:%s|linkki varmuuskopioon]])</small>', args.image))
		elseif args.nobackup then
			add(string.format(' <small>(ei linkkiä varmuuskopioon)</small>'))
		else
			add(string.format(' <small>([https://web.archive.org/web/https://facebook.com/%s linkki varmuuskopioon]</small>', args.url))
		end
	end
 
	-- Screenshot tracking category
	if args.url
		and not args.archiveurl
		and not args.archivedate
		and not args.image
		and not args.nobackup
		and currentTitle.namespace == 0
	then
		add(makeCategoryLink('Sivut, joissa on puuttuvia arkistolinkkejä'))
	end

	if args.userpage
		or args.link
		or args.archive
		or args.noimage
	then
		add(makeCategoryLink('Sivut, joissa on mallineparametrivirheitä'))
	end

	return table.concat(ret)
end
 
function p.main(frame)
	local args = {}
	for k, v in pairs(frame:getParent().args) do
		v = v:match('^%s*(.-)%s*$') -- trim whitespace
		if v ~= '' then
			args[k] = v
		end
	end
	if args[1] then
		args.profilelink = args[1]
	end
	if args[2] then
		args.url = args[2]
	end
	if args[3] then
		args.author = args[3]
	end
	return p._main(args)
end
 
return p
 
-- </nowiki>