Module:Natural monument wikidata
Lua
CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules
Module was created for lists of natural monuments in Kazakhstan and can also be used for other countries
Source: voy:ru:Module:Natural monument wikidata
Usage
edit{{#invoke:Natural monument wikidata|monument}}
Code
local p = {}
function p.monument(frame)
local markergroup = {['Q46169'] = 'see', ["Q728904"] = 'see', ['Q16653233'] = 'do', ['Q7212557'] = 'go', ['Q23790'] = 'buy', ['Q167346'] = 'eat', ['Q272231'] = 'sleep', ['Q179049'] = 'vicinity'}
local pArgs = frame:getParent().args
local lang = pArgs['lang'] or 'ru'
local country = pArgs['country']
local trns = mw.ext.data.get("Sandbox/Bok/localisation.tab", "_")
local translations = {}
for i, v in ipairs(trns.data) do
translations[v[1]] = v[2]
end
local llanguage = 'en'
local campaign = ''
local noupload = 'yes'
local dcat = ''
local countriesinfo = mw.ext.data.get("Sandbox/Bok/config.tab")
for i, v in ipairs(countriesinfo.data) do
if v[1] == country then
llanguage = v[2]
campaign = v[3]
noupload = v[5]
dcat = v[4]
end
end
local background_color = "#F8F8F8;"
local mwl = mw.language.new( lang )
local sort = pArgs['sort'] or 'no'
local sections = pArgs['sections'] or ''
local wdids = pArgs['wdid']
wdids = mw.text.split( wdids, ",", true)
values = {}
for i, wdid in ipairs(wdids) do
values[i] = {}
values[i]['wdid'] = wdid
values[i]['name'] = mw.wikibase.getLabelByLang(wdid, lang) or mw.wikibase.getLabelByLang(wdid, "ru") or mw.wikibase.getLabelByLang(wdid, "en") or mw.wikibase.getLabelByLang(wdid, llanguage) or ''
values[i]['wiki'] = mw.wikibase.getSitelink(wdid, lang .. 'wiki') or ''
values[i]['wikivoyage'] = mw.wikibase.getSitelink(wdid, 'ruwikivoyage') or '' -- не переведен
values[i]['wdpa'] = mw.wikibase.getBestStatements(wdid, 'P809')
values[i]['wdpa'] = (values[i]['wdpa'][1] and values[i]['wdpa'][1]['mainsnak']['datavalue']['value']) or ''
values[i]['image'] = mw.wikibase.getBestStatements(wdid, 'P18')
values[i]['image'] = (values[i]['image'][1] and mw.wikibase.renderSnak(values[i]['image'][1]['mainsnak'])) or ''
values[i]['commonscat'] = mw.wikibase.getBestStatements(wdid, 'P373')
values[i]['commonscat'] = (values[i]['commonscat'][1] and mw.wikibase.renderSnak(values[i]['commonscat'][1]['mainsnak'])) or ''
local coords = mw.wikibase.getBestStatements(wdid, 'P625')
values[i]['lat'] = (coords[1] and coords[1]['mainsnak']['datavalue']['value'].latitude) or ''
values[i]['long'] = (coords[1] and coords[1]['mainsnak']['datavalue']['value'].longitude) or ''
values[i]['area'] = mw.wikibase.getBestStatements(wdid, 'P2046')
if values[i]['area'][1] then
local area_n = mwl:formatNum(tonumber(values[i]['area'][1]['mainsnak']['datavalue']['value']['amount']))
local p5061 = mw.wikibase.getBestStatements(string.gsub(values[i]['area'][1]['mainsnak']['datavalue']['value']['unit'], "http://www.wikidata.org/entity/", ""), 'P5061')
local area_u = ''
for k, v in ipairs(p5061) do
if (v['mainsnak']['datavalue']['value']['language'] == lang or (area_u == '' and v['mainsnak']['datavalue']['value']['language'] == 'en')) then
area_u = v['mainsnak']['datavalue']['value']['text']
end
end
values[i]['area'] = area_n .. ' ' .. area_u
else
values[i]['area'] = ''
end
values[i]['iucntype'] = mw.wikibase.getBestStatements(wdid, 'P814')
values[i]['iucntype'] = (values[i]['iucntype'][1] and mw.wikibase.getLabelByLang(values[i]['iucntype'][1]['mainsnak']['datavalue']['value']['id'], lang)) or ''
local p17 = mw.wikibase.getBestStatements(wdid, 'P17')
p17 = (p17[1] and p17[1]['mainsnak']['datavalue']['value']['id']) or ''
values[i]['municipality'] = mw.wikibase.getBestStatements(wdid, 'P131')
values[i]['municipality'] = (values[i]['municipality'][1] and mw.wikibase.getLabelByLang(values[i]['municipality'][1]['mainsnak']['datavalue']['value']['id'], lang)) or ''
values[i]['first_level'] = values[i]['municipality']
if values[i]['municipality'] ~= '' then
local x = mw.wikibase.getBestStatements(wdid, 'P131')
x = mw.wikibase.getBestStatements(x[1]['mainsnak']['datavalue']['value']['id'], 'P131')
while x and next(x) and x[1]['mainsnak']['datavalue']['value']['id'] ~= p17 do
values[i]['first_level'] = mw.wikibase.getLabelByLang(x[1]['mainsnak']['datavalue']['value']['id'], lang) or ''
values[i]['municipality'] = values[i]['first_level'] .. ", " .. values[i]['municipality']
x = mw.wikibase.getBestStatements(x[1]['mainsnak']['datavalue']['value']['id'], 'P131')
end
end
local p31 = mw.wikibase.getBestStatements(wdid, 'P31')
values[i]['m_type'] = ''
for k, v in ipairs(p31) do
local x = v.mainsnak.datavalue.value.id
if x == 'Q46169' or x == 'Q16653233' or x == 'Q7212557' or x == 'Q23790' or x == 'Q167346' or x == 'Q272231' or x == 'Q179049' or x == 'Q728904' then
values[i]['m_type'] = x
end
end
if values[i]['m_type'] ~= '' then
values[i]['markergroup'] = markergroup[values[i]['m_type']] or 'other'
values[i]['m_type'] = mw.wikibase.getLabelByLang(values[i]['m_type'], lang) or ''
end
if values[i]['markergroup'] == '' then
values[i]['markergroup'] = 'other'
end
local p1435 = mw.wikibase.getBestStatements(wdid, 'P1435')
values[i]['unesco'] = ''
values[i]['ramsar'] = ''
for k, v in ipairs(p1435) do
local x = v.mainsnak.datavalue.value.id
if x == 'Q19683138' then
values[i]['ramsar'] = mw.wikibase.getLabelByLang(x, lang) or ''
end
if x == 'Q9259' or x == 'Q43113623' or x == 'Q1459900' then
values[i]['unesco'] = mw.wikibase.getLabelByLang(x, lang) or ''
if x == 'Q43113623' and v['qualifiers']['P361'] then
values[i]['unesco'] = values[i]['unesco'] .. ' «' .. (mw.wikibase.getLabelByLang(v['qualifiers']['P361'][1]['datavalue']['value']['id'], lang) or '') .. '»'
end
end
end
end
local t = ''
local csection = ''
if sort and sort == "yes" then
function comp(a, b)
if a.first_level < b.first_level or (a.first_level == b.first_level and a.name < b.name) then
return true
else
return false
end
end
table.sort( values, comp )
end
for i, m in ipairs(values) do
if sections and sections == 'yes' and m['first_level'] ~= csection then
t = t .. "\n== " .. m['first_level'] .. " =="
csection = m['first_level']
end
-- Header
t = t .. "\n" .. [[{| id=]] .. m.wdid .. [[ class="monument" border=0 style="font-size:97%;width:100%;"
|- valign="top" ]]
-- Image
local imagelink = '[[File:Natural landmark without photo.svg|border|150x150px|center|' .. translations['nophotoLabel'][lang] ..']]'
if m.image and m.image ~= '' then
imagelink = string.format('[[File:%s|150x150px|center|%s]]', m.image, m.name or translations['photoLabel'][lang])
end
t = t .. '\n| width="160px" | ' .. imagelink
-- Name
t = t .. '\n| style=" background-color:' .. background_color .. ' padding-left:10px;" valign="middle" | '
t = t .. '<span class="monument-name" style="font-size:115%; font-weight:bold">'
if m.wikivoyage and m.wikivoyage ~= '' then
t = t .. '[[File:Wikivoyage-logo.svg|15px]] [[' .. m.wikivoyage .. '|' .. m.name .. ']]'
else
t = t .. m.name
end
t = t .. '</span><br>'
-- Location:
t = t .. "''" .. translations['locationLabel'][lang] .. ":'' " .. (m.municipality or '')
-- Area:
if m.area and m.area ~= '' then
t = t.. string.format(" ''" .. translations['areaLabel'][lang] .. ":'' %s", m.area)
end
t = t .. '<br>'
-- Links
-- if m.lat and m.long and m.lat~= '' and m.long ~= '' then
-- t = t .. "''" .. translations['mapLabel'][lang] .. ":'' "
-- t = t .. frame:expandTemplate{ title = 'marker', args = { ["lat"] = m.lat, ["long"] = m.long, ["name"] = mw.text.encode(m.name), ["image"] = m.image, ["type"] = m.markergroup or 'other' } }
-- t = t .. " "
-- end
-- t = t .. frame:extensionTag{ name = 'maplink', content = [=[ {
-- "type": "ExternalData",
-- "service": "geoshape",
-- "ids": "]=] .. wdid .. [=[",
-- "properties": {
-- "stroke-width": 0,
-- "stroke": "#ffffff",
-- "fill": "#88ff88",
-- "fill-opacity": 0.6,
-- "title": "]=] .. mw.text.encode(name) .. [=["
-- }
-- } ]=], args = { ["class"] = "no-icon", ["text"] = "", ["group"] = m.markergroup } }
t = t .. "''" .. translations['linksLabel'][lang] .. ":'' "
if m.wiki and m.wiki ~= '' then
t = t .. ' [[File:Wikipedia-logo-v2.svg|19px|link=//' .. lang .. '.wikipedia.org/wiki/' .. mw.uri.encode(m.wiki, "PATH") .. '|' .. translations['wikipediaLabel'][lang] .. ']]'
end
if m.commonscat and m.commonscat ~= '' then
t = t .. ' [[File:Commons-logo.svg|13px|link=//commons.wikimedia.org/wiki/Category:' .. mw.uri.encode(m.commonscat, "PATH") .. '|' .. translations['commonsLabel'][lang] .. ']]'
end
if m.wdid and m.wdid ~= '' then
t = t .. ' [[File:Wikidata-logo-without-paddings.svg|18px|link=//www.wikidata.org/wiki/' .. mw.uri.encode(m.wdid, "PATH") .. '|' .. translations['wikidataLabel'][lang] .. ']]'
end
if m.wdpa and m.wdpa ~= '' then
t = t .. ' [[File:P geography 3 b.png|22px|link=//protectedplanet.net/' .. mw.uri.encode(m.wdpa, "PATH") .. '|' .. translations['wdpaLabel'][lang] .. ']]'
end
t = t .. "<br>"
-- Описание
t = t .. "''" .. translations['descriptionLabel'][lang] .. ":'' "
if m.iucntype ~= "" then
t = t .. string.gsub(m.iucntype, ": ", " (") .. '). '
elseif m.m_type ~= "" then
t = t .. m.m_type .. '. '
end
if m.ramsar and m.ramsar ~= "" then
t = t .. mwl:ucfirst(m.ramsar) .. '. '
end
if m.unesco and m.unesco ~= "" then
t = t .. mwl:ucfirst(m.unesco) .. '. '
end
-- Upload link
if noupload ~= 'yes' then
t = t .. '\n| class="plainlinks" style="width:10%; text-align:center; vertical-align:middle; background-color:#FFFACD; padding:0 1em" '
if not m.commonscat or m.commonscat == '' then
m.commonscat = dcat or ''
end
t = t .. "| [//commons.wikimedia.org/w/index.php?title=Special:UploadWizard&campaign=" .. mw.uri.encode(campaign, "PATH")
t = t .. [[&id=]] .. mw.uri.encode(m.wdid or '', "PATH")
t = t .. [[&description=]] .. mw.uri.encode((m.name .. ": " .. m.municipality), "PATH")
t = t .. [[&categories=]] .. mw.uri.encode(m.commonscat, "PATH")
t = t .. '&uselang=' .. lang .. ' <span class="mw-ui-button">' .. translations['uploadLinkLabel'][lang] .. '</span>]'
end
t = t .. "\n|}<hr>"
end
return t
end
return p;