Modul:External links: Forskjell mellom sideversjoner

Fra Wikisida.no
Hopp til navigering Hopp til søk
(debugging)
(+genitiv)
Linje 4: Linje 4:
local conf = {}
local conf = {}


local function getLabel(entity)
local function getLabel(entity, use_genitiv)
if not entity then
if not entity then
label = mw.title.getCurrentTitle().text
label = mw.title.getCurrentTitle().text
else
else
label = mw.wikibase.label(entity.id) or mw.title.getCurrentTitle().text
label = mw.wikibase.label(entity.id) or mw.title.getCurrentTitle().text
return genitiv(label)
return use_genitiv and genitiv(label) or label
end
end
end
end
Linje 50: Linje 50:
if claims then
if claims then
local conf_claims = conf:getConfiguredClaims(contLang:getCode())
local conf_claims = conf:getConfiguredClaims(contLang:getCode())
mw.log('lang='..dump(contLang:getCode()) .. dump(conf_claims))
mw.log(dump(conf_claims))
for prop, v in pairs(conf_claims) do
for prop, v in pairs(conf_claims) do
local _, _, ch, num= prop:find("([pP])(%d+)")
local _, _, ch, num= prop:find("([pP])(%d+)")
Linje 57: Linje 57:
if formaturlp and formaturlp[1] and formaturlp[1].mainsnak.datavalue then
if formaturlp and formaturlp[1] and formaturlp[1].mainsnak.datavalue then
local formaturl = formaturlp[1].mainsnak.datavalue.value
local formaturl = formaturlp[1].mainsnak.datavalue.value
output[#output+1] = "* " .. (v.langcode and frame:expandTemplate{ title="Språkikon", args = { v.langcode } } .. " " or "") .. mw.message.newRawMessage(v.message, getLabel(entity), mw.message.newRawMessage(formaturl, claims[prop][1].mainsnak.datavalue.value):plain()):plain()
output[#output+1] = "* " .. (v.langcode and frame:expandTemplate{ title="Språkikon", args = { v.langcode } } .. " " or "") .. mw.message.newRawMessage(v.message, getLabel(entity, v.genitiv), mw.message.newRawMessage(formaturl, claims[prop][1].mainsnak.datavalue.value):plain()):plain()
end
end
end
end

Sideversjonen fra 28. mar. 2016 kl. 19:49

Modulen "External links" inneholder følgende metoder som er ment brukt via maler

getLinks
Henter eksterne lenker fra Wikidata i henhold til en konfigurasjonsfil
Funksjonen har noen få felles standard-parametre som kan benyttes
conf
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=...}}
Den vil da returnere en rekke formaterte lenker til eksterne sider i henhold til en konfigurasjon som ligger som undersider av denne modulen.
Følgende konfigurasjoner er tilgjengelige
  • Arter - Artslenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Arter}}. Se {{Artslenker}} for eksempel på bruk.
  • Astronomi - Astronomi, Kalles opp slik: {{#invoke:External links|getLinks|conf=Astronomi}}. Se {{Astronomilenker}} for eksempel på bruk.
  • Autoritetsdata - Autoritetsdata, Kalles opp slik: {{#invoke:External links|getLinks|conf=Autoritetsdata}}. Se {{Autoritetsdata}} for eksempel på bruk.
  • Bryggeri - Bryggerilenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Bryggeri}}. Se {{Bryggerilenker}} for eksempel på bruk.
  • Film - Filmlenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Film}}. Se {{Filmlenker}} for eksempel på bruk.
  • Filmperson - Filmpersonlenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Filmperson}}. Se {{Filmperson}} for eksempel på bruk.
  • Musikk - Musikklenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Musikk}}. Se {{Musikklenker}} for eksempel på bruk.
  • Offisielle lenker - Offisielle lenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Offisielle lenker}}. Se {{Offisielle lenker}} for eksempel på bruk.
  • Politiker - Politiker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Politiker}}. Se {{Politiker}} for eksempel på bruk.
  • Some - Sosiale medie-lenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Some}}. Se {{Somelenker}} for eksempel på bruk.
  • Spill - Spill-lenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Spill}}. Se {{Spill-lenker}} for eksempel på bruk.
  • Sport - Sportslenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Sport}}. Se {{Sportslenker}} for eksempel på bruk.
  • Skip - Skipslenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Skip}}. Se {{Skipslenker}} for eksempel på bruk.
  • Forsker - Forskerlenker, Kalles opp slik: {{#invoke:External links|getLinks|conf=Forsker}}. Se {{Forskerlenker}} for eksempel på bruk.
  • Test - For testing av nye typer og utvikling, Kalles opp slik: {{#invoke:External links|getLinks|conf=Test}}. Skal ikke benyttes i produksjon.
tittel
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=<konfigurasjon ihht. ovenfor>|tittel=...}}
Denne parameteren kan overstyre artikkelnavnet som benyttes videre i modulen. Hvis dette ikke er satt, vil den som standard bruke sidenavnet til artikkelen.
maxlink
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=<konfigurasjon ihht. ovenfor>|maxlink=...}}
Denne parameteren setter maksimum antall lenker som vises frem. Standardverdien er satt til 10.
prop
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=<konfigurasjon ihht. ovenfor>|prop=<egenskap>,<egenskap2>,...}}
Denne parameteren setter en begrensning på hvilke egenskaper som skal vises frem. De skilles av med et komma, mellomrom, semikolon eller kolon. Dersom egenskapen starter med et minus-tegn (-), f.eks. -P345, så vil alle egenskaper, unntatt den som er angitt forsøkes vist frem. Det er mulig å legge inn flere av disse.
kort
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=<konfigurasjon ihht. ovenfor>|kort=1}}
Denne parameteren bestemmer om kort-versjonen av lenkene skal benyttes.
inline
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=<konfigurasjon ihht. ovenfor>|inline=1}}
Denne parameteren bestemmer om lenkene skal legges på en linje med en separator i mellom seg. Linjen vil ikke prefikses med noen bullet eller lignenden. Se definisjonen av separatoren i Module:External links/conf under ['msg-inline-separator']. Denne funksjonaliteten er ment brukt i tilfeller hvor man ønsker å benytte lenkene i referanser eller lignende.
språk
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=<konfigurasjon ihht. ovenfor>|språk=<langcode1>,<langcode2>...}}
Denne parameteren setter en begrensning på hvilke språk som skal vises frem. De skilles av med et komma, mellomrom, semikolon eller kolon. Dersom språkkoden starter med et minus-tegn (-), f.eks. -fr, så vil alle språkkoder, unntatt den vises frem. Det er mulig å legge inn flere av disse. Spesial-verdien alle overstyrer og tillater alle språk.
track
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=<konfigurasjon ihht. ovenfor>|track=<egenskap1>,<egenskap2>...}}
Denne parameteren styrer individuelle sporingskategorier for hver egenskap. De skilles av med et komma, mellomrom, semikolon eller kolon. Dersom egenskapen starter med et minus-tegn (-), f.eks. -P345, så vil den ikke spores (i tilfelle den er konfigurert til å spores i felleskonfigurasjonen). Det er mulig å legge inn flere av disse, og spesial-koden alle vil slå på sporing på alle.
<egenskapsnavn>
Funksjonen kalles opp slik: {{#invoke:External links|getLinks|conf=<konfigurasjon ihht. ovenfor>|<egenskapsnavn>=<verdi>}}
Dette er en generell måte å sette verdien til en egenskap manuelt fra artikler/maler. Dette er ment brukt for tilfeller hvor man bruker en lokalt definert egenskap og trenger å gi den en verdi fra artikkelen. F.eks. bbfc=46443 vil gi ID-en til Blue Thunder i BBFc sin database, og den manuelle definisjonen av bbfc i Module:External links/conf/Film vil da benyttes sammen med den ID-en for å bygge den eksterne lenken.

Se også


local genitiv = require('Modul:Genitiv')._genitiv
local contLang = mw.language.getContentLanguage()

local conf = {}

local function getLabel(entity, use_genitiv)
	if not entity then
		label = mw.title.getCurrentTitle().text
	else
		label = mw.wikibase.label(entity.id) or mw.title.getCurrentTitle().text
	return use_genitiv and genitiv(label) or label
	end
end

local function dump(obj)
	return "<pre>" .. mw.dumpObject(obj) .. "</pre>"
end

local function getArgument(frame, argument)
	local args = frame.args
	if args[1] == nil then
		local pFrame = frame:getParent();
		args = pFrame.args;
		for k,v in pairs( frame.args ) do
			args[k] = v;
		end
	end
	if args[argument] then
		return args[argument]
	end
	return nil
end

local p = {}

function p.getLinks(frame)
	local configured_conf = getArgument(frame, 'conf')
	if configured_conf then
		conf = require ('Module:External_links/conf/'..configured_conf)
	else
		return 'Missing configuration: '..configured_conf
	end
	local entity = mw.wikibase.getEntityObject()
	local claims = nil
	local output = {}
	if entity and entity.claims then
		claims = entity.claims
		--mw.log(dump(claims))
	end
	if claims then
		local conf_claims = conf:getConfiguredClaims(contLang:getCode())
		mw.log(dump(conf_claims))
		for prop, v in pairs(conf_claims) do
			local _, _, ch, num= prop:find("([pP])(%d+)")
			if claims[prop] and claims[prop][1] and claims[prop][1].mainsnak.datavalue then
				local formaturlp = mw.wikibase.getEntity(prop).claims['P1630']
				if formaturlp and formaturlp[1] and formaturlp[1].mainsnak.datavalue then
					local formaturl = formaturlp[1].mainsnak.datavalue.value
					output[#output+1] = "* " .. (v.langcode and frame:expandTemplate{ title="Språkikon", args = { v.langcode } } .. " " or "") .. mw.message.newRawMessage(v.message, getLabel(entity, v.genitiv), mw.message.newRawMessage(formaturl, claims[prop][1].mainsnak.datavalue.value):plain()):plain()
				end
			end
		end
	end
	return table.concat(output,"\n")
	
end

return p