Module:Wikidata: Difference between revisions
Jump to navigation
Jump to search
>Jackmcbarn (fix crash for novalue claims) |
>Mxn (withEditButton()) |
||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local lang = mw.getContentLanguage() | |||
-- This is used to get a normal wiki-linked value, or a comma separated list of them if multiple values exist | -- This is used to get a normal wiki-linked value, or a comma separated list of them if multiple values exist | ||
Line 79: | Line 80: | ||
return input_parm | return input_parm | ||
end | end | ||
end | |||
function p.withEditButton(frame) | |||
local propertyID = mw.text.trim(frame.args[1] or "") | |||
local input_parm = mw.text.trim(frame.args[2] or "") | |||
local get = frame.args.get and p["get" .. lang:ucfirst(frame.args.get)] | |||
local value = get and get(frame) | |||
if value and input_parm == "FETCH_WIKIDATA" then | |||
local edit_button = frame:expandTemplate{ | |||
title = "Sửa dữ liệu", | |||
args = { | |||
p = propertyID:match("%d+"), | |||
}, | |||
} | |||
return mw.ustring.format("%s %s", value, edit_button) | |||
end | |||
return input_parm | |||
end | end | ||
return p | return p |
Revision as of 04:29, 2 July 2014
Documentation for this module may be created at Module:Wikidata/doc
local p = {} local lang = mw.getContentLanguage() -- This is used to get a normal wiki-linked value, or a comma separated list of them if multiple values exist p.getValue = function(frame) local propertyID = mw.text.trim(frame.args[1] or "") local input_parm = mw.text.trim(frame.args[2] or "") if input_parm == "FETCH_WIKIDATA" then local entity = mw.wikibase.getEntity() if entity.claims[propertyID] ~= nil then local out = {} for k, v in pairs(entity.claims[propertyID]) do if v.mainsnak.snaktype == 'value' then if (mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"])) then out[#out + 1] = "[[" .. mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"]) .. "]]" else out[#out + 1] = "[[:d:" .. "Q" .. v.mainsnak.datavalue.value["numeric-id"] .. "|Q" .. v.mainsnak.datavalue.value["numeric-id"] .. "]]<small><abbr title='Article is not yet available in this wiki'>[?]</abbr></small>" end end end return table.concat(out, ", ") else return "" end else return input_parm end end -- This is used to get a value like 'male' (for property p21) which won't be linked p.getRawValue = function(frame) local propertyID = mw.text.trim(frame.args[1] or "") local input_parm = mw.text.trim(frame.args[2] or "") if input_parm == "FETCH_WIKIDATA" then local entity = mw.wikibase.getEntity() if entity.claims[propertyID] ~= nil then local out = {} for k, v in pairs(entity.claims[propertyID]) do if v.mainsnak.snaktype == 'value' then out[#out + 1] = mw.wikibase.label("Q" .. v.mainsnak.datavalue.value["numeric-id"]) end end return table.concat(out, ", ") else return "" end else return input_parm end end -- This is used to get a date value for date_of_birth (p569), etc. which won't be linked -- consolidate by testing if entity.claims[propertyID].mainsnak.datavalue.type is "time" p.getDateValue = function(frame) local propertyID = mw.text.trim(frame.args[1] or "") local input_parm = mw.text.trim(frame.args[2] or "") local date_format = mw.text.trim(frame.args[3] or "dmy") if input_parm == "FETCH_WIKIDATA" then local entity = mw.wikibase.getEntity() if entity.claims[propertyID] ~= nil then local out = {} local dt = {} for k, v in pairs(entity.claims[propertyID]) do if v.mainsnak.snaktype == 'value' then local d = v.mainsnak.datavalue.value.time dt.year = string.sub(d, 9, 12) dt.month = string.sub(d, 14, 15) dt.day = string.sub(d, 17, 18) if date_format == "dmy" then out[#out + 1] = os.date("%e %B %Y", os.time(dt)) else out[#out + 1] = os.date("%B %e, %Y", os.time(dt)) end end end return table.concat(out, ", ") else return "" end else return input_parm end end function p.withEditButton(frame) local propertyID = mw.text.trim(frame.args[1] or "") local input_parm = mw.text.trim(frame.args[2] or "") local get = frame.args.get and p["get" .. lang:ucfirst(frame.args.get)] local value = get and get(frame) if value and input_parm == "FETCH_WIKIDATA" then local edit_button = frame:expandTemplate{ title = "Sửa dữ liệu", args = { p = propertyID:match("%d+"), }, } return mw.ustring.format("%s %s", value, edit_button) end return input_parm end return p