databox

La documentazione per questo modulo può essere creata in Modulo:Databox/man

-- Versions: (Besides minor adjustments to the property_blacklist and layout) -- 2020-05-25 Hide "is instance of" -> "human" -- 2020-05-25 Category:Databox that shows qid code -- 2020-05-24 Years linked to articles. Decades, centuries and millennia formated in local language. -- 2020-05-13 P155 (follows) and P156 (followed by) merged into one "Chronology" list, also showing current object. --            Parameter "list_separator" for replacing comma in lists.   -- 2020-05-10 Parameter "era" for choosing if year "BCE" (or similar in local language) should be replaced by "BC", empty string or other. --            Upper-case initial letter of P31 (instance of). -- 2020-05-05 P31 hidden if too long list. Administrative wiki category if too long list. -- 2020-05-02 More than two parent/child levels in bulleted list. -- 2020-05-01 Property short names based on P1813. Image legend/caption.  -- 2020-04-28 Properties linked to articles (based on Property:P1629 of the property).  --            Datatype "url" not shown (except for official web site). Input parameter "levels".  -- 2020-04-27 Two higher and two lower levels of child and parent items shown as bulleted list for some properties -- 2020-04-21 Parameters "width", "height", "zoom" and "list_length". Soft hyphens auto-inserted in long property names. -- 2020-04-18 Monolingual text strings hidden. Property name hidden if no good value. First image shown if several images.  -- 2020-04-16 Description shown (only in local language). First letter of label upper-case. -- 2020-04-13 Values of datatype "quantity" shown. Pen hidden in printout. -- 2020-04-13 Mapframe code copied from the 2019-03-04 af.wikipedia.org version. -- 2020-04-07 Imported from the 2019-04-26 fr.wikipedia.org version   -- Blocked properties: local property_blacklist = {     'P360', --is a list of     'P4224', --category contains     'P935', -- Commons gallery     'P1472', -- Commons Creator page     'P1612', -- Commons Institution page     'P373', -- Commons category     'P3722', -- Commons maps category     'P7561', --  for the interior of the item     'P1151', -- topic's main Wiki portal     'P1424', -- topic's main template     'P910', -- topic's main category     'P1200', -- bodies of water basin category     'P1792', -- category of associated people     'P1464', -- category for people born here     'P1465', -- category for people who died here     'P1791', -- category of people buried here     'P1740', -- category for films shot at this location     'P2033', -- Category for pictures taken with camera     'P2517', -- category for recipients of this award     'P4195', -- category for employees of the organization     'P1754', -- category related to list     'P301', -- category's main topic     'P971', -- category combines topics     'P3876', -- category for alumni of educational institution     'P1753', -- list related to category     'P7867', -- category for maps     'P1921', -- Wikidata RDF URI format     'P3921', -- Wikidata SPARQL query equivalent     'P1204', -- Wiki portal's main topic     'P1423', -- template's main topic     'P1709', -- equivalent class     'P3950', -- narrower external class     'P2888', -- exact match     'P1382', -- coincident with     'P2670', -- has parts of the class     'P3113', -- does not have part     'P2737', -- union of     'P2738', -- disjoint union of     'P2445', -- metasubclass of     'P1963', -- properties for this type     'P3176', -- uses property     'P1889', -- different from     'P460', -- said to be the same as     'P2959', -- permanent duplicated item     'P2860', -- cites     'P5125', -- wikimedia outline     'P5008', -- on focus list of Wiki project     'P7084', -- related category     'P1687', -- Wikidata main property for this item      'P2559', -- Wikidata usage instructions     'P5692', -- Wikidata dummy value     'P1343', -- described by source     'P972',  -- catalogue     'P1282', -- OSM tag or key     'P553',  -- web site account     'P968',  -- email     'P2572', -- hashtag     'P3761', -- IPv4 range     'P4839', -- Wolfram Language entity code     'P6104', -- Maintained by Wikiproject     'P5996', -- Category for films in this language     'P2354', -- list article (seldom available in local language)     'P6365', -- member category     'P528', -- catalog code     'P667', -- ICPC 2 ID     'P944', -- Code of nomenclature     'P1438', -- Jewish Encyclopedia ID (Russian)e     'P1402', -- Foundational Model of Anatomy ID     'P1461', -- Patientplus ID     'P1692', -- ICD-9-CM code     'P1748', -- NCI Thesaurus ID     'P1193', -- prevalence (often different value in different countries)     'P2176', -- drug used for treatment (we avoid medical advise)     'P2293', -- genetic association     'P1814', -- Japanese name in kana     'P747', -- editions     'P1433', -- published in     'P4969', -- derivative work     'P217', -- inventory number     'P2540', -- Aarne–Thompson–Uther Tale Type Index     'P1036', -- DDC     'P1149', -- LCC     'P1150', -- RVK     'P1190', -- UDC     'P1987', -- MCN code     'P2263', -- ISOCat id     'P2283', -- Uses      'P443',  -- Pronounciation. Media file. (Should be shown if in local language.)     'P2184', -- History of subject. (Should be shown if article in local language)     'P989',  -- spoken text. (Should be shown if in local language)     'P1793', -- Format som regex     'P4354', -- Sökurlformat     'P5869', -- model item     'P859',  -- sponsor     'P7973', -- quantity symbol (LaTeX)     'P6216', -- copyright status     'P1830', -- owner of (seldom useful)     'P487',  -- unicode-teccken      'P8933', -- kategori för vyer hä­rif­rån     'P1299', -- avbildning }  -- Exceptions to the datatype blocking: local property_whitelist = {  'P856', -- official website 'P3896',-- geoshape 'P345', -- IMDB id     'P6375' -- street address }  -- Properties with higher level items: local properties_with_parents = {  'P131', -- located in the administrative territorial entity 'P144', -- based on 'P155', -- follows 'P171', -- parent taxon 'P276', -- location 'P279', -- subclass of 'P361', -- part of 'P706', -- located on terrain feature 'P749', -- parent organization 'P1647' -- subproperty of }  local properties_with_children = {  -- Properties with lower level items: 'P150', -- contains administrative territorial entity 'P156', -- followed by 'P355', -- subsidiary 'P527', -- has part  'P1012', -- contains 'P4330' -- contains }  local function buildInteractiveMap(width, point, item_id, zoom) --Utility function to build maps     local geojson = {         {             type = 'Feature',             geometry = {                 type = "Point",                 coordinates = { point.longitude, point.latitude }             },             properties = {                 title = point.text or '',                 ['marker-symbol'] = point.marker or 'marker',                 ['marker-color'] =  point.markercolor or "#224422",             }         }     }     local args = {         ['height'] = width,         ['width'] = width,         ['frameless'] = 'frameless',         ['align'] = 'center',         ['latitude'] = point.latitude,         ['longitude'] = point.longitude,         ['zoom'] = zoom,         ['lang'] = 'nap' -- fallbacks to local language if Neapolitan name is missing. ) }     return mw.getCurrentFrame():extensionTag('mapframe', mw.text.jsonEncode(geojson), args) end  function Set(list) -- values to booleans with keys local set = {} for _, l in pairs(list) do  set[l] = true end return set end  function  listCase(str) -- Capitalizes first visible character of list produced by formatStatements()  -- Example: [[link|first item]], second item --     -->  [[link|First item]], second item return str :gsub('^%[%[(.-)|(.-)%]%]', function(a,b)  return '[[' .. a .. '|'  .. b:gsub('^%l', string.upper)  .. ']]'  end) :gsub('^(%l)',  function(a)  return '' ..string.upper(a)  end) end  function listSeparate(str, list_separator) -- Replaces comma in list produced by formatStatements()  -- Example: list_separator = ';
'
-- str = [[link|first item]], second item -- -> [[link|first item]];
second item
if list_separator ~= ',' then return str :gsub(',', ''..list_separator) else return str end end function hyphenate(str, lang) -- Inserts soft hyphens in long words, typically before each consonant that is followed by a vowel (lower-case letters) -- Should work good enough for most languages. Language specific exceptions may be added. local nonHyphenatedLanguages = Set{ 'ar', 'he', 'zh', 'ja', 'ko', 'vi', 'fa', 'ps' } if nonHyphenatedLanguages[lang] then -- Not languages without alphabetic writing system or with few vowels return str end result = '' for word in str:gmatch("%S+") do if #word < 10 then result = result .. ' ' .. word else result = result .. ' ' .. word:sub(1,3) -- Not too early in word .. word:sub(4) :gsub("([bcdfghjklmnpqrstvwxzđçčĉñŋĝĥĵŝšŧžßÐðþğşśćńŁżźбвгжийклмнпрст]" .. "[aouåeiyäöæøáéíóúýàèâêëüãŭœāēīōūəąęóадеёзоу])", "­%1") -- Insert soft-hyphens before each consonant that is followed by vowel :gsub("­([\128-\193])", "%1" ) -- Revert split of two-byte UTF-8 character :gsub("-(%a?%a?%a?%a?)­", "-%1"):gsub("­(%a?%a?%a?%a?)-", "%1-") -- Not too near a hard hyphen -- Some Swedish exceptions for wikidata properties, probably relevant to similar languages: :gsub("­x", "x­") -- Example: tids-komp-lex-i-tet :gsub("sc­h", "­sch") :gsub("ss­j", "s­sj") :gsub("n­g", "ng­") :gsub("­sche[­]*f", "s­chef") -- Example: Rege-ring-sche-fens -> Rege-rings-chefens :gsub("nist­ra", "nis­tra") -- Example: admi-nist-ra-tion -> admi-nis-tra-tion :gsub("­ror­ga[­]*n", "r­organ") -- Example: dotte-ror-ga-ni-sa-tion -> dotter-organi-sa-tion :gsub("­rob[­]*jek", "r­objek") -- Example: dot-te-rob-jekt -> dot-ter-objekt :gsub("s­ta­tus", "­status") -- Example: skydds-status :gsub("k­las[­]*s", "­klass") -- Example: deci-malk-las-si-fi-ka-tion -> deci-mal-klas-si-fi-ka-tion :gsub("­nom­rå­de", "n­område") -- Example: vatten-område :gsub("ra­lort", "ral­ort") -- Example: central-ort :gsub("s­kydd", "­skydd") -- Example: Kul-turs-kydd -> Kul-tur-skydd :gsub("k­ri­te­ri", "­kri­te­ri")-- Example: Värld-sarvsk-ri-te-rium -> Värld-sarvs-kri-te-rium :gsub("guasp­he", "gua­sphe") -- Example: lingua-sphere :gsub("gars­kap", "gar­skap") -- Example: medbor-gars-kap -> medbor-gar-skap end end return result:sub(2,-1) -- :gsub("­", "-") -- Show soft hyphens as hard hyphens. Only for sandboxed test purposes. end function p.databox(frame) local args = frame:getParent().args local itemId = nil if args.item then itemId = args.item end local item = mw.wikibase.getEntity(itemId) if item == nil then mw.addWarning("Wikidata item not found") return "" end local width = '260' -- default max width of template, image and map, and height of map if args.width then width = args.width end local height = '240' -- default max height of image. hidden if <= 0. if args.height then height = args.height end local zoom = 12 -- default map zoom level. hidden if <0. if args.zoom then zoom = tonumber(args.zoom) end local list_length = 8 -- default max no of values in lists if args.list_length then list_length = tonumber(args.list_length) end local list_separator = ',' -- default no replacement of comma in lists if args.list_separator then list_separator = args.list_separator end local levels = 3 -- default max no of child and parent levels if args.levels then levels = tonumber(args.levels) end local langObject = mw.language.getContentLanguage() local lang = langObject:getCode() local edit_message = mw.message.new('vector-view-edit'):plain() -- Date formating local bceDict = {} -- Dictionary: Before current era (BCE) in different languages bceDict['en'] = 'BCE' bceDict['nap'] = 'a.C.' local bcDict = {} -- Dictionary: Before Christ (BC) in different languages bcDict['en'] = 'BC' bcDict['nap'] = 'a.C.' local bc = bcDict[lang] or 'BC' local bce = bceDict[lang] or 'BCE' local era = bc -- default era if args.era then if args.era == 'BC' then era = bc -- replace 'BCE' by 'BC' in content language elseif args.era == 'BCE' then era = bce -- replace 'BC' by 'BCE' in content language else era = args.era -- replace 'BCE' and 'BC' by arbitrary argument value, for example empty string end end local replaceTime = {} -- global variable replaceTime[' BCE'] = ' '..era -- replaceTime[' BC'] = ' '..era -- (If this line is included, we should check that BC is not followed by E) replaceTime[' '..bce] = ' '..era replaceTime[' '..bc] = ' '..era local noValueDict = {} -- Dictionary: No value noValueDict['en'] = 'no value' noValueDict['nap'] = 'nessun valore' local wikicategory = '' local databoxRoot = mw.html.create('div') :addClass('infobox') :css({ float = 'right', clear = 'right', border = '1px solid #aaa', ['background-color'] = '#f9f9f9', ['width'] = width .. 'px', padding = '0 0.4em', margin = '0 0 0.4em 0.4em', }) --Title databoxRoot:tag('div') :css({ ['text-align'] = 'center', ['background-color'] = 'LightGrey', padding = '0em 0.4', margin = '0em 0', ['font-size'] = '120%', ['font-weight'] = 'bold', }) :wikitext( langObject:ucfirst(item:getLabel()) or langObject:ucfirst(mw.title.getCurrentTitle().text )) mw.log(' === Label: ' .. item:getLabel() .. '===') --Description local descr, descrLang = item:getDescriptionWithLang() if descrLang == lang then -- Do not show any fallback language databoxRoot:tag('div') :css({ ['text-align'] = 'center', ['vertical-align'] = 'text-top', ['font-size'] = '90%', ['line-height'] = '140%', padding = '0.2em 0.4', margin = '0.0em 0.4', ['padding-bottom'] = '0.5em', }) :wikitext(langObject:ucfirst(descr):sub(1,-1)) :wikitext(' [[File:Arbcom_ru_editing.svg|' .. edit_message .. '|8px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/' .. item.id .. ']]') end --Show first good image with legend/caption in content language, or first good image if tonumber(height) > 0 then local images = item:getBestStatements('P18') -- p18 is 'image' if #images >= 1 then local image = images[1] for _, i in pairs(images) do if i.qualifiers and i.qualifiers.P2096 then -- P2096 is 'caption' for _, c in pairs(i.qualifiers.P2096) do if c.snaktype == 'value' and c.datavalue.value.language == lang then caption = c image = i break end end end if caption then break end end databoxRoot :tag('div') :css({ ['text-align'] = 'center', padding = '0.0em 0.4', }) :wikitext('[[File:' .. image.mainsnak.datavalue.value .. '|frameless|' .. width .. 'x' .. height .. 'px]]') if caption then databoxRoot :tag('div') :css({ ['text-align'] = 'center', ['font-size'] = '90%', ['line-height'] = '140%', ['padding-bottom'] = '0.5em', }) :wikitext(caption.datavalue.value.text) end end end --Table: local dataTable = databoxRoot :tag('table') :css({ ['text-align'] = 'left', ['font-size'] = '90%', ['line-height'] = '140%', ['hyphens'] = 'auto', -- works only in some browsers and languages ['word-break'] = 'break-word', ['width'] = '100%', ['table-layout'] = 'fixed', ['padding-bottom'] = '0.5em', }) --Instance of: local dataValues local statements = item:getBestStatements('P31') if #statements > list_length then -- Hide too long list if lang == 'nap' then wikicategory = wikicategory .. '[[Category:Databox con lista lunga nascosta]]' end elseif #statements >= 1 then dataValues=item:formatStatements('P31').value if lang == 'nap' then if dataValues:match("%[%[umane|Umane%]%]") then -- Remove 'is instance of' -> 'human' TODO: Same for other languages if #statements == 1 then dataValues = '' else dataValues = dataValues:gsub("%[%[umane|Umane%]%],?%s?", "") end end end if #dataValues > 0 then dataValues=listCase(dataValues) dataTable:tag('caption') :css({ ['background-color'] = 'LightGrey', ['font-weight'] = 'bold', ['margin-top'] = '0.4em', margin = '0.5em 0', padding = '1em 1', }) :wikitext(dataValues) :wikitext(' [[File:Arbcom_ru_editing.svg|' .. edit_message .. '|8px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/' .. item.id .. '#P31' .. ']]') if #statements >= math.max(list_length-3,3) and lang == 'nap' then -- warning of long list but not too long list wikicategory = wikicategory .. '[[Category:Databox con una lista lunga]]' end end end local properties = mw.wikibase.orderProperties(item:getProperties()) local property_blacklist_hash = Set(property_blacklist) property_blacklist_hash['P18'] = true --Showed separately property_blacklist_hash['P31'] = true --Showed separately local property_whitelist_hash = Set(property_whitelist) local properties_with_parents_hash = Set(properties_with_parents) local properties_with_children_hash = Set(properties_with_children) local countryid = ' ' pcall(function () countryid = item.claims['P17'][1].mainsnak.datavalue.value.id end) for _, property in pairs(properties) do local datatype = item.claims[property][1].mainsnak.datatype local statements = item:getBestStatements(property) if ( (datatype ~= 'external-id' and datatype ~= 'commonsMedia' and datatype ~= 'monolingualtext' and datatype ~= 'url') or property_whitelist_hash[property] ) and not property_blacklist_hash[property] and 1 <= #statements then if #statements > list_length then if lang == 'nap' then wikicategory = wikicategory .. '[[Category:Databox con lista lunga nascosta]]' end else local propertyValue = item:formatStatements(property) propertyValue.label = langObject:ucfirst(hyphenate(propertyValue.label, lang)) -- left table cell content local propertyEntity = mw.wikibase.getEntity(property) -- Time consuming if propertyEntity then -- Replace property name by short name if only one in content language: if propertyEntity['claims']['P1813'] then local shortNames = propertyEntity['claims']['P1813'] -- 'P1813' = short name. shortname = '' for _, s in pairs(shortNames) do if s.mainsnak.datavalue.value.language == lang then -- (Should check that only one value is in the content lang) if #shortname > 0 then shortname = '' break -- Several shortnames in the local language end shortname = s.mainsnak.datavalue.value.text end end if #shortname > 0 then propertyValue.label = langObject:ucfirst(hyphenate(shortname, lang)) end end -- Link row label (property name) to related article in content language: local propertySubjects = propertyEntity:getBestStatements('P1629') -- 'P1629 = subject item of this property' if #propertySubjects == 1 then local subjectItemQid = propertyEntity['claims']['P1629'][1].mainsnak.datavalue.value.id articleSitelink = mw.wikibase.getSitelink(subjectItemQid) if articleSitelink ~= nil then -- Property subject item has local article propertyValue.label = '[[' .. articleSitelink .. '|' .. propertyValue.label .. ']]' end end end local dataValues -- right table cell content if #statements == 1 and levels >= 2 and (properties_with_parents_hash[property] or properties_with_children_hash[property]) then dataValues = propertyValue.value if merged_chronology and property == 'P156' then -- If 'P155' (follows) already shown as bulleted list, P156 (followed by) should be part of same list. propertyValue.label = '' -- Hide 'Followed by' in left column end if property == 'P155' or property == 'P156' then -- follows or followed by dataValues = '• ' .. dataValues end local level = {} -- Show parent/child item if any: level[1] = {} level[1].value = item['claims'][property][1].mainsnak.datavalue.value -- (Can give non-best statement?) level[1].item = mw.wikibase.getEntity(level[1].value.id) -- Time consuming level[1].statements = mw.wikibase.getBestStatements(level[1].item.id, property) if #level[1].statements == 1 and level[1].statements[1].mainsnak.datavalue then level[1].qid = level[1].statements[1].mainsnak.datavalue.value.id if level[1].qid ~= countryid then -- do not repeat country as administrative belonging or place level[1].propertyValue = level[1].item:formatStatements(property) if level[1].propertyValue then -- Show multi-level list as bulleted list: if not (property == 'P155' or property == 'P156') then dataValues = '• ' .. dataValues end level[1].qid = level[1].statements[1].mainsnak.datavalue.value.id if properties_with_children_hash[property] then -- next lower level / child item: put in end of the list. if property == 'P156' then -- follows dataValues = dataValues .. '
• '
.. level[1].propertyValue.value else -- indent dataValues = dataValues .. '
'
.. ' • ' .. level[1].propertyValue.value end else -- next higher level / parent item: put first in list if property == 'P155' then -- followed by dataValues = '• ' .. level[1].propertyValue.value .. '
'
.. dataValues else -- indent dataValues = '• ' .. level[1].propertyValue.value .. '
'
.. dataValues end end local l = 2 -- level counter while l<levels and level[l-1].item.claims[property][1].mainsnak.datavalue do level[l]={} level[l].value = level[l-1].item.claims[property][1].mainsnak.datavalue.value -- (Best statement?) level[l].item = mw.wikibase.getEntity(level[l].value.id) -- Time consuming level[l].statements = mw.wikibase.getBestStatements(level[l].item.id, property) if #level[l].statements > 0 and level[l].statements[1].mainsnak.datavalue then level[l].qid = level[l].statements[1].mainsnak.datavalue.value.id if #level[l].statements == 1 and level[l].qid ~= countryid -- do not repeat country as administrative belonging or place then level[l].propertyValue = level[l].item:formatStatements(property) -- (Best statement?) if properties_with_children_hash[property] then -- next lower level / child item if property == 'P156' then -- follows dataValues = dataValues .. '
'
.. '• ' .. level[l].propertyValue.value else -- indent dataValues = dataValues .. '
'
.. string.rep(' ', l) .. '• ' .. level[l].propertyValue.value end else -- next higher level / parent item if property == 'P155' then -- followed by dataValues = '• ' .. level[l].propertyValue.value .. '
'
.. dataValues else -- indent dataValues = '• ' .. level[l].propertyValue.value .. '
'
.. dataValues:gsub('
'
, '
'
) end end l = l+1 else break end else break end end -- while l if lang == 'nap' then wikicategory = wikicategory .. '[[Category:Databox con ' .. l .. ' livelli]]' end end if property == 'P155' then -- P155 (follows) was a bulleted list followed_by = mw.wikibase.getBestStatements(level[1].item.id, 'P156') if followed_by and #followed_by == 1 then -- P156 (followed by) may also be a bulleted list -- Show merged chronology list, including this wikidata object dataValues = dataValues .. "

\'\'\'" .. item:getLabel() .. "\'\'\'" if lang == 'nap' then propertyValue.label = 'Cronologgia' merged_chronology = true end if lang == 'en' then propertyValue.label = 'Chronology' merged_chronology = true end end end end end else -- not a multi-level list if datatype == 'url' then -- only show first url if #statements[1].mainsnak.datavalue.value>40 then -- replace long url by "link" if lang == 'nap' then dataValues = frame:preprocess('[' .. statements[1].mainsnak.datavalue.value .. ' jonta]') else dataValues = frame:preprocess('[' .. statements[1].mainsnak.datavalue.value .. ' link]') end else -- hide "https://" or "http:// and / in the end" dataValues = frame:preprocess('[' .. statements[1].mainsnak.datavalue.value .. ' ' .. statements[1].mainsnak.datavalue.value:gsub('https?://', ''):gsub('/$', '') .. ']') end elseif datatype == 'geo-shape' then -- only show first geo-shape if lang == 'nap' then dataValues = frame:preprocess('[https://commons.wikimedia.org/wiki/' .. statements[1].mainsnak.datavalue.value:gsub(' ', '_') .. ' mappa]') else dataValues = frame:preprocess('[https://commons.wikimedia.org/wiki/' .. statements[1].mainsnak.datavalue.value:gsub(' ', '_') .. ' map link]') end else dataValues = frame:preprocess(propertyValue.value) if #statements > 1 then dataValues = listSeparate(dataValues, list_separator) end -- if datatype == 'time' and replaceTime then -- for p,r in pairs(replaceTime) do -- dataValues = dataValues:gsub(p, r) -- Replace BCE with BC depending on era parameter -- end -- end if datatype == 'time' then dataValues = year(dataValues, lang, replaceTime) end if #statements >= math.max(list_length-3,3) and lang == 'nap' then --Warning on long but not hidden list wikicategory = wikicategory .. '[[Category:Databox con una lista lunga]]' end end end -- Replace "no value" with a dash: if noValueDict[lang] then dataValues = dataValues:gsub('' .. noValueDict[lang] .. '', '') end -- Render table row: dataTable:tag('tr') :tag('th') :css({ ['vertical-align'] = 'text-top', }) :attr('scope', 'row') :attr('colspan', '1') :wikitext(propertyValue.label):done() :tag('td') :css({ ['vertical-align'] = 'text-top', }) :attr('colspan', '2') :wikitext(dataValues) :wikitext(' [[File:Arbcom_ru_editing.svg|' .. edit_message .. '|8px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/' .. item.id .. '#' .. property .. ']]') end -- if #statements end -- if datatype end -- for property --Map if zoom >= 0 then local coordinates_statements = item:getBestStatements('P625') if #coordinates_statements == 1 and coordinates_statements[1].mainsnak.datavalue and coordinates_statements[1].mainsnak.datavalue.value.globe == 'http://www.wikidata.org/entity/Q2' then databoxRoot:wikitext(buildInteractiveMap(width, coordinates_statements[1].mainsnak.datavalue.value, item.id, zoom)) if lang == 'nap' then wikicategory = wikicategory .. '[[Category:Pagine con mappe create con Databox]' end end end if mw.title.getCurrentTitle().namespace == 0 then -- Only in main namespace if tostring(databoxRoot):match('Q%d+') then wikicategory = wikicategory .. '[[Category:Databox con codice qid visibile]]' end end if #wikicategory then databoxRoot:wikitext(wikicategory) end return tostring(databoxRoot) end return p

Tags:

🔥 Trending searches on Wiki Nnapulitano:

LetteraturaPanePatana29 'e frevaroGallus gallus domesticus1850501 AC1211280 AC1754Søren KierkegaardFranco Di MareJattaAustraliaCataniaSeconna Uerra MunnialeMuro 'e BerlinoNova YorkLibbiaFascismoFemmenielloMorro ReatinoAbbrùzzëColognola ai ColliCassino1869Torna a SurrientoMazzamauriello993LenguaAAmerecaTu sì 'na cosa grandePatanellaMazza e pivezoStalinFravecatore1714MarsegliaBiologgiaFunnazzione WikimediaMaria MarìRegno 'e Napule5 'e giùgnoSan Valentino in Abruzzo CiterioreMappanoGennaro MontuoriCore 'ngratoMichael JacksonAriana GrandeJacques ChiracIndonesiaRescecatureSmorfia'A pace d''a casaSguizzeraPurtuallo12 'e abbrileArpe5 'e màrzoEuropaAdelaide ManselliEuroPakistanPruverbie napulitaneSapunaro🡆 More