Wikipedia scnwiki https://scn.wikipedia.org/wiki/P%C3%A0ggina_principali MediaWiki 1.45.0-wmf.8 first-letter Mèdia Spiciali Discussioni Utenti Discussioni utenti Wikipedia Discussioni Wikipedia File Discussioni file MediaWiki Discussioni MediaWiki Template Discussioni template Aiutu Discussioni aiutu Catigurìa Discussioni catigurìa Purtali Discussioni purtali Pruggettu Discussioni pruggettu TimedText TimedText talk Mòdulu Discussioni mòdulu Event Event talk 2 di giugnettu 0 3286 770396 770388 2025-07-03T21:19:38Z Dostojewskij 18849 /* Nasciuti */ + [[Larry David]] 770396 wikitext text/x-wiki {{Giugnettu}} == Abbinimenti == * [[963]]: [[Nicefuru II]] addiventa mpiraturi bizzantinu. * [[1777]]: Lu [[Vermont]] addiventa lu primu statuo miricanu a abbuliri la schiavituti. * [[1839]]: 53 schiavi africani s'arribbellanu supra la navi ''Amistad'' abbicinu la [[Cuba]]. * [[1900]]: Primu volu di nu [[Zeppelin]] supra lu [[lacu di Custanza]], vicinu a [[Friedrichshafen]], [[Girmania]]. * [[1976]]: Li [[Vietnam]] dû Sud e dû Nord si juncinu nzemmula pi furmari la '''Ripubblica Sucialista di Vietnam'''. * [[2005]]: [[Roma]] - [[Tokiu]] - [[Berlinu]] - [[Johannesburg]] - [[Londra]] - [[Pariggi]]: Accumenza li [[Live 8]], concertu granni a favuri dî paisi poviri. == Nasciuti == * [[419]]: [[Valintinianu III]], mpiraturi rumanu d'occidenti (m. [[455]]) * [[1363]]: [[Maria di Sicilia|Maria]] futura riggina di Trinacria (m. [[1401]]) * [[1714]]: [[Christoph Willibald Gluck]], cumpusituri tudiscu (m. [[1787]]) * [[1904]]: [[René Lacoste]], tennista e stilista francisi (m. [[1996]]) * [[1947]]: [[Larry David]], atturi statunitenzi * [[1986]]: [[Lindsay Lohan]], attrici statunitenza == Morti == * [[1778]]: [[Jean-Jacques Rousseau]], filòsufu francisi (n. 1712) * [[1904]]: [[Anton Cechov]], drammatista russu (n. 1860) * [[1961]]: [[Ernest Hemingway]], scritturi miricanu (n. 1899) * [[1977]]: [[Vladimir Nabokov]], scritturi russu cosmopulita (n. 1899) [[Catigurìa:Giugnettu]] mtxkod85ouvfhgu58bcunm4akbqwozd Taleh 0 29980 770394 739694 2025-07-03T14:32:52Z 5.8.102.68 Componenti ra banna 770394 wikitext text/x-wiki I '''Taleh''' sunu nu gruppu di mùsica pupulari di [[Rausa]] furmatu ntô [[1996]]. '''Na banna ci soninu Turi Dipasquale Vuci Gianni Guastella: vuci e chitarra Vincent Migliorisi: chitarri, mandulinu, bouzouky, bassu, pircussioni, vuci [[Luiggi Cosentino]] (vuci e fisarmònica) Rino Taverna Basso == '''Discugrafia:''' == '''Ratapuntu''' (2009): 1. ‘A puddira ccà stidda 4:17 2. Se mi susu 3:47 3. Nasca Patasca 3:24 4. Ppi ‘mmia 4:49 5. ‘A virrinedda 2:54 6. L’amuri 4:40 7. Nannu 3:13 8. Tuppi tuppi 3:15 9. Tarantella di lu vespiri 2:46 10. Signuruzzu chiuviti 3:51 '''Mistera''' (2015) 1. Preludio 1:01 2. Mistera 3:23 3. Beddu nostru signuri 4:08 4. I cientu puzza 4:19 5. Scunciuru 4:04 6. Patruna o luocu 5:22 7. Caricaricci 3:33 8. A ‘nciuria 3:24 9. Rimmi pueta 3:40 10. Quannu 3:31 11. U signuruzzu truvatu 5:25 '''Musicisti ca lassaru a banna:''' [[Luiggi Cosentino]] (vuci e fisarmònica) [[Rubbertu Difalco|Rubbertu Di Falco]] (vuci e tammuredda) Peppe Sarta: vuci e fisarmonica == Liami nterni == *[[Cantanti e gruppi musicali siciliani]] == Culligamenti sterni == *[https://www.facebook.com/talehfolkband Paggina Facebook do gruppu] *[https://web.archive.org/web/20211215125543/https://www.nsicilianu.it/483-taleh-gruppu-musicali-rausanu/ Discugrafia e Testi re Talèh] [[Catigurìa:Gruppi musicali folk]] [[Catigurìa:Gruppi musicali siciliani]] ib3wgeoi0c36lnzvtw0910hkj8cuczy 770395 770394 2025-07-03T20:23:31Z 200.24.154.85 770395 wikitext text/x-wiki I '''Taleh''' sunu nu gruppu di mùsica pupulari di [[Rausa]] furmatu ntô [[1996]]. '''Na banna ci sonanu:''' Salvatore Dipasquale: vuci e marranzanu Gianni Guastella: vuci Vincent Migliorisi: chitarri, mandulinu, bouzouky, bassu, pircussioni, vuci Peppe Sarta: vuci e fisarmonica Andrea Chessari: pircussioni e tammurieḍḍu Jascha Parisi: bassu == '''Discugrafia:''' == '''Ratapuntu''' (2009): 1. ‘A puddira ccà stidda 4:17 2. Se mi susu 3:47 3. Nasca Patasca 3:24 4. Ppi ‘mmia 4:49 5. ‘A virrinedda 2:54 6. L’amuri 4:40 7. Nannu 3:13 8. Tuppi tuppi 3:15 9. Tarantella di lu vespiri 2:46 10. Signuruzzu chiuviti 3:51 '''Mistera''' (2015) 1. Preludio 1:01 2. Mistera 3:23 3. Beddu nostru signuri 4:08 4. I cientu puzza 4:19 5. Scunciuru 4:04 6. Patruna o luocu 5:22 7. Caricaricci 3:33 8. A ‘nciuria 3:24 9. Rimmi pueta 3:40 10. Quannu 3:31 11. U signuruzzu truvatu 5:25 '''Musicisti ca lassaru a banna:''' [[Luiggi Cosentino]] (vuci e fisarmònica) [[Rubbertu Difalco|Rubbertu Di Falco]] (vuci e tammuredda) Peppe Sarta: vuci e fisarmonica == Liami nterni == *[[Cantanti e gruppi musicali siciliani]] == Culligamenti sterni == *[https://www.facebook.com/talehfolkband Paggina Facebook do gruppu] *[https://web.archive.org/web/20211215125543/https://www.nsicilianu.it/483-taleh-gruppu-musicali-rausanu/ Discugrafia e Testi re Talèh] [[Catigurìa:Gruppi musicali folk]] [[Catigurìa:Gruppi musicali siciliani]] 021x1jtx5wnrrn4gnc80gozog3pv57o Utenti:GianAntonucci 2 65892 770397 767286 2025-07-03T21:26:13Z GianAntonucci 46609 /* Tèssira (Infobox) */ 770397 wikitext text/x-wiki {{DOS}} {{#babel:scn|it|en-4}} == Pàggini chi canciavi == * [[Càrculu spartutu]] * [[John Lawson (fìsicu)]] * [[Prugrammazzioni vutata a l'uggetti|PVU]] == Pàggini chi hê canciari == * [[Càrculu diffirinziali]] * [[Dirivata]] * [[Samprea Riggiunali Siciliana]] * [[Mòdulu:Bozza]] (cfr. https://en.wikipedia.org/wiki/Module:Sandbox) * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bimminutu]] == Pàggini ùtili == * https://scn.wikipedia.org/wiki/Catigurìa:WIP_di_l%27Utenti_Dapal * https://scn.wikipedia.org/wiki/Catigurìa:Artìculi_scritti_câ_grafìa_dâ_Cademia_Siciliana * https://xtools.wmcloud.org/ec/scn.wikipedia.org/GianAntonucci * https://scn.wikipedia.org/wiki/Wikipedia:Template * https://en.wikipedia.org/wiki/Wikipedia:Templates * https://en.wikipedia.org/wiki/Wikipedia:Sandbox * https://scn.wikipedia.org/wiki/Utenti:GianAntonucci/Sandbox * https://scn.wikipedia.org/wiki/Wikipedia:Fogghiu_di_prova * https://scn.wikipedia.org/wiki/Template:Infobox * https://en.wikipedia.org/wiki/Category:Wikipedia_modules * [[Utenti:GiovanniPen/Welcome]] * [[Utenti:GiovanniPen/msgs.php]] == Lijami ùtili == * https://www.istat.it/classificazione/principali-statistiche-geografiche-sui-comuni/ == Provi chî mòduli e chî mudeḍḍi == === Quatràngulu === * [[Mòdulu:Bozza/GianAntonucci/Quatràngulu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Quatràngulu]] * [[Utenti:GianAntonucci/Bozza/Quatràngulu]] === TabbellaFacciuzzi === * [[Mòdulu:Bozza/GianAntonucci/TabbellaFacciuzzi]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TabbellaFacciuzzi]] * [[Utenti:GianAntonucci/Bozza/TabbellaFacciuzzi]] === Bozza (Sandbox) === * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bozza/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bozza]] * [[Utenti:GianAntonucci/Bozza/Wikipedia:Bozza]] === Bumminuta === * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bumminuta/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bumminuta]] * [[Utenti:GianAntonucci/Bozza/Wikipedia:Bumminuta]] === Tèssira (Infobox) === * [[Mòdulu:Bozza/GianAntonucci/Tèssira]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCità]] * [[Utenti:GianAntonucci/Bozza/Tèssira_dû_Capu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPajisi]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPulìticu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraAlbumMusicali]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraLibbru]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraQuatru]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraSquatraJocu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraStoria]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCìnamu]] ==== Di cancillari ==== * <s>[[Template:Tèssira/styles.css]]</s> * <s>[[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bummegna/styles.css]]</s> * <s>[[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bummegna]]</s> * <s>[[Utenti:GianAntonucci/Bozza/Wikipedia:Bummegna]]</s> * <s>[[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bozza/styles.css]]</s> ==== Lijati ==== * [[Mòdulu:Wikidata]] * [[Template:Wikidata]] * [[Template:WikidataLabel]] * [[Template:Infobox]] * [[Template:Lijami sinòtticu]] Cfr. https://es.wikipedia.org/wiki/Módulo:Ficha, https://en.wikipedia.org/wiki/Module:Infobox, https://en.wikipedia.org/wiki/Module:Infobox/styles.css hv2tkosw6aebgtmg04jx0mqajmtliej 770431 770397 2025-07-04T11:19:27Z GianAntonucci 46609 /* Tèssira (Infobox) */ 770431 wikitext text/x-wiki {{DOS}} {{#babel:scn|it|en-4}} == Pàggini chi canciavi == * [[Càrculu spartutu]] * [[John Lawson (fìsicu)]] * [[Prugrammazzioni vutata a l'uggetti|PVU]] == Pàggini chi hê canciari == * [[Càrculu diffirinziali]] * [[Dirivata]] * [[Samprea Riggiunali Siciliana]] * [[Mòdulu:Bozza]] (cfr. https://en.wikipedia.org/wiki/Module:Sandbox) * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bimminutu]] == Pàggini ùtili == * https://scn.wikipedia.org/wiki/Catigurìa:WIP_di_l%27Utenti_Dapal * https://scn.wikipedia.org/wiki/Catigurìa:Artìculi_scritti_câ_grafìa_dâ_Cademia_Siciliana * https://xtools.wmcloud.org/ec/scn.wikipedia.org/GianAntonucci * https://scn.wikipedia.org/wiki/Wikipedia:Template * https://en.wikipedia.org/wiki/Wikipedia:Templates * https://en.wikipedia.org/wiki/Wikipedia:Sandbox * https://scn.wikipedia.org/wiki/Utenti:GianAntonucci/Sandbox * https://scn.wikipedia.org/wiki/Wikipedia:Fogghiu_di_prova * https://scn.wikipedia.org/wiki/Template:Infobox * https://en.wikipedia.org/wiki/Category:Wikipedia_modules * [[Utenti:GiovanniPen/Welcome]] * [[Utenti:GiovanniPen/msgs.php]] == Lijami ùtili == * https://www.istat.it/classificazione/principali-statistiche-geografiche-sui-comuni/ == Provi chî mòduli e chî mudeḍḍi == === Quatràngulu === * [[Mòdulu:Bozza/GianAntonucci/Quatràngulu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Quatràngulu]] * [[Utenti:GianAntonucci/Bozza/Quatràngulu]] === TabbellaFacciuzzi === * [[Mòdulu:Bozza/GianAntonucci/TabbellaFacciuzzi]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TabbellaFacciuzzi]] * [[Utenti:GianAntonucci/Bozza/TabbellaFacciuzzi]] === Bozza (Sandbox) === * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bozza/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bozza]] * [[Utenti:GianAntonucci/Bozza/Wikipedia:Bozza]] === Bumminuta === * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bumminuta/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bumminuta]] * [[Utenti:GianAntonucci/Bozza/Wikipedia:Bumminuta]] === Tèssira (Infobox) === * [[Mòdulu:Bozza/GianAntonucci/Tèssira]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCità]] * [[Utenti:GianAntonucci/Bozza/Tèssira_dû_Capu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPajisi]] * [[Utenti:GianAntonucci/Bozza/Tèssira_dû_Regnu_Unitu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPulìticu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraAlbumMusicali]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraLibbru]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraQuatru]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraSquatraJocu]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraStoria]] * [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCìnamu]] ==== Di cancillari ==== * <s>[[Template:Tèssira/styles.css]]</s> * <s>[[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bummegna/styles.css]]</s> * <s>[[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bummegna]]</s> * <s>[[Utenti:GianAntonucci/Bozza/Wikipedia:Bummegna]]</s> * <s>[[Utenti:GianAntonucci/Bozza/Mudeḍḍu:Bozza/styles.css]]</s> ==== Lijati ==== * [[Mòdulu:Wikidata]] * [[Template:Wikidata]] * [[Template:WikidataLabel]] * [[Template:Infobox]] * [[Template:Lijami sinòtticu]] Cfr. https://es.wikipedia.org/wiki/Módulo:Ficha, https://en.wikipedia.org/wiki/Module:Infobox, https://en.wikipedia.org/wiki/Module:Infobox/styles.css c2pukfidxr9elw8gk6zoqonccz1se7r Mòdulu:Bozza/GianAntonucci/Tèssira 828 66262 770399 766951 2025-07-03T21:53:29Z GianAntonucci 46609 770399 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- This regex detects strings like [[Category:Some category]] in any case style. -- This helps us catch categories even if the user typed "category", "Category", -- or any combination thereof, so that we can move them out of the infobox. local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%]' -- This regex detects <ref>some text</ref> in a simplified manner. This won't -- catch every complex reference, but it's sufficient for typical usage. If a -- row only has references or categories, we consider it "empty" and and move -- those items out of the infobox. local ref_in_empty_row_pattern = '%<ref[^>]*>.-%</ref%>' -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu" }, }, ["Geography"] = { props = { "P276" }, labels = { "Position", "Location", "Pusizzioni" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- This function attempts to fetch a value from the current Wikidata entity for -- the given property ID (e.g. "P1082"). Returns the rendered data if found, or -- nil if not. local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if wikidataEntity and wikidataEntity.claims and wikidataEntity.claims[property] and wikidataEntity.claims[property][1] and wikidataEntity.claims[property][1].mainsnak then return mw.wikibase.renderSnak(wikidataEntity.claims[property][1].mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- This function treat "value" that begin with '#' or '*' as a wiki bullet/numbered -- lists and wrap them in <div> tags to ensure proper line breaks inside the table -- cells. For example, "# Item\n# Another" becomes "<div>\n# Item\n# Another\n</div>". local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- This function checks if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "above", "below", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (up to 50) if paramName:match("^subheader%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Property%d+$") or paramName:match("^Classi%d+$") then return true end return false end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Move categories placed after a </tr> tag to outside the table. html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) -- Move <templatestyles> tags out similarly. html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Also handle potential UNIQ placeholders (sometimes MediaWiki replaces -- templatestyles with them). html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. local function addRowEnhanced(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- If value is only references/categories, treat it as empty in visual terms local dataNoCat = mw.ustring.gsub(params.valuri, category_in_empty_row_pattern, '') dataNoCat = mw.ustring.gsub(dataNoCat, ref_in_empty_row_pattern, '') if dataNoCat:match('^%s*$') then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() row:tag('td') :addClass('tessira_valuri') :wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') :wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. local function detectAutoheader(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Property" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. -- -- Also, unless the user manually sets Gruppu<FieldName>=Something that overrides -- it, we handle the autoheader logic calling detectAutoheader(WikidataProperty, label) -- to guess a section name. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local new_section if not manualGroup then local label = args["Vuci" .. fieldName] or fieldName new_section = detectAutoheader(propertyId, label) end -- Insert group header if needed if manualGroup and manualGroup ~= current_section then addRowEnhanced(root, { gruppu = manualGroup }, state) current_section = manualGroup elseif new_section and new_section ~= current_section then addRowEnhanced(root, { gruppu = new_section }, state) current_section = new_section end local label = args["Vuci" .. fieldName] or fieldName addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections (and -- thus override autoheader detection via detectAutoheader). -- b) Property1, Property2, etc. → Helps match data to Wikidata properties for -- autoheader_sections. -- -- The function goes through the numbered rows one by one: -- 1. If a row has a value (Valuri) or belongs to a group (Gruppu), we process it. -- 2. If the user manually set a group (Gruppu), we place the row there. -- 3. Otherwise, we try to automatically group it based on its Wikidata property or label. -- 4. If the section changes, we add a new section header. -- 5. Finally, we add the row to the table. -- -- The loop stops when it no longer finds any numbered parameters. local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Property" .. index] if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- If there's either a group or a value, we proceed if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then if gruppuParam and gruppuParam ~= "" then -- Manual group override if gruppuParam ~= current_section then addRowEnhanced(root, { gruppu = gruppuParam }, state) current_section = gruppuParam end -- Only add a row if there's something to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam }, state) end else -- Autoheader detection local new_section = detectAutoheader(propertyParam, vuciParam or "") if new_section and new_section ~= current_section then addRowEnhanced(root, { gruppu = new_section }, state) current_section = new_section end addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|above=Some text". local function renderAbove(root, args, state) if args["above"] and args["above"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["above"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|below=Some text". local function renderBelow(root, args, state) if args["below"] and args["below"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["below"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "subheader" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = args["LijamiWikidata"] and { args["NomuMudeḍḍu"] } or { args["NomuMudeḍḍu"], nowd = 1 } }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css' } } -- This function scans all parameters for "tessira", "hlist", or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. Its steps are: -- 1) Merge local and parent arguments -- 2) Detect hlist/plainlist usage -- 3) Load a Wikidata entity if "Wikidata=Qxxx" is given -- 4) Build the table as HTML -- 5) Move misplaced categories/templatestyles out of table rows -- 6) Append them if the row was empty -- 7) Return the final output (or empty if no rows displayed). function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do if not args[k] then args[k] = v end end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p avstemp86ba7onliqm0pat2qqo8s4dc 770402 770399 2025-07-03T22:22:23Z GianAntonucci 46609 770402 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, -- Added more geographic properties labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "above", "below", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^subheader%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Property%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- Forward declaration for use in handleSectionChange local addRowEnhanced -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. local function detectAutoheader(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Property" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Property1, Property2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Property" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|above=Some text". local function renderAbove(root, args, state) if args["above"] and args["above"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["above"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|below=Some text". local function renderBelow(root, args, state) if args["below"] and args["below"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["below"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "subheader" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p g1ti5mortevywqnav93xdechac0psuz 770403 770402 2025-07-03T22:24:59Z GianAntonucci 46609 770403 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, -- Added more geographic properties labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "above", "below", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^subheader%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Property%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- Forward declaration for use in handleSectionChange local addRowEnhanced -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Property" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Property1, Property2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Property" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|above=Some text". local function renderAbove(root, args, state) if args["above"] and args["above"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["above"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|below=Some text". local function renderBelow(root, args, state) if args["below"] and args["below"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["below"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "subheader" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p sptv8vzhqfzxy1zsy6r6niiq4iuz3ik 770404 770403 2025-07-03T22:26:25Z GianAntonucci 46609 770404 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, -- Added more geographic properties labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "above", "below", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^subheader%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Property%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- Forward declaration for use in handleSectionChange local addRowEnhanced -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Property" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Property1, Property2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Property" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|above=Some text". local function renderAbove(root, args, state) if args["above"] and args["above"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["above"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|below=Some text". local function renderBelow(root, args, state) if args["below"] and args["below"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["below"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "subheader" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p 3yvzrw9s3rzdfzsvqiglue42c4t0xbi 770405 770404 2025-07-03T22:28:00Z GianAntonucci 46609 770405 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, -- Added more geographic properties labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "above", "below", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^subheader%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Property%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Property" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Property1, Property2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Property" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|above=Some text". local function renderAbove(root, args, state) if args["above"] and args["above"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["above"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|below=Some text". local function renderBelow(root, args, state) if args["below"] and args["below"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["below"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "subheader" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p fgc2bk2498l0px5x9kjrfjvjeb2q9pp 770411 770405 2025-07-03T22:55:53Z GianAntonucci 46609 770411 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti", "Pupulazzioni" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu", "Sìnnacu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu", "Locu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu", "Data" }, }, ["Cilibbrazzioni"] = { props = {}, labels = { "Evènti principali", "Partecipanti", "Tradizzioni" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "above", "below", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^subheader%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Property%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Property" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Property1, Property2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Property" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|above=Some text". local function renderAbove(root, args, state) if args["above"] and args["above"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["above"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|below=Some text". local function renderBelow(root, args, state) if args["below"] and args["below"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["below"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "subheader" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p tilncevmkwsysv5zdiwxtfzc5c0foba 770412 770411 2025-07-03T22:57:35Z GianAntonucci 46609 770412 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti", "Pupulazzioni" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu", "Sìnnacu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu", "Locu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu", "Data" }, }, ["Cilibbrazzioni"] = { props = {}, labels = { "Evènti principali", "Partecipanti", "Tradizzioni" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "above", "below", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^subheader%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Property%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Property" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Property1, Property2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Property" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|above=Some text". local function renderAbove(root, args, state) if args["above"] and args["above"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["above"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|below=Some text". local function renderBelow(root, args, state) if args["below"] and args["below"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["below"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "subheader" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for key, arg in pairs(args_to_check) do -- Check both the value and if it's a Classi parameter if key:match("^Classi%d*$") and arg then if arg:find(list.patterns[1]:gsub("^%^", ""):gsub("%$$", "")) then list.found = true break end end -- Original pattern checking for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p k3je7n37cnillltyzobbyfhx4j5a9tg 770415 770412 2025-07-04T09:35:54Z GianAntonucci 46609 770415 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti", "Pupulazzioni" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu", "Sìnnacu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu", "Locu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu", "Data" }, }, ["Cilibbrazzioni"] = { props = {}, labels = { "Evènti principali", "Partecipanti", "Tradizzioni" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "supra", "sutta", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^subheader%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Property%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Property" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Property1, Property2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Property" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|supra=Some text". local function renderAbove(root, args, state) if args["supra"] and args["supra"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["supra"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|sutta=Some text". local function renderBelow(root, args, state) if args["sutta"] and args["sutta"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["sutta"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "subheader" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for key, arg in pairs(args_to_check) do -- Check both the value and if it's a Classi parameter if key:match("^Classi%d*$") and arg then if arg:find(list.patterns[1]:gsub("^%^", ""):gsub("%$$", "")) then list.found = true break end end -- Original pattern checking for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p 7en5xrtyf4drab4f74gn1425emlcy0o 770419 770415 2025-07-04T09:56:14Z GianAntonucci 46609 770419 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti", "Pupulazzioni" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu", "Sìnnacu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu", "Locu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu", "Data" }, }, ["Cilibbrazzioni"] = { props = {}, labels = { "Evènti principali", "Partecipanti", "Tradizzioni" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "supra", "sutta", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^Abbirtenza%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Prupità%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Prupità" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Prupità1, Prupità2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Prupità" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|supra=Some text". local function renderAbove(root, args, state) if args["supra"] and args["supra"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_above') :wikitext(args["supra"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|sutta=Some text". local function renderBelow(root, args, state) if args["sutta"] and args["sutta"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_below') :wikitext(args["sutta"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "Abbirtenza" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for key, arg in pairs(args_to_check) do -- Check both the value and if it's a Classi parameter if key:match("^Classi%d*$") and arg then if arg:find(list.patterns[1]:gsub("^%^", ""):gsub("%$$", "")) then list.found = true break end end -- Original pattern checking for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p 2kf3264jxgmbu3hv3f6ua4imgwrsgfh 770423 770419 2025-07-04T10:11:57Z GianAntonucci 46609 770423 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) CATEGORY / TEMPLATE STYLES DETECTION -------------------------------------------------------------------------------- -- Pattern to detect category links (case-insensitive) -- We'll convert to lowercase before matching to simplify the pattern local category_pattern_lower = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern to detect references including self-closing tags local ref_patterns = { '%<ref[^>]*>.-%</ref%>', -- Standard ref tags '%<ref[^/>]*/%>' -- Self-closing ref tags } -------------------------------------------------------------------------------- -- 2) AUTOHEADER CONFIGURATION -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Population", "Genti", "Pupulazzioni" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu", "Sìnnacu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu", "Locu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu", "Data" }, }, ["Cilibbrazzioni"] = { props = {}, labels = { "Evènti principali", "Partecipanti", "Tradizzioni" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, category_pattern_lower, '') -- Remove all types of references for _, pattern in ipairs(ref_patterns) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "Supra", "Sutta", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^Abbirtenza%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Prupità%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Population") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Prupità" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Prupità1, Prupità2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Prupità" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|Supra=Some text". local function renderAbove(root, args, state) if args["Supra"] and args["Supra"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_supra') :wikitext(args["Supra"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|Sutta=Some text". local function renderBelow(root, args, state) if args["Sutta"] and args["Sutta"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_sutta') :wikitext(args["Sutta"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "Abbirtenza" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for key, arg in pairs(args_to_check) do -- Check both the value and if it's a Classi parameter if key:match("^Classi%d*$") and arg then if arg:find(list.patterns[1]:gsub("^%^", ""):gsub("%$$", "")) then list.found = true break end end -- Original pattern checking for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p idlseidnfkl84kr2efi460ox3jcp5ce 770425 770423 2025-07-04T10:54:46Z GianAntonucci 46609 770425 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) ARRICANUSCIMENTU DÎ CATIGURÌI E DÎ STILI -------------------------------------------------------------------------------- -- Pattern pî catigurìi local pattern_catiguria_minusculu = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern pî rifirimenti (<ref>) local pattern_ref = { '%<ref[^>]*>.-%</ref%>', -- Nurmali '%<ref[^/>]*/%>' -- Chiḍḍi chi si chiùjinu suli } -------------------------------------------------------------------------------- -- 2) CUNFIJURAZZIONI DÎ NOMA DÎ SIZZIONI -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Genti", "Pupulazzioni" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu", "Sìnnacu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu", "Locu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu", "Data" }, }, ["Cilibbrazzioni"] = { props = {}, labels = { "Evènti principali", "Partecipanti", "Tradizzioni" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, pattern_catiguria_minusculu, '') -- Remove all types of references for _, pattern in ipairs(pattern_ref) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "Supra", "Sutta", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^Abbirtenza%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Prupità%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Genti") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Prupità" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Prupità1, Prupità2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Prupità" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|Supra=Some text". local function renderAbove(root, args, state) if args["Supra"] and args["Supra"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_supra') :wikitext(args["Supra"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|Sutta=Some text". local function renderBelow(root, args, state) if args["Sutta"] and args["Sutta"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_sutta') :wikitext(args["Sutta"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "Abbirtenza" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for key, arg in pairs(args_to_check) do -- Check both the value and if it's a Classi parameter if key:match("^Classi%d*$") and arg then if arg:find(list.patterns[1]:gsub("^%^", ""):gsub("%$$", "")) then list.found = true break end end -- Original pattern checking for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p sbj3ld3ger6xpavw35fx5msm1lr14ja 770434 770425 2025-07-04T11:45:48Z GianAntonucci 46609 770434 Scribunto text/plain local p = {} local mw = require('mw') -------------------------------------------------------------------------------- -- 1) ARRICANUSCIMENTU DÎ CATIGURÌI E DÎ STILI -------------------------------------------------------------------------------- -- Pattern pî catigurìi local pattern_catiguria_minusculu = '%[%[%s*category%s*:[^]]*%]%]' -- Pattern pî rifirimenti (<ref>) local pattern_ref = { '%<ref[^>]*>.-%</ref%>', -- Nurmali '%<ref[^/>]*/%>' -- Chiḍḍi chi si chiùjinu suli } -------------------------------------------------------------------------------- -- 2) CUNFIJURAZZIONI DÎ NOMA DÎ SIZZIONI -------------------------------------------------------------------------------- -- This table automatically groups data rows into named sections in the infobox. -- Each section has a list of Wikidata property codes and a list of label keywords. -- If a row matches one of these properties or labels, we group it under this -- section. If a row could fit into more than one section, we use the first one. -- The user can manually override this grouping using the "Gruppu" parameter. local autoheader_sections = { ["Demographics"] = { props = { "P1082" }, labels = { "Genti", "Pupulazzioni" }, }, ["Government"] = { props = { "P6" }, labels = { "Mayor", "Capu", "Sìnnacu" }, }, ["Geography"] = { props = { "P276", "P2046", "P131", "P421" }, labels = { "Position", "Location", "Pusizzioni", "Aria", "Pruvincia", "FusuUrariu", "Locu" }, }, ["History"] = { props = { "P31" }, labels = { "Founded", "History", "Tipu", "Data" }, }, ["Cilibbrazzioni"] = { props = {}, labels = { "Evènti principali", "Partecipanti", "Tradizzioni" }, }, } -------------------------------------------------------------------------------- -- 3) PREDEFINED WIKIDATA FIELDS -------------------------------------------------------------------------------- -- This table maps a "local parameter" to a Wikidata property. local wikidataFields = { ["Aria"] = "P2046", ["Capu"] = "P6", ["FusuUrariu"] = "P421", ["Genti"] = "P1082", ["ISO"] = "P901", ["Pusizzioni"] = "P276", ["Pruvincia"] = "P131", ["Tipu"] = "P31", } -- Default CSS paths - should be moved to Template: namespace in production local DEFAULT_CSS_PATH = "Template:Tèssira/stili.css" local PLAINLIST_CSS_PATH = "Template:ListaSìmplici/stili.css" local HLIST_CSS_PATH = "Template:ListaUrizzuntali/stili.css" -- For development, use user space paths local DEV_MODE = true -- Set to false for production if DEV_MODE then DEFAULT_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css" PLAINLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css" HLIST_CSS_PATH = "Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css" end -------------------------------------------------------------------------------- -- 4) HELPER FUNCTIONS -------------------------------------------------------------------------------- -- Enhanced function to fetch Wikidata values with rank consideration -- Returns the best-ranked value (preferred > normal > deprecated) local function getWikidataValue(wikidataEntity, property) local success, result = pcall(function() if not wikidataEntity or not wikidataEntity.claims or not wikidataEntity.claims[property] then return nil end local claims = wikidataEntity.claims[property] local bestClaim = nil local bestRank = nil -- Rank priority: preferred > normal > deprecated local rankPriority = { preferred = 3, normal = 2, deprecated = 1 } for _, claim in ipairs(claims) do local rank = claim.rank or "normal" local priority = rankPriority[rank] or 2 if not bestRank or priority > bestRank then bestClaim = claim bestRank = priority end end if bestClaim and bestClaim.mainsnak then return mw.wikibase.renderSnak(bestClaim.mainsnak) end end) if not success then mw.log("Wikidata error for property " .. property .. ": " .. tostring(result)) end return success and result or nil end -- Check if a string contains only references and/or categories local function isEmptyExceptRefsAndCats(value) if not value or value == "" then return true end -- Convert to lowercase for category detection local lowerValue = mw.ustring.lower(value) -- Remove categories local stripped = mw.ustring.gsub(lowerValue, pattern_catiguria_minusculu, '') -- Remove all types of references for _, pattern in ipairs(pattern_ref) do stripped = mw.ustring.gsub(stripped, pattern, '') end -- Check if only whitespace remains return stripped:match('^%s*$') ~= nil end -- Process list formatting local function checkList(value) local firstChar = mw.ustring.sub(value, 1, 1) if firstChar == '#' or firstChar == '*' then value = '<div>\n' .. value .. '\n</div>' end return value .. '\n' end -- Check if a parameter name is recognized local function isRecognizedParam(paramName) if type(paramName) ~= 'string' then return true end -- Base parameters local baseParams = { "Wikidata", "child", "no_float", "inline_style", "style", "debug", "Tìtulu", "Suttatìtulu", "Supra", "Sutta", "NomuMudeḍḍu", "LijamiWikidata", "PediPàggina", "MmàgginiSupra", "MmàgginiSutta", "MmàgginiManuManca", "MmàgginiManuDritta", "DidascalìaMmàgginiSupra", "DidascalìaMmàgginiSutta", "DidascalìaMmàgginiManuManca", "DidascalìaMmàgginiManuDritta" } -- Check base parameters for _, param in ipairs(baseParams) do if paramName == param then return true end end -- Check predefined Wikidata fields and their variants for fieldName, _ in pairs(wikidataFields) do if paramName == fieldName or paramName == "Vuci" .. fieldName or paramName == "Gruppu" .. fieldName then return true end end -- Check numbered parameters (no artificial limit) if paramName:match("^Abbirtenza%d+$") or paramName:match("^Vuci%d+$") or paramName:match("^Valuri%d+$") or paramName:match("^Gruppu%d+$") or paramName:match("^Prupità%d+$") or paramName:match("^Classi%d+$") then return true end return false end -- Forward declarations for functions that need to be called before they're defined local detectAutoheader local addRowEnhanced -- Handle section changes to reduce code duplication local function handleSectionChange(root, state, currentSection, manualGroup, autoProperty, autoLabel) local newSection = currentSection if manualGroup and manualGroup ~= "" then -- Manual group override if manualGroup ~= currentSection then addRowEnhanced(root, { gruppu = manualGroup }, state) newSection = manualGroup end elseif autoProperty or autoLabel then -- Autoheader detection local detectedSection = detectAutoheader(autoProperty, autoLabel) if detectedSection and detectedSection ~= currentSection then addRowEnhanced(root, { gruppu = detectedSection }, state) newSection = detectedSection end end return newSection end -------------------------------------------------------------------------------- -- 5) MOVING MISPLACED TEMPLATE STYLES -------------------------------------------------------------------------------- -- This function moves <templatestyles> or categories that are found inside <tr> -- elements after the table to avoid formatting issues. local function fixChildBoxes(html) if not html or html == "" then return html end -- Convert to lowercase for easier pattern matching local function moveCategoriesOutside(str) -- This pattern works with the original case-sensitive approach -- since we need to preserve the original case in the output return mw.ustring.gsub( str, '(%</[Tt][Rr]%>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%]]*%]%])', '%2%1' ) end -- Move categories html = moveCategoriesOutside(html) -- Move <templatestyles> tags html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(%f[%S]<templatestyles[^>]*>.-</templatestyles>)', '%2%1' ) -- Handle UNIQ placeholders html = mw.ustring.gsub( html, '(%</[Tt][Rr]%>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1' ) return html end -------------------------------------------------------------------------------- -- 6) BASIC ROW-ADDING FUNCTION -------------------------------------------------------------------------------- -- This function adds a row to the infobox. The "params" table can have: -- a) params.gruppu => a string for a group header that spans two columns. -- b) params.vuci => a string for the row label (optional). -- c) params.valuri => a string for the value of that label. -- d) params.classi => CSS class(es) to add to the value cell -- -- If the row is truly empty except for references or categories, we don't display -- it and we store those items for later output. addRowEnhanced = function(root, params, state) -- If this is a group header, create a header row if params.gruppu then root:tag('tr') :addClass('tessira_gruppu') :tag('th') :attr('colspan', '2') :wikitext(params.gruppu) return end -- If no value is given, do nothing if not params.valuri or params.valuri == "" then return end -- Check if value only contains references/categories if isEmptyExceptRefsAndCats(params.valuri) then table.insert(state.empty_row_extras, params.valuri) return end -- If there's actual text, create and show a row state.has_rows = true local row = root:tag('tr') if params.vuci then -- Normal two-column row (label + value) row:tag('th') :attr('scope', 'row') :addClass('tessira_vuci') :wikitext(params.vuci) :done() local td = row:tag('td') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) else -- If there's no label, single cell spanning two columns local td = row:tag('td') :attr('colspan', '2') :addClass('tessira_valuri') if params.classi then td:addClass(params.classi) end td:wikitext(checkList(params.valuri)) end end -------------------------------------------------------------------------------- -- 7) AUTOHEADER DETECTION -------------------------------------------------------------------------------- -- This function checks if the given "property" (e.g., "P1082") or "label" -- ("Genti") matches any section name in autoheader_sections. Returns the -- name of the first matching section, or nil if none match. detectAutoheader = function(property, label) label = label or "" local lowerLabel = mw.ustring.lower(label) for sectionName, info in pairs(autoheader_sections) do local matched = false -- Check by property if property and info.props then for _, prop in ipairs(info.props) do if prop == property then matched = true break end end end -- If still not matched, check by label if (not matched) and info.labels then for _, keyword in ipairs(info.labels) do if keyword ~= "" and lowerLabel:find(mw.ustring.lower(keyword), 1, true) then matched = true break end end end if matched then return sectionName end end return nil end -------------------------------------------------------------------------------- -- 8) PREDEFINED FIELDS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function checks if each "local parameter" (fieldName) in wikidataFields -- is set or if Wikidata has a value. For example, "FieldName" => "Prupità" means -- that if the user doesn't supply FieldName explicitly, we try to pull data from -- Property on Wikidata. If found, we create a row. local function renderPredefinedRows(root, args, state, wikidataEntity) local current_section = nil for fieldName, propertyId in pairs(wikidataFields) do local data = args[fieldName] or getWikidataValue(wikidataEntity, propertyId) if data and data ~= "" then local manualGroup = args["Gruppu" .. fieldName] local label = args["Vuci" .. fieldName] or fieldName -- Handle section changes using the helper function current_section = handleSectionChange( root, state, current_section, manualGroup, propertyId, label ) -- Add the data row addRowEnhanced(root, { vuci = label, valuri = data }, state) end end end -------------------------------------------------------------------------------- -- 9) NUMBERED ROWS + AUTOHEADERS -------------------------------------------------------------------------------- -- This function looks for numbered rows like Vuci1/Valuri1, Vuci2/Valuri2, etc. -- and processes them. These rows might also have: -- a) Gruppu1, Gruppu2, etc. → Used to manually group rows into sections -- b) Prupità1, Prupità2, etc. → Helps match data to Wikidata properties -- c) Classi1, Classi2, etc. → CSS classes to apply to the value cell local function renderNumberedRows(root, args, state) local current_section = nil local index = 1 while true do local vuciParam = args["Vuci" .. index] local valuriParam = args["Valuri" .. index] local gruppuParam = args["Gruppu" .. index] local propertyParam = args["Prupità" .. index] local classiParam = args["Classi" .. index] -- Stop if no relevant parameters found if not (vuciParam or valuriParam or gruppuParam or propertyParam) then break end -- Process if there's a value or group if (valuriParam and valuriParam ~= "") or (gruppuParam and gruppuParam ~= "") then -- Handle section changes current_section = handleSectionChange( root, state, current_section, gruppuParam, propertyParam, vuciParam ) -- Add row if there's data to display if vuciParam or valuriParam then addRowEnhanced(root, { vuci = vuciParam, valuri = valuriParam, classi = classiParam }, state) end end index = index + 1 end end -------------------------------------------------------------------------------- -- 10) ABOVE & BELOW ROWS -------------------------------------------------------------------------------- -- This function optionally create a row spanning two columns at the top of -- the table with that text, if the user sets "|Supra=Some text". local function renderAbove(root, args, state) if args["Supra"] and args["Supra"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('th') :attr('colspan', '2') :addClass('tessira_supra') :wikitext(args["Supra"]) end end -- This function optionally creates a row spanning two columns at the bottom of -- the table with that text, if the user sets "|Sutta=Some text". local function renderBelow(root, args, state) if args["Sutta"] and args["Sutta"] ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_sutta') :wikitext(args["Sutta"]) end end -------------------------------------------------------------------------------- -- 11) SUBHEADER ROWS -------------------------------------------------------------------------------- -- This function creates a subheader row spanning two columns that looks like -- a small heading within the table. local function renderSubheader(root, subheaderText, state) if subheaderText and subheaderText ~= "" then state.has_rows = true local row = root:tag('tr') row:tag('td') :attr('colspan', '2') :addClass('tessira_subheader') :wikitext(subheaderText) end end -- This function loops through subheader1, subheader2, etc. until we don't find -- subheaderN. Each one becomes a separate subheader row. local function renderAllSubheaders(root, args, state) local i = 1 while true do local key = "Abbirtenza" .. i local val = args[key] if not val or val == "" then break end renderSubheader(root, val, state) i = i + 1 end end -------------------------------------------------------------------------------- -- 12) TITLE, IMAGES, NAVBAR, FOOTER -------------------------------------------------------------------------------- -- This function renders the main title (Tìtulu) and an optional subtitle -- (Suttatìtulu) spanning two columns at the top. local function renderTitle(root, args, state) if args["Tìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_titulu') :wikitext(args["Tìtulu"]) end if args["Suttatìtulu"] then root:tag('tr'):tag('th') :attr('colspan', '2') :addClass('tessira_suttatitulu') :wikitext(args["Suttatìtulu"]) end end -- This function handles up to four images (top, bottom, left, right), plus -- optional captions. Also attempts to fetch a top image from Wikidata (P18) if -- the local parameter "MmàgginiSupra" isn't set. local function renderImages(root, args, state, wikidataEntity) local images = { top = args["MmàgginiSupra"] or getWikidataValue(wikidataEntity, "P18"), bottom = args["MmàgginiSutta"], left = args["MmàgginiManuManca"], right = args["MmàgginiManuDritta"] } -- TOP if images.top then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.top .. '|frameless|center]]') end if args["DidascalìaMmàgginiSupra"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSupra"]) end -- LEFT / RIGHT if images.left or images.right then local row = root:tag('tr') row:tag('td') :addClass('tessira_mmaggini_manu_manca') :wikitext(images.left and ('[[File:' .. images.left .. '|frameless|left]]') or "") row:tag('td') :addClass('tessira_mmaggini_manu_dritta') :wikitext(images.right and ('[[File:' .. images.right .. '|frameless|right]]') or "") end if args["DidascalìaMmàgginiManuManca"] or args["DidascalìaMmàgginiManuDritta"] then local row = root:tag('tr') row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_manca') :wikitext(args["DidascalìaMmàgginiManuManca"] or "") row:tag('td') :addClass('tessira_didascalia_mmaggini_manu_dritta') :wikitext(args["DidascalìaMmàgginiManuDritta"] or "") end -- BOTTOM if images.bottom then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_mmaggini') :wikitext('[[File:' .. images.bottom .. '|frameless|center]]') end if args["DidascalìaMmàgginiSutta"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_didascalia_mmaggini') :wikitext(args["DidascalìaMmàgginiSutta"]) end end -- This function optionally calls {{Lijami sinòtticu}} to show a navigation bar -- at the bottom. If "LijamiWikidata" is not set, we pass "nowd=1" to hide the -- Wikidata link. local function renderNavBar(root, args, state) if args["NomuMudeḍḍu"] then -- Clear and explicit navbar argument handling local navArgs if args["LijamiWikidata"] then navArgs = { args["NomuMudeḍḍu"] } else navArgs = { args["NomuMudeḍḍu"], nowd = 1 } end root:tag('tr') :tag('td') :attr('colspan', '2') :addClass('tessira_navbar noprint nomobile metadata') :wikitext(mw.getCurrentFrame():expandTemplate{ title = 'Lijami sinòtticu', args = navArgs }) end end -- This function optionally adds a final row that can show disclaimers or sources. local function renderFooter(root, args, state) if args["PediPàggina"] then root:tag('tr'):tag('td') :attr('colspan', '2') :addClass('tessira_pedi_paggina') :wikitext(args["PediPàggina"]) end end -------------------------------------------------------------------------------- -- 13) BUILD TABLE -------------------------------------------------------------------------------- -- This function builds either a <table> (default) or a <div> (child="yes"), then -- calls each section-rendering function in a turn. If no rows are added, -- has_rows remains false, so we return nothing and don't display anything. local function buildInfobox(args, wikidataEntity) -- Create local state local state = { has_rows = false, empty_row_extras = {} } local container if args["child"] == "yes" then container = mw.html.create('div'):addClass('tessira_child_wrapper') else container = mw.html.create('table'):addClass('tessira') if args["no_float"] == "yes" then container:addClass('tessira_no_float') end end if args["inline_style"] then container:attr('style', tostring(args["inline_style"])) end -- Pass state to all render functions renderAbove(container, args, state) renderTitle(container, args, state) renderAllSubheaders(container, args, state) renderImages(container, args, state, wikidataEntity) renderPredefinedRows(container, args, state, wikidataEntity) renderNumberedRows(container, args, state) renderNavBar(container, args, state) renderBelow(container, args, state) renderFooter(container, args, state) -- Return both container and state return container, state end -------------------------------------------------------------------------------- -- 14) DETECT HL/PL CLASSES (HLIST & PLAINLIST) -------------------------------------------------------------------------------- -- Our module scans the arguments to see if "hlist" or "plainlist" is used somewhere. -- If found, we automatically load the corresponding CSS using <templatestyles>. local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = PLAINLIST_CSS_PATH }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = HLIST_CSS_PATH } } -- This function scans all parameters for "hlist" or "plainlist". If found, we -- mark that style as "found", so we can load its CSS later. local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for key, arg in pairs(args_to_check) do if type(key) == 'string' then -- Check that the key is text -- Check both the value and if it's a Classi parameter if key:match("^Classi%d*$") and arg then if arg:find(list.patterns[1]:gsub("^%^", ""):gsub("%$$", "")) then list.found = true break end end -- Original pattern checking for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end end if list.found then break end end end end end -------------------------------------------------------------------------------- -- 15) MAIN FUNCTION -------------------------------------------------------------------------------- -- This function is the main entry point. Usually called with -- {{#invoke:ModuleName|stampa}} in wiki markup. function p.stampa(frame) local args = {} local parentArgs = frame:getParent().args local localArgs = frame.args -- Merge arguments (simplified) for k, v in pairs(localArgs) do args[k] = v end for k, v in pairs(parentArgs) do args[k] = args[k] or v end -- Check for "hlist" or "plainlist" has_list_class(args) -- Load Wikidata entity with error handling local wikidataEntity local wikidataSuccess = true if args["Wikidata"] then wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity, args["Wikidata"]) else wikidataSuccess, wikidataEntity = pcall(mw.wikibase.getEntity) end if not wikidataSuccess then wikidataEntity = nil end -- Build the table or <div> and get state local container, state = buildInfobox(args, wikidataEntity) local html = tostring(container) -- Fix <templatestyles> or categories html = fixChildBoxes(html) -- Load any required CSS local css = "" -- Load default css if not args["style"] or args["style"]:lower() == "tessira" then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = DEFAULT_CSS_PATH } } end -- Load styles for plainlist and hlist for _, list in pairs(lists) do if list.found then css = css .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = list.styles } } end end -- Build the final output local output = "" if state.has_rows then output = css .. html end -- Append categories/references from "empty" rows if #state.empty_row_extras > 0 then output = output .. "\n<!-- References/categories from empty rows: -->\n" for _, extra in ipairs(state.empty_row_extras) do output = output .. extra .. "\n" end end -- Add debug info if requested if args["debug"] == "yes" then local debug_info = {} for k, v in pairs(args) do if not isRecognizedParam(k) then table.insert(debug_info, k) end end if #debug_info > 0 then output = output .. "\n<!-- Unrecognised parameters: " .. table.concat(debug_info, ", ") .. " -->\n" end end return output end return p kx842irfuw1n3bgh7san0m2fazel381 Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPajisi 2 66267 770429 766956 2025-07-04T11:14:32Z GianAntonucci 46609 770429 wikitext text/x-wiki <noinclude> == Zoccu è == Sta tèssira è spicìfica pî pajisi e nazzioni. Integra automaticamenti dati di Wikidata e permetti pirsunalizzazzioni lucali. == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPajisi | Nomu = | Wikidata = | Bannera = | Stemma = | Capitali = | ... }} </pre> == Paràmitri == === Basi === * '''Nomu''' - Nomu dû pajisi (si vacanti, piglia di Wikidata) * '''Wikidata''' - ID Wikidata (es: Q38 pi l'Italia) * '''NomuUfficiali''' - Nomu ufficiali cumpletu * '''NomuNativu''' - Nomu ntâ lingua lucali === Sìmbuli nazziunali === * '''Bannera''' - Bannera nazziunali * '''Stemma''' - Stemma ufficiali * '''Motta''' - Motta nazziunali * '''Nnu''' - Nnu nazziunali === Giugrafìa === * '''Capitali''' - Capitali dû pajisi * '''CittàPrincipali''' - Àutri cità mpurtanti * '''Aria''' - Supirfìci in km² * '''Pusizzioni''' - Coordinati giugràfichi * '''FusuUrariu''' - Fusi urari * '''Cunfini''' - Pajisi cunfinanti === Pupulazzioni === * '''Genti''' - Nùmmaru d'abitanti * '''DataCinsimentu''' - Data dû cinsimentu * '''Dinsità''' - Abitanti pi km² * '''Dintilichiu''' - Nomu dî cittadini * '''LinguiUfficiali''' - Lingui ufficiali * '''GruppiEtnici''' - Cumpusizzioni ètnica === Guvernu === * '''FormaGuviernu''' - Tipu di guvernu * '''CapuStatu''' - Capu dû statu * '''CapuStatu_Tìtulu''' - Tìtulu ufficiali * '''CapuGuviernu''' - Capu dû guvernu * '''CapuGuviernu_Tìtulu''' - Tìtulu ufficiali * '''Ligislatura''' - Nomu dû parlamentu === Storia === * '''Funnazzioni''' - Data di funnazzioni * '''Nnipinnenza''' - Data d'innipinnenza * '''NnipinnenzaDi''' - Nnipinnenti di quali pajisi === Economia === * '''Munita''' - Munita ufficiali * '''PIL''' - Produttu internu lordu * '''PILPirsuna''' - PIL pi càpiti * '''ISU''' - Ìnnici di sviluppu umanu === Còdici === * '''ISO3166''' - Còdici ISO * '''DuminuInternet''' - Duminiu internet * '''PrifissuTilifonicu''' - Prifissu internazziunali == Esempiu == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q38 | Tìtulu = Italia | Suttatìtulu = Repubblica Italiana | MmàgginiManuManca = Flag of Italy.svg | DidascalìaMmàgginiManuManca = Bannera | MmàgginiManuDritta = Italy-Emblem.svg | DidascalìaMmàgginiManuDritta = Stemma | Supra = Repubblica parlamentare | Vuci1 = Capitali | Valuri1 = [[Roma]] | Gruppu1 = Geografia | Aria = 301,340 km² | VuciAria = Supirfìci | GruppuAria = Geografia | Genti = 58,853,482 | VuciGenti = Pupulazzioni (2023) | GruppuGenti = Demographics | Vuci2 = Lingui ufficiali | Valuri2 = Talianu | Gruppu2 = Demographics | Capu = Sergio Mattarella | VuciCapu = Prisidenti | GruppuCapu = Government | Vuci3 = Primu Ministru | Valuri3 = Giorgia Meloni | Gruppu3 = Government | Vuci4 = Funnazzioni | Valuri4 = 17 marzu 1861 | Gruppu4 = History | Vuci5 = Munita | Valuri5 = Euro (€) | Gruppu5 = Economia | ISO = IT | VuciISO = Còdici ISO }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa <!-- Nome e titoli --> | Tìtulu = {{#if: {{{Nomu|}}} | {{{Nomu}}} | {{#if: {{{Wikidata|}}} | {{WikidataLabel|from={{{Wikidata}}}}} | {{PAGENAME}} }} }} | Suttatìtulu = {{#if: {{{NomuUfficiali|}}} | {{{NomuUfficiali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1448|from={{{Wikidata}}}}} }} }} | Supra = {{#if: {{{NomuNativu|}}} | {{{NomuNativu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1705|from={{{Wikidata}}}}} }} }} <!-- Bandiera e stemma --> | MmàgginiManuManca = {{#if: {{{Bannera|}}} | {{{Bannera}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P41|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiManuManca = {{#if: {{{Bannera|}}}|Bannera|{{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P41|from={{{Wikidata}}}}} | Bannera }} }} }} | MmàgginiManuDritta = {{#if: {{{Stemma|}}} | {{{Stemma}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P94|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiManuDritta = {{#if: {{{Stemma|}}}|Stemma|{{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P94|from={{{Wikidata}}}}} | Stemma }} }} }} <!-- Motto e inno --> | Vuci1 = Motta | Valuri1 = {{#if: {{{Motta|}}} | {{{Motta}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1546|from={{{Wikidata}}}}} }} }} | Prupità1 = P1546 | Vuci2 = Nnu nazziunali | Valuri2 = {{#if: {{{Nnu|}}} | {{{Nnu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P85|from={{{Wikidata}}}}} }} }} | Prupità2 = P85 <!-- Geografia - sezione automatica --> | Vuci3 = Capitali | Valuri3 = {{#if: {{{Capitali|}}} | {{{Capitali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P36|from={{{Wikidata}}}}} }} }} | Gruppu3 = Geography | Prupità3 = P36 | Vuci4 = Cità cchiù granni | Valuri4 = {{#if: {{{CittàPrincipali|}}} | {{{CittàPrincipali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1082|qualifier=P31=Q515|from={{{Wikidata}}}|max=5}} }} }} | Gruppu4 = Geography | Classi4 = {{#if: {{{CittàPrincipali|}}} | plainlist }} | Aria = {{#if: {{{Aria|}}} | {{{Aria}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P2046|from={{{Wikidata}}}}} }} }} | VuciAria = Supirfìci | GruppuAria = Geography | Pusizzioni = {{#if: {{{Pusizzioni|}}} | {{{Pusizzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P625|from={{{Wikidata}}}}} }} }} | VuciPusizzioni = Coordinati | GruppuPusizzioni = Geography | FusuUrariu = {{#if: {{{FusuUrariu|}}} | {{{FusuUrariu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P421|from={{{Wikidata}}}}} }} }} | VuciFusuUrariu = Fusi urari | GruppuFusuUrariu = Geography | Vuci5 = Cunfini | Valuri5 = {{#if: {{{Cunfini|}}} | {{{Cunfini}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P47|from={{{Wikidata}}}}} }} }} | Gruppu5 = Geography | Prupità5 = P47 | Classi5 = {{#if: {{{Cunfini|}}} | |plainlist}} | Vuci6 = Puntu cchiù àutu | Valuri6 = {{#if: {{{PuntuAutu|}}} | {{{PuntuAutu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P610|from={{{Wikidata}}}}} }} }} | Gruppu6 = Geography | Prupità6 = P610 | Vuci7 = Puntu cchiù vasciu | Valuri7 = {{#if: {{{PuntuVasciu|}}} | {{{PuntuVasciu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1589|from={{{Wikidata}}}}} }} }} | Gruppu7 = Geography | Prupità7 = P1589 <!-- Demografia - sezione automatica --> | Genti = {{#if: {{{Genti|}}} | {{{Genti}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1082|from={{{Wikidata}}}}} }} }} | VuciGenti = Pupulazzioni {{#if: {{{DataCinsimentu|}}} | ({{{DataCinsimentu}}}) }} | GruppuGenti = Demographics | Vuci8 = Dinsità | Valuri8 = {{{Dinsità|}}} | Gruppu8 = Demographics | Vuci9 = Dintilichiu | Valuri9 = {{#if: {{{Dintilichiu|}}} | {{{Dintilichiu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1549|from={{{Wikidata}}}}} }} }} | Gruppu9 = Demographics | Prupità9 = P1549 | Vuci10 = {{#if: {{{LinguiUfficiali|}}} | Lingui ufficiali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P37|from={{{Wikidata}}}}} | Lingui ufficiali }} }} }} | Valuri10 = {{#if: {{{LinguiUfficiali|}}} | {{{LinguiUfficiali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P37|from={{{Wikidata}}}}} }} }} | Gruppu10 = Demographics | Prupità10 = P37 | Classi10 = {{#if: {{{LinguiUfficiali|}}} | |plainlist}} | Vuci11 = Gruppi ètnici | Valuri11 = {{{GruppiEtnici|}}} | Gruppu11 = Demographics | Vuci12 = Riligiuni | Valuri12 = {{#if: {{{Riligiuni|}}} | {{{Riligiuni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P140|from={{{Wikidata}}}}} }} }} | Gruppu12 = Demographics | Prupità12 = P140 <!-- Governo - sezione automatica --> | Vuci13 = Forma di guvernu | Valuri13 = {{#if: {{{FormaGuviernu|}}} | {{{FormaGuviernu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P122|from={{{Wikidata}}}}} }} }} | Gruppu13 = Government | Prupità13 = P122 | Capu = {{#if: {{{CapuStatu|}}} | {{{CapuStatu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P35|from={{{Wikidata}}}}} }} }} | VuciCapu = {{#if: {{{CapuStatu_Tìtulu|}}} | {{{CapuStatu_Tìtulu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1906|from={{{Wikidata}}}}} | Capu dû Statu }} }} | GruppuCapu = Government | Vuci14 = {{#if: {{{CapuGuviernu_Tìtulu|}}} | {{{CapuGuviernu_Tìtulu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1313|from={{{Wikidata}}}}} | Capu dû Guvernu }} }} | Valuri14 = {{#if: {{{CapuGuviernu|}}} | {{{CapuGuviernu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P6|from={{{Wikidata}}}}} }} }} | Gruppu14 = Government | Prupità14 = P6 | Vuci15 = Ligislatura | Valuri15 = {{#if: {{{Ligislatura|}}} | {{{Ligislatura}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P194|from={{{Wikidata}}}}} }} }} | Gruppu15 = Government | Prupità15 = P194 <!-- Storia - sezione automatica --> | Vuci16 = Funnazzioni | Valuri16 = {{#if: {{{Funnazzioni|}}} | {{{Funnazzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P571|from={{{Wikidata}}}}} }} }} | Gruppu16 = History | Prupità16 = P571 | Vuci17 = Nnipinnenza | Valuri17 = {{#if: {{{Nnipinnenza|}}} | {{{Nnipinnenza}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P3103|from={{{Wikidata}}}}} }} }} | Gruppu17 = History | Prupità17 = P3103 | Vuci18 = Nnipinnenti di | Valuri18 = {{#if: {{{NnipinnenzaDi|}}} | {{{NnipinnenzaDi}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P3103|qualifier=P17|from={{{Wikidata}}}}} }} }} | Gruppu18 = History <!-- Economia - sezione automatica --> | Vuci19 = Munita | Valuri19 = {{#if: {{{Munita|}}} | {{{Munita}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P38|from={{{Wikidata}}}}} }} }} | Gruppu19 = Economia | Prupità19 = P38 | Vuci20 = PIL (nominali) | Valuri20 = {{{PIL|}}} | Gruppu20 = Economia | Vuci21 = PIL pi càpiti | Valuri21 = {{{PILPirsuna|}}} | Gruppu21 = Economia | Vuci22 = ISU | Valuri22 = {{#if: {{{ISU|}}} | {{{ISU}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1081|from={{{Wikidata}}}}} }} }} | Gruppu22 = Economia | Prupità22 = P1081 <!-- Codici internazionali --> | ISO = {{#if: {{{ISO3166|}}} | {{{ISO3166}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P297|from={{{Wikidata}}}}} }} }} | VuciISO = Còdici ISO 3166 | GruppuISO = Còdici | Vuci23 = Duminiu internet | Valuri23 = {{#if: {{{DuminuInternet|}}} | {{{DuminuInternet}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P78|from={{{Wikidata}}}}} }} }} | Gruppu23 = Còdici | Prupità23 = P78 | Vuci24 = Prifissu tilifonicu | Valuri24 = {{#if: {{{PrifissuTilifonicu|}}} | {{{PrifissuTilifonicu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P474|from={{{Wikidata}}}}} }} }} | Gruppu24 = Còdici | Prupità24 = P474 <!-- Collegamenti e mappa --> | Vuci30 = Situ ufficiali | Valuri30 = {{#if: {{{SituWeb|}}} | [{{{SituWeb}}} {{{SituWeb}}}] | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P856|from={{{Wikidata}}}}} }} }} | Gruppu30 = Lijami | Prupità30 = P856 <!-- Footer --> | PediPàggina = {{#if: {{{PediPàggina|}}} | {{{PediPàggina}}} | {{#if: {{{DataAggiurnamentu|}}} | Dati aggiurnati ô {{{DataAggiurnamentu}}} }} }} | NomuMudeḍḍu = {{{NomuMudeḍḍu|}}} | LijamiWikidata = {{#if: {{{Wikidata|}}} | yes }} <!-- Mappa --> | MmàgginiSutta = {{#if: {{{Mappa|}}} | {{{Mappa}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P242|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSutta = {{#if: {{{DidascalìaMappa|}}} | {{{DidascalìaMappa}}} | {{#if: {{{Mappa|}}}|Pusizzioni|{{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P242|from={{{Wikidata}}}}} | Pusizzioni }} }} }} }} <!-- Parametri custom --> {{{1|}}} {{{2|}}} {{{3|}}} }} d92jo9sl4w8j0anooa8hpmbipuc4vai Utenti:GianAntonucci/Bozza/Tèssira dû Capu 2 66268 770398 766846 2025-07-03T21:52:59Z GianAntonucci 46609 770398 wikitext text/x-wiki {{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCità | Wikidata = Q51176 | Nomu = U Capu | Viduta = Capo d'Orlando - view of the harbour from Scafa.JPG | Didascalìa = Viduta dû portu dû Capu a pàrtiri di Scafa | Sìnnacu = Franco Ingrillì | SìnnacuGèniri = m }} tbu9eq25jeu46txibt4tg4y05j9zl3s Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira 2 66271 770406 766953 2025-07-03T22:31:03Z GianAntonucci 46609 770406 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Generic Data | subheader1 = Facts | Vuci1 = Fact One | Valuri1 = Value One | Vuci2 = Fact Two | Valuri2 = 123 | subheader2 = More Info | Vuci3 = Something | Valuri3 = "ABC" | above = "Generic Table Example" | below = "End of Table" }} === Test with hlist and plainlist mixed === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Mixed Lists Example | Vuci1 = Some horizontal list | Valuri1 = * A * B * C | Classi1 = hlist | Vuci2 = Some vertical list | Valuri2 = * Apple * Banana * Cherry | Classi2 = plainlist }} === No Data at All === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} === A Row That Only Has References === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Population | Valuri1=<ref>Some reference about population</ref> }} === A Partial Autoheader Override === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Mr. Example | GruppuCapu=Special Government Section | Pusizzioni=34°N 12°E }} === Child Infobox with Minimal Fields === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Nested Box | subheader1=Inside Another | Vuci1=Description | Valuri1=This box is nested }} === Large Number of Subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Multi-Subheaders Example | subheader1=First Section | Vuci1=Item One | Valuri1=Value One | subheader2=Second Section | Vuci2=Item Two | Valuri2=Value Two | subheader3=Third Section | subheader4=Even More | subheader5=And More | Vuci3=Last Row | Valuri3=Demo }} === Using Categories in an "Empty" Numbered Row === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Some Data | Valuri1= [[Category:Infobox Testing]] }} === An Unknown Wikidata Property === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | UnknownField=SomeValue | GruppuUnknownField=Weird Data }} === A Row That Matches Multiple Sections === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Population | Valuri1=100,000 | Property1=P1082 }} === Fully Empty Table Except for "Above" or "Below" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | above=Some Title | below=Some Footer }} === A Row with Big Mixed Content === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Mixed Row Example | Vuci1=Complex Data | Valuri1= Here is some text. <ref>A reference about this text</ref> [[Category:Testing Category in a Row]] * A bullet * Another bullet }} == Novi Esempi Cumpleti == === Complete City Example with All Features === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | above = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} === Testing All Image Positions === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Image Test | MmàgginiSupra = Example1.jpg | DidascalìaMmàgginiSupra = Top image caption | MmàgginiManuManca = Example2.jpg | DidascalìaMmàgginiManuManca = Left caption | MmàgginiManuDritta = Example3.jpg | DidascalìaMmàgginiManuDritta = Right caption | MmàgginiSutta = Example4.jpg | DidascalìaMmàgginiSutta = Bottom image caption }} === Self-Closing References Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Reference Types | Vuci1 = Standard ref | Valuri1 = Some text<ref>Standard reference</ref> | Vuci2 = Self-closing ref | Valuri2 = More text<ref name="test" /> | Vuci3 = Only self-closing | Valuri3 = <ref name="another" /> }} === Debug Mode Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Debug Example | Vuci1 = Valid parameter | Valuri1 = Some value | InvalidParam = This should appear in debug | AnotherBadParam = Also in debug }} === Numbered Lists Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Lists Example | Vuci1 = Numbered list | Valuri1 = # First item # Second item # Third item | Vuci2 = Mixed list | Valuri2 = # Numbered one #* Bullet sub-item #* Another sub-item # Numbered two }} === Testing Autoheader Geographic Grouping === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Geographic Data Test | Aria = 250 km² | Pusizzioni = 40°N 15°E | Pruvincia = Test Province | FusuUrariu = UTC+1 | Vuci10 = Elevation | Valuri10 = 150 m | Property10 = P2046 }} === Complex Row Without Label === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = No Label Test | Valuri1 = This row has no label, spans two columns | Vuci2 = Normal row | Valuri2 = With label | Valuri3 = Another row without label | Classi3 = plainlist }} === Testing Custom CSS and Inline Styles === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid blue; | Tìtulu = Styled Infobox | Vuci1 = Custom styling | Valuri1 = This infobox has custom CSS }} === Multiple Categories and References === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = References Test | Vuci1 = Multiple refs | Valuri1 = Text with ref<ref>First ref</ref> and another<ref>Second ref</ref> | Vuci2 = Just categories | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Mixed empty | Valuri3 = <ref>Ref one</ref>[[Category:Empty Test]]<ref name="test" /> }} === Testing Case Variations in Categories === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Lowercase category | Valuri1 = [[category:lowercase test]] | Vuci2 = Mixed case | Valuri2 = [[CaTeGoRy:Mixed Case Test]] | Vuci3 = With spaces | Valuri3 = [[ Category : Spaced Test ]] }} === High Numbered Parameters Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = High Numbers | Vuci50 = Row 50 | Valuri50 = This is row number 50 | Vuci100 = Row 100 | Valuri100 = This is row number 100 | Gruppu100 = Very High Numbers }} === Testing Manual Groups with Numbered Rows === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Manual Grouping | Gruppu1 = First Group | Vuci1 = Item A | Valuri1 = Value A | Vuci2 = Item B | Valuri2 = Value B | Gruppu3 = Second Group | Vuci3 = Item C | Valuri3 = Value C | Gruppu4 = | Vuci4 = Item D | Valuri4 = Value D (no group header because Gruppu4 is empty) }} === Testing Wikidata Parameter === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Testing Wikidata Integration | Vuci1 = Manual data | Valuri1 = This is manual }} === Child Infobox with Full Features === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Parent Infobox | Vuci1 = Before child | Valuri1 = Parent data | Vuci2 = Child box | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Child Title | subheader1 = Child Section | Vuci1 = Child data | Valuri1 = Nested value | below = Child footer }} | Vuci3 = After child | Valuri3 = More parent data }} === Empty Strings vs Missing Parameters === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Empty String Test | Vuci1 = Empty string value | Valuri1 = | Vuci2 = Spaces only | Valuri2 = | Vuci3 = Has content | Valuri3 = Actual content }} === Testing Predefined Field Overrides === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Override Test | Genti = 50,000 | VuciGenti = Custom Population Label | Capu = John Doe | VuciCapu = Chief Executive | GruppuCapu = Leadership }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} n1zh4rwbrde7car2yn9a7mrl9y4x3vq 770407 770406 2025-07-03T22:33:44Z GianAntonucci 46609 770407 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Generic Data | subheader1 = Facts | Vuci1 = Fact One | Valuri1 = Value One | Vuci2 = Fact Two | Valuri2 = 123 | subheader2 = More Info | Vuci3 = Something | Valuri3 = "ABC" | above = "Generic Table Example" | below = "End of Table" }} === Test with hlist and plainlist mixed === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Mixed Lists Example | Vuci1 = Some horizontal list | Valuri1 = * A * B * C | Classi1 = hlist | Vuci2 = Some vertical list | Valuri2 = * Apple * Banana * Cherry | Classi2 = plainlist }} === No Data at All === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} === A Row That Only Has References === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Population | Valuri1=<ref>Some reference about population</ref> }} === A Partial Autoheader Override === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Mr. Example | GruppuCapu=Special Government Section | Pusizzioni=34°N 12°E }} === Child Infobox with Minimal Fields === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Nested Box | subheader1=Inside Another | Vuci1=Description | Valuri1=This box is nested }} === Large Number of Subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Multi-Subheaders Example | subheader1=First Section | Vuci1=Item One | Valuri1=Value One | subheader2=Second Section | Vuci2=Item Two | Valuri2=Value Two | subheader3=Third Section | subheader4=Even More | subheader5=And More | Vuci3=Last Row | Valuri3=Demo }} === Using Categories in an "Empty" Numbered Row === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Some Data | Valuri1= [[Category:Infobox Testing]] }} === An Unknown Wikidata Property === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | UnknownField=SomeValue | GruppuUnknownField=Weird Data }} === A Row That Matches Multiple Sections === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Population | Valuri1=100,000 | Property1=P1082 }} === Fully Empty Table Except for "Above" or "Below" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | above=Some Title | below=Some Footer }} === A Row with Big Mixed Content === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Mixed Row Example | Vuci1=Complex Data | Valuri1= Here is some text. <ref>A reference about this text</ref> [[Category:Testing Category in a Row]] * A bullet * Another bullet }} == Novi Esempi Cumpleti == === Complete City Example with All Features === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | above = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} === Testing All Image Positions === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Image Test | MmàgginiSupra = Example1.jpg | DidascalìaMmàgginiSupra = Top image caption | MmàgginiManuManca = Example2.jpg | DidascalìaMmàgginiManuManca = Left caption | MmàgginiManuDritta = Example3.jpg | DidascalìaMmàgginiManuDritta = Right caption | MmàgginiSutta = Example4.jpg | DidascalìaMmàgginiSutta = Bottom image caption }} === Self-Closing References Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Reference Types | Vuci1 = Standard ref | Valuri1 = Some text<ref>Standard reference</ref> | Vuci2 = Named ref first use | Valuri2 = More text<ref name="test">This is the test reference</ref> | Vuci3 = Reusing named ref | Valuri3 = Even more text<ref name="test" /> }} === Debug Mode Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Debug Example | Vuci1 = Valid parameter | Valuri1 = Some value | InvalidParam = This should appear in debug | AnotherBadParam = Also in debug }} === Numbered Lists Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Lists Example | Vuci1 = Numbered list | Valuri1 = # First item # Second item # Third item | Vuci2 = Mixed list | Valuri2 = # Numbered one #* Bullet sub-item #* Another sub-item # Numbered two }} === Testing Autoheader Geographic Grouping === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Geographic Data Test | Aria = 250 km² | Pusizzioni = 40°N 15°E | Pruvincia = Test Province | FusuUrariu = UTC+1 | Vuci10 = Elevation | Valuri10 = 150 m | Property10 = P2046 }} === Complex Row Without Label === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = No Label Test | Valuri1 = This row has no label, spans two columns | Vuci2 = Normal row | Valuri2 = With label | Valuri3 = Another row without label | Classi3 = plainlist }} === Testing Custom CSS and Inline Styles === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid blue; | Tìtulu = Styled Infobox | Vuci1 = Custom styling | Valuri1 = This infobox has custom CSS }} === Multiple Categories and References === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = References Test | Vuci1 = Multiple refs | Valuri1 = Text with ref<ref>First ref</ref> and another<ref>Second ref</ref> | Vuci2 = Just categories | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Mixed empty | Valuri3 = <ref name="mixedtest">Reference content</ref>[[Category:Empty Test]]<ref name="mixedtest" /> }} === Testing Case Variations in Categories === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Lowercase category | Valuri1 = [[category:lowercase test]] | Vuci2 = Mixed case | Valuri2 = [[CaTeGoRy:Mixed Case Test]] | Vuci3 = With spaces | Valuri3 = [[ Category : Spaced Test ]] }} === High Numbered Parameters Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = High Numbers | Vuci50 = Row 50 | Valuri50 = This is row number 50 | Vuci100 = Row 100 | Valuri100 = This is row number 100 | Gruppu100 = Very High Numbers }} === Testing Manual Groups with Numbered Rows === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Manual Grouping | Gruppu1 = First Group | Vuci1 = Item A | Valuri1 = Value A | Vuci2 = Item B | Valuri2 = Value B | Gruppu3 = Second Group | Vuci3 = Item C | Valuri3 = Value C | Gruppu4 = | Vuci4 = Item D | Valuri4 = Value D (no group header because Gruppu4 is empty) }} === Testing Wikidata Parameter === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Testing Wikidata Integration | Vuci1 = Manual data | Valuri1 = This is manual }} === Child Infobox with Full Features === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Parent Infobox | Vuci1 = Before child | Valuri1 = Parent data | Vuci2 = Child box | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Child Title | subheader1 = Child Section | Vuci1 = Child data | Valuri1 = Nested value | below = Child footer }} | Vuci3 = After child | Valuri3 = More parent data }} === Empty Strings vs Missing Parameters === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Empty String Test | Vuci1 = Empty string value | Valuri1 = | Vuci2 = Spaces only | Valuri2 = | Vuci3 = Has content | Valuri3 = Actual content }} === Testing Predefined Field Overrides === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Override Test | Genti = 50,000 | VuciGenti = Custom Population Label | Capu = John Doe | VuciCapu = Chief Executive | GruppuCapu = Leadership }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} iqfxocw4kf8y8tpraf8p7y61vwwwzpf 770408 770407 2025-07-03T22:38:24Z GianAntonucci 46609 770408 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Generic Data | subheader1 = Facts | Vuci1 = Fact One | Valuri1 = Value One | Vuci2 = Fact Two | Valuri2 = 123 | subheader2 = More Info | Vuci3 = Something | Valuri3 = "ABC" | above = "Generic Table Example" | below = "End of Table" }} === Test with hlist and plainlist mixed === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Mixed Lists Example | Vuci1 = Some horizontal list | Valuri1 = * A * B * C | Classi1 = hlist | Vuci2 = Some vertical list | Valuri2 = * Apple * Banana * Cherry | Classi2 = plainlist }} === No Data at All === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} === A Row That Only Has References === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Population | Valuri1=<ref>Some reference about population</ref> }} === A Partial Autoheader Override === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Mr. Example | GruppuCapu=Special Government Section | Pusizzioni=34°N 12°E }} === Child Infobox with Minimal Fields === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Nested Box | subheader1=Inside Another | Vuci1=Description | Valuri1=This box is nested }} === Large Number of Subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Multi-Subheaders Example | subheader1=First Section | Vuci1=Item One | Valuri1=Value One | subheader2=Second Section | Vuci2=Item Two | Valuri2=Value Two | subheader3=Third Section | subheader4=Even More | subheader5=And More | Vuci3=Last Row | Valuri3=Demo }} === Using Categories in an "Empty" Numbered Row === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Some Data | Valuri1= [[Category:Infobox Testing]] }} === An Unknown Wikidata Property === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | UnknownField=SomeValue | GruppuUnknownField=Weird Data }} === A Row That Matches Multiple Sections === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Population | Valuri1=100,000 | Property1=P1082 }} === Fully Empty Table Except for "Above" or "Below" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | above=Some Title | below=Some Footer }} === A Row with Big Mixed Content === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Mixed Row Example | Vuci1=Complex Data | Valuri1= Here is some text. <ref>A reference about this text</ref> [[Category:Testing Category in a Row]] * A bullet * Another bullet }} == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | above = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | below = Unu dî maiuri scrittùra siciliani dû XX sèculu }} === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | above = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | below = Vulcanu cchiù àutu d'Europa }} === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | subheader1 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | subheader2 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | subheader3 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | below = Capulavuru dû cìnima talianu }} === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | subheader1 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | below = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | below = Patrimòniu linguìsticu di Sicilia }} === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | below = Forza Catania! }} === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | above = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} === Testing All Image Positions === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Image Test | MmàgginiSupra = Example1.jpg | DidascalìaMmàgginiSupra = Top image caption | MmàgginiManuManca = Example2.jpg | DidascalìaMmàgginiManuManca = Left caption | MmàgginiManuDritta = Example3.jpg | DidascalìaMmàgginiManuDritta = Right caption | MmàgginiSutta = Example4.jpg | DidascalìaMmàgginiSutta = Bottom image caption }} === Self-Closing References Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Reference Types | Vuci1 = Standard ref | Valuri1 = Some text<ref>Standard reference</ref> | Vuci2 = Named ref first use | Valuri2 = More text<ref name="test">This is the test reference</ref> | Vuci3 = Reusing named ref | Valuri3 = Even more text<ref name="test" /> }} === Debug Mode Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Debug Example | Vuci1 = Valid parameter | Valuri1 = Some value | InvalidParam = This should appear in debug | AnotherBadParam = Also in debug }} === Numbered Lists Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Lists Example | Vuci1 = Numbered list | Valuri1 = # First item # Second item # Third item | Vuci2 = Mixed list | Valuri2 = # Numbered one #* Bullet sub-item #* Another sub-item # Numbered two }} === Testing Autoheader Geographic Grouping === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Geographic Data Test | Aria = 250 km² | Pusizzioni = 40°N 15°E | Pruvincia = Test Province | FusuUrariu = UTC+1 | Vuci10 = Elevation | Valuri10 = 150 m | Property10 = P2046 }} === Complex Row Without Label === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = No Label Test | Valuri1 = This row has no label, spans two columns | Vuci2 = Normal row | Valuri2 = With label | Valuri3 = Another row without label | Classi3 = plainlist }} === Testing Custom CSS and Inline Styles === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid blue; | Tìtulu = Styled Infobox | Vuci1 = Custom styling | Valuri1 = This infobox has custom CSS }} === Multiple Categories and References === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = References Test | Vuci1 = Multiple refs | Valuri1 = Text with ref<ref>First ref</ref> and another<ref>Second ref</ref> | Vuci2 = Just categories | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Mixed empty | Valuri3 = <ref name="mixedtest">Reference content</ref>[[Category:Empty Test]]<ref name="mixedtest" /> }} === Testing Case Variations in Categories === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Lowercase category | Valuri1 = [[category:lowercase test]] | Vuci2 = Mixed case | Valuri2 = [[CaTeGoRy:Mixed Case Test]] | Vuci3 = With spaces | Valuri3 = [[ Category : Spaced Test ]] }} === High Numbered Parameters Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = High Numbers | Vuci50 = Row 50 | Valuri50 = This is row number 50 | Vuci100 = Row 100 | Valuri100 = This is row number 100 | Gruppu100 = Very High Numbers }} === Testing Manual Groups with Numbered Rows === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Manual Grouping | Gruppu1 = First Group | Vuci1 = Item A | Valuri1 = Value A | Vuci2 = Item B | Valuri2 = Value B | Gruppu3 = Second Group | Vuci3 = Item C | Valuri3 = Value C | Gruppu4 = | Vuci4 = Item D | Valuri4 = Value D (no group header because Gruppu4 is empty) }} === Testing Wikidata Parameter === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Testing Wikidata Integration | Vuci1 = Manual data | Valuri1 = This is manual }} === Child Infobox with Full Features === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Parent Infobox | Vuci1 = Before child | Valuri1 = Parent data | Vuci2 = Child box | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Child Title | subheader1 = Child Section | Vuci1 = Child data | Valuri1 = Nested value | below = Child footer }} | Vuci3 = After child | Valuri3 = More parent data }} === Empty Strings vs Missing Parameters === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Empty String Test | Vuci1 = Empty string value | Valuri1 = | Vuci2 = Spaces only | Valuri2 = | Vuci3 = Has content | Valuri3 = Actual content }} === Testing Predefined Field Overrides === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Override Test | Genti = 50,000 | VuciGenti = Custom Population Label | Capu = John Doe | VuciCapu = Chief Executive | GruppuCapu = Leadership }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} 7tovzn03gf92um0ceqr54zoe8ds5d4k 770409 770408 2025-07-03T22:43:37Z GianAntonucci 46609 770409 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Generic Data | subheader1 = Facts | Vuci1 = Fact One | Valuri1 = Value One | Vuci2 = Fact Two | Valuri2 = 123 | subheader2 = More Info | Vuci3 = Something | Valuri3 = "ABC" | above = "Generic Table Example" | below = "End of Table" }} === Test with hlist and plainlist mixed === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Mixed Lists Example | Vuci1 = Some horizontal list | Valuri1 = * A * B * C | Classi1 = hlist | Vuci2 = Some vertical list | Valuri2 = * Apple * Banana * Cherry | Classi2 = plainlist }} === No Data at All === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} === A Row That Only Has References === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Population | Valuri1=<ref>Some reference about population</ref> }} === A Partial Autoheader Override === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Mr. Example | GruppuCapu=Special Government Section | Pusizzioni=34°N 12°E }} === Child Infobox with Minimal Fields === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Nested Box | subheader1=Inside Another | Vuci1=Description | Valuri1=This box is nested }} === Large Number of Subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Multi-Subheaders Example | subheader1=First Section | Vuci1=Item One | Valuri1=Value One | subheader2=Second Section | Vuci2=Item Two | Valuri2=Value Two | subheader3=Third Section | subheader4=Even More | subheader5=And More | Vuci3=Last Row | Valuri3=Demo }} === Using Categories in an "Empty" Numbered Row === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Some Data | Valuri1= [[Category:Infobox Testing]] }} === An Unknown Wikidata Property === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | UnknownField=SomeValue | GruppuUnknownField=Weird Data }} === A Row That Matches Multiple Sections === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Population | Valuri1=100,000 | Property1=P1082 }} === Fully Empty Table Except for "Above" or "Below" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | above=Some Title | below=Some Footer }} === A Row with Big Mixed Content === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu=Mixed Row Example | Vuci1=Complex Data | Valuri1= Here is some text. <ref>A reference about this text</ref> [[Category:Testing Category in a Row]] * A bullet * Another bullet }} == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | above = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | below = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | above = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | below = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | subheader1 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | subheader2 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | subheader3 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | below = Capulavuru dû cìnima talianu }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | subheader1 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | below = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | below = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | below = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | above = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Testing All Image Positions === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Image Test | MmàgginiSupra = Example1.jpg | DidascalìaMmàgginiSupra = Top image caption | MmàgginiManuManca = Example2.jpg | DidascalìaMmàgginiManuManca = Left caption | MmàgginiManuDritta = Example3.jpg | DidascalìaMmàgginiManuDritta = Right caption | MmàgginiSutta = Example4.jpg | DidascalìaMmàgginiSutta = Bottom image caption }} === Self-Closing References Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Reference Types | Vuci1 = Standard ref | Valuri1 = Some text<ref>Standard reference</ref> | Vuci2 = Named ref first use | Valuri2 = More text<ref name="test">This is the test reference</ref> | Vuci3 = Reusing named ref | Valuri3 = Even more text<ref name="test" /> }} === Debug Mode Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Debug Example | Vuci1 = Valid parameter | Valuri1 = Some value | InvalidParam = This should appear in debug | AnotherBadParam = Also in debug }} === Numbered Lists Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Lists Example | Vuci1 = Numbered list | Valuri1 = # First item # Second item # Third item | Vuci2 = Mixed list | Valuri2 = # Numbered one #* Bullet sub-item #* Another sub-item # Numbered two }} === Testing Autoheader Geographic Grouping === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Geographic Data Test | Aria = 250 km² | Pusizzioni = 40°N 15°E | Pruvincia = Test Province | FusuUrariu = UTC+1 | Vuci10 = Elevation | Valuri10 = 150 m | Property10 = P2046 }} === Complex Row Without Label === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = No Label Test | Valuri1 = This row has no label, spans two columns | Vuci2 = Normal row | Valuri2 = With label | Valuri3 = Another row without label | Classi3 = plainlist }} === Testing Custom CSS and Inline Styles === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid blue; | Tìtulu = Styled Infobox | Vuci1 = Custom styling | Valuri1 = This infobox has custom CSS }} === Multiple Categories and References === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = References Test | Vuci1 = Multiple refs | Valuri1 = Text with ref<ref>First ref</ref> and another<ref>Second ref</ref> | Vuci2 = Just categories | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Mixed empty | Valuri3 = <ref name="mixedtest">Reference content</ref>[[Category:Empty Test]]<ref name="mixedtest" /> }} === Testing Case Variations in Categories === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Lowercase category | Valuri1 = [[category:lowercase test]] | Vuci2 = Mixed case | Valuri2 = [[CaTeGoRy:Mixed Case Test]] | Vuci3 = With spaces | Valuri3 = [[ Category : Spaced Test ]] }} === High Numbered Parameters Test === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = High Numbers | Vuci50 = Row 50 | Valuri50 = This is row number 50 | Vuci100 = Row 100 | Valuri100 = This is row number 100 | Gruppu100 = Very High Numbers }} === Testing Manual Groups with Numbered Rows === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Manual Grouping | Gruppu1 = First Group | Vuci1 = Item A | Valuri1 = Value A | Vuci2 = Item B | Valuri2 = Value B | Gruppu3 = Second Group | Vuci3 = Item C | Valuri3 = Value C | Gruppu4 = | Vuci4 = Item D | Valuri4 = Value D (no group header because Gruppu4 is empty) }} === Testing Wikidata Parameter === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Testing Wikidata Integration | Vuci1 = Manual data | Valuri1 = This is manual }} === Child Infobox with Full Features === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Parent Infobox | Vuci1 = Before child | Valuri1 = Parent data | Vuci2 = Child box | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Child Title | subheader1 = Child Section | Vuci1 = Child data | Valuri1 = Nested value | below = Child footer }} | Vuci3 = After child | Valuri3 = More parent data }} === Empty Strings vs Missing Parameters === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Empty String Test | Vuci1 = Empty string value | Valuri1 = | Vuci2 = Spaces only | Valuri2 = | Vuci3 = Has content | Valuri3 = Actual content }} === Testing Predefined Field Overrides === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Override Test | Genti = 50,000 | VuciGenti = Custom Population Label | Capu = John Doe | VuciCapu = Chief Executive | GruppuCapu = Leadership }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} snlgb1oio932t63wirgq3ahisaeiimy 770410 770409 2025-07-03T22:48:21Z GianAntonucci 46609 770410 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Dati ginèrici | subheader1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | subheader2 = Cchiù nfurmazzioni | Vuci3 = Quarcosa | Valuri3 = "ABC" | above = "Esèmpiu di Tàvula Ginèrica" | below = "Fini dâ Tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Cascia Nnicata | subheader1=Dintra n'àutra | Vuci1=Discrizzioni | Valuri1=Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | subheader1=Prima Sizzioni | Vuci1=Cosa Una | Valuri1=Valuri Unu | subheader2=Sicunna Sizzioni | Vuci2=Cosa Dui | Valuri2=Valuri Dui | subheader3=Terza Sizzioni | subheader4=Ancora Cchiù | subheader5=E Ancora | Vuci3=Ùrtima Riga | Valuri3=Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Quarchi Datu | Valuri1= [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu=QuarchiValuri | GruppuCampuScunusciutu=Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=100,000 àbitanti | Property1=P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "Above" o "Below" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | above=Quarchi Tìtulu | below=Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | above = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | below = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | above = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | below = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | subheader1 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | subheader2 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | subheader3 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | below = Capulavuru dû cìnima talianu }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | subheader1 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | below = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | below = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | below = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | above = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Property10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | subheader1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | below = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} jfjg5cfvhdkiyh5h1g9ioa7n0p8cksu 770413 770410 2025-07-03T23:02:31Z GianAntonucci 46609 770413 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Dati ginèrici | subheader1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | subheader2 = Cchiù nfurmazzioni | Vuci3 = Quarcosa | Valuri3 = "ABC" | above = "Esèmpiu di Tàvula Ginèrica" | below = "Fini dâ Tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Cascia Nnicata | subheader1=Dintra n'àutra | Vuci1=Discrizzioni | Valuri1=Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | subheader1=Prima Sizzioni | Vuci1=Cosa Una | Valuri1=Valuri Unu | subheader2=Sicunna Sizzioni | Vuci2=Cosa Dui | Valuri2=Valuri Dui | subheader3=Terza Sizzioni | subheader4=Ancora Cchiù | subheader5=E Ancora | Vuci3=Ùrtima Riga | Valuri3=Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Quarchi Datu | Valuri1= [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu=QuarchiValuri | GruppuCampuScunusciutu=Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=100,000 àbitanti | Property1=P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "Above" o "Below" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | above=Quarchi Tìtulu | below=Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | above = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | below = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | above = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | below = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | below = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | subheader1 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | below = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | below = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | below = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | above = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Property10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | subheader1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | below = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} rj2nq7jwnt0itc0ph538yei0vzotk5w 770414 770413 2025-07-03T23:05:30Z GianAntonucci 46609 770414 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Dati ginèrici | subheader1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | subheader2 = Cchiù nfurmazzioni | Vuci3 = Quarcosa | Valuri3 = "ABC" | above = "Esèmpiu di Tàvula Ginèrica" | below = "Fini dâ Tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Cascia Nnicata | subheader1=Dintra n'àutra | Vuci1=Discrizzioni | Valuri1=Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | subheader1=Prima Sizzioni | Vuci1=Cosa Una | Valuri1=Valuri Unu | subheader2=Sicunna Sizzioni | Vuci2=Cosa Dui | Valuri2=Valuri Dui | subheader3=Terza Sizzioni | subheader4=Ancora Cchiù | subheader5=E Ancora | Vuci3=Ùrtima Riga | Valuri3=Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Quarchi Datu | Valuri1= [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu=QuarchiValuri | GruppuCampuScunusciutu=Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=100,000 àbitanti | Property1=P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "Above" o "Below" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | above=Quarchi Tìtulu | below=Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | above = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | below = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | above = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | below = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | below = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | Gruppu5 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | below = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | below = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | below = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | above = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Property10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | subheader1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | below = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} t8sxs6uef2rzj9zctlt66g33m2kxh4t 770416 770414 2025-07-04T09:38:31Z GianAntonucci 46609 770416 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Dati ginèrici | subheader1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | subheader2 = Cchiù nfurmazzioni | Vuci3 = Quarcosa | Valuri3 = "ABC" | supra = "Esèmpiu di Tàvula Ginèrica" | sutta = "Fini dâ Tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Cascia Nnicata | subheader1=Dintra n'àutra | Vuci1=Discrizzioni | Valuri1=Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | subheader1=Prima Sizzioni | Vuci1=Cosa Una | Valuri1=Valuri Unu | subheader2=Sicunna Sizzioni | Vuci2=Cosa Dui | Valuri2=Valuri Dui | subheader3=Terza Sizzioni | subheader4=Ancora Cchiù | subheader5=E Ancora | Vuci3=Ùrtima Riga | Valuri3=Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Quarchi Datu | Valuri1= [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu=QuarchiValuri | GruppuCampuScunusciutu=Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=100,000 àbitanti | Property1=P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "supra" o "sutta" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | supra=Quarchi Tìtulu | sutta=Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | supra = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | sutta = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | sutta = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | Gruppu5 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | sutta = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | sutta = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | sutta = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | supra = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Property10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | subheader1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | sutta = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} 68se5v6e9yqgc5h99cgmturyilttjpk 770417 770416 2025-07-04T09:39:53Z GianAntonucci 46609 770417 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Dati ginèrici | subheader1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | subheader2 = Nfurmazzioni | Vuci3 = Quarchi cosa | Valuri3 = "ABC" | supra = "Tàvula Ginèrica" | sutta = "Fini dâ Tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Cascia Nnicata | subheader1=Dintra n'àutra | Vuci1=Discrizzioni | Valuri1=Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | subheader1=Prima Sizzioni | Vuci1=Cosa Una | Valuri1=Valuri Unu | subheader2=Sicunna Sizzioni | Vuci2=Cosa Dui | Valuri2=Valuri Dui | subheader3=Terza Sizzioni | subheader4=Ancora Cchiù | subheader5=E Ancora | Vuci3=Ùrtima Riga | Valuri3=Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Quarchi Datu | Valuri1= [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu=QuarchiValuri | GruppuCampuScunusciutu=Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=100,000 àbitanti | Property1=P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "supra" o "sutta" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | supra=Quarchi Tìtulu | sutta=Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | supra = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | sutta = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | sutta = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | Gruppu5 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | sutta = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | sutta = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | sutta = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | supra = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Property10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | subheader1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | sutta = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} jiioa6j291x0wqqulm9g7k2iv93anw6 770418 770417 2025-07-04T09:40:52Z GianAntonucci 46609 770418 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | supra = "Tàvula ginèrica" | Tìtulu = Dati ginèrici | subheader1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | subheader2 = Nfurmazzioni | Vuci3 = Quarchi cosa | Valuri3 = "ABC" | sutta = "Fini dâ tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Cascia Nnicata | subheader1=Dintra n'àutra | Vuci1=Discrizzioni | Valuri1=Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | subheader1=Prima Sizzioni | Vuci1=Cosa Una | Valuri1=Valuri Unu | subheader2=Sicunna Sizzioni | Vuci2=Cosa Dui | Valuri2=Valuri Dui | subheader3=Terza Sizzioni | subheader4=Ancora Cchiù | subheader5=E Ancora | Vuci3=Ùrtima Riga | Valuri3=Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Quarchi Datu | Valuri1= [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu=QuarchiValuri | GruppuCampuScunusciutu=Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=100,000 àbitanti | Property1=P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "supra" o "sutta" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | supra=Quarchi Tìtulu | sutta=Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | supra = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | sutta = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | sutta = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | Gruppu5 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | sutta = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | sutta = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | sutta = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | supra = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Property10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | subheader1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | sutta = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} 7g07myd2vzb3yrv8kzey6pjp2xoo1e6 770420 770418 2025-07-04T09:56:43Z GianAntonucci 46609 770420 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | supra = "Tàvula ginèrica" | Tìtulu = Dati ginèrici | subheader1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | subheader2 = Nfurmazzioni | Vuci3 = Quarchi cosa | Valuri3 = "ABC" | sutta = "Fini dâ tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child=yes | Tìtulu=Cascia Nnicata | subheader1=Dintra n'àutra | Vuci1=Discrizzioni | Valuri1=Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di subheaders === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | subheader1=Prima Sizzioni | Vuci1=Cosa Una | Valuri1=Valuri Unu | subheader2=Sicunna Sizzioni | Vuci2=Cosa Dui | Valuri2=Valuri Dui | subheader3=Terza Sizzioni | subheader4=Ancora Cchiù | subheader5=E Ancora | Vuci3=Ùrtima Riga | Valuri3=Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Quarchi Datu | Valuri1= [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu=QuarchiValuri | GruppuCampuScunusciutu=Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=100,000 àbitanti | Prupità1=P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "supra" o "sutta" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | supra=Quarchi Tìtulu | sutta=Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | subheader1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | subheader1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | subheader2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | subheader1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | subheader2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | supra = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | subheader1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | subheader2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | sutta = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | sutta = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | Gruppu5 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | sutta = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | subheader1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | subheader2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | sutta = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | subheader1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | subheader2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | sutta = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | supra = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | subheader1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | subheader2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | subheader3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Prupità10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | subheader1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | sutta = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} mc3x0ulrwoyyw4hg1s1467uxze5ur2v 770421 770420 2025-07-04T10:06:05Z GianAntonucci 46609 770421 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | supra = "Tàvula ginèrica" | Tìtulu = Dati ginèrici | Abbirtenza1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | Abbirtenza2 = Nfurmazzioni | Vuci3 = Quarchi cosa | Valuri3 = "ABC" | sutta = "Fini dâ tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child = yes | Tìtulu = Cascia Nnicata | Abbirtenza1 = Dintra n'àutra | Vuci1 = Discrizzioni | Valuri1 = Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di abbirtenzi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | Abbirtenza1 = Prima Sizzioni | Vuci1 = Cosa Una | Valuri1 = Valuri Unu | Abbirtenza2 = Sicunna Sizzioni | Vuci2 = Cosa Dui | Valuri2 = Valuri Dui | Abbirtenza3 = Terza Sizzioni | Abbirtenza4 = Ancora Cchiôssai | Abbirtenza5 = E Ancora | Vuci3 = Ùrtima Riga | Valuri3 = Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Quarchi Datu | Valuri1 = [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu = QuarchiValuri | GruppuCampuScunusciutu = Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Pupulazzioni | Valuri1 = 100,000 àbitanti | Prupità1 = P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "supra" o "sutta" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | supra = Quarchi Tìtulu | sutta = Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | Abbirtenza1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | Abbirtenza1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | Abbirtenza2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | Abbirtenza1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | Abbirtenza2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | supra = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | Abbirtenza1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | Abbirtenza2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | sutta = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | sutta = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | subheader1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | subheader2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | Gruppu5 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | sutta = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | subheader1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | subheader2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | Abbirtenza1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | Abbirtenza2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | sutta = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | Abbirtenza1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | Abbirtenza2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | sutta = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | supra = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | Abbirtenza1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | Abbirtenza2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | Abbirtenza3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Prupità10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | subheader1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | sutta = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} 8x2ccgev6xv7jrsjusixkvjz2zrhoon 770424 770421 2025-07-04T10:14:45Z GianAntonucci 46609 770424 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Supra = "Tàvula ginèrica" | Tìtulu = Dati ginèrici | Abbirtenza1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | Abbirtenza2 = Nfurmazzioni | Vuci3 = Quarchi cosa | Valuri3 = "ABC" | Sutta = "Fini dâ tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child = yes | Tìtulu = Cascia Nnicata | Abbirtenza1 = Dintra n'àutra | Vuci1 = Discrizzioni | Valuri1 = Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di abbirtenzi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | Abbirtenza1 = Prima Sizzioni | Vuci1 = Cosa Una | Valuri1 = Valuri Unu | Abbirtenza2 = Sicunna Sizzioni | Vuci2 = Cosa Dui | Valuri2 = Valuri Dui | Abbirtenza3 = Terza Sizzioni | Abbirtenza4 = Ancora Cchiôssai | Abbirtenza5 = E Ancora | Vuci3 = Ùrtima Riga | Valuri3 = Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Quarchi Datu | Valuri1 = [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu = QuarchiValuri | GruppuCampuScunusciutu = Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Pupulazzioni | Valuri1 = 100,000 àbitanti | Prupità1 = P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "Supra" o "Sutta" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Supra = Quarchi Tìtulu | Sutta = Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | Supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | Abbirtenza1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | Abbirtenza1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | Abbirtenza2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | Sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | Abbirtenza1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | Abbirtenza2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | Supra = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | Abbirtenza1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | Abbirtenza2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | Sutta = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | Sutta = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | Abbirtenza1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | Abbirtenza2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | Gruppu5 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | Sutta = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | Abbirtenza1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | Abbirtenza2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | Abbirtenza1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | Abbirtenza2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | Sutta = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | Abbirtenza1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | Abbirtenza2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | Sutta = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | Supra = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | Abbirtenza1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | Abbirtenza2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | Abbirtenza3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Prupità10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | Abbirtenza1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | Sutta = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} 9dipxyi6b332as8pzt0s86bo6mb545c 770426 770424 2025-07-04T11:00:27Z GianAntonucci 46609 770426 wikitext text/x-wiki <templatestyles src="Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css"/> <noinclude> == Zoccu è == ... == Comu si usa == <code><nowiki>{{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira }}</nowiki></code> == Esempi == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Supra = "Tàvula ginèrica" | Tìtulu = Dati ginèrici | Abbirtenza1 = Fatti | Vuci1 = Fattu Unu | Valuri1 = Valuri Unu | Vuci2 = Fattu Dui | Valuri2 = 123 | Abbirtenza2 = Nfurmazzioni | Vuci3 = Quarchi cosa | Valuri3 = "ABC" | Sutta = "Fini dâ tàvula" }} <div style="clear:both;"></div> === Test cû hlist e plainlist ammiscati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di listi ammiscati | Vuci1 = Quarchi lista urizzuntali | Valuri1 = * Aranciu * Babbàluciu * Cucuzzìdda | Classi1 = hlist | Vuci2 = Quarchi lista virticali | Valuri2 = * Ficudinnia * Pircoca * Mulinciana | Classi2 = plainlist }} <div style="clear:both;"></div> === Nuddu datu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu= | MmàgginiSupra= | Genti= }} <div style="clear:both;"></div> === Na riga chi havi sulu rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1=Pupulazzioni | Valuri1=<ref>Quarchi rifirimentu supra a pupulazzioni</ref> }} <div style="clear:both;"></div> === Override parziali di autoheader === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Capu=Don Calò | GruppuCapu=Sizzioni Guvernu Spiciali | Pusizzioni=38°07′N 13°22′E }} <div style="clear:both;"></div> === Infobox figghiu cû campi mìnimi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | child = yes | Tìtulu = Cascia Nnicata | Abbirtenza1 = Dintra n'àutra | Vuci1 = Discrizzioni | Valuri1 = Sta cascia è nnicata }} <div style="clear:both;"></div> === Granni nùmmaru di abbirtenzi === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Multi-Subheaders | Abbirtenza1 = Prima Sizzioni | Vuci1 = Cosa Una | Valuri1 = Valuri Unu | Abbirtenza2 = Sicunna Sizzioni | Vuci2 = Cosa Dui | Valuri2 = Valuri Dui | Abbirtenza3 = Terza Sizzioni | Abbirtenza4 = Ancora Cchiôssai | Abbirtenza5 = E Ancora | Vuci3 = Ùrtima Riga | Valuri3 = Dimu }} <div style="clear:both;"></div> === Usannu catigurii nta na riga "vacanti" nummirata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Quarchi Datu | Valuri1 = [[Category:Test di Infobox]] }} <div style="clear:both;"></div> === Na prupità Wikidata scunusciuta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | CampuScunusciutu = QuarchiValuri | GruppuCampuScunusciutu = Dati Strani }} <div style="clear:both;"></div> === Na riga chi currispunni a multipli sizzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Pupulazzioni | Valuri1 = 100,000 àbitanti | Prupità1 = P1082 }} <div style="clear:both;"></div> === Tàvula vacanti tranni pi "Supra" o "Sutta" === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Supra = Quarchi Tìtulu | Sutta = Quarchi Pedi }} <div style="clear:both;"></div> === Na riga cû cuntinnutu granni ammiscatu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu Riga Ammiscata | Vuci1 = Dati Cumplessi | Valuri1 = Ccà c'è quarchi testu. <ref>Nu rifirimentu supra stu testu</ref> [[Category:Catigurìa di Test nta na Riga]] * Nu puntu * N'àutru puntu }} <div style="clear:both;"></div> == Novi Esempi Cumpleti == === Città - Palermu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | Supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | Abbirtenza1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} <div style="clear:both;"></div> === Pirsuna - Sciascia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nasciuta | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Mortu | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | Abbirtenza1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | Abbirtenza2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | Sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} <div style="clear:both;"></div> === Ricetta - Pasta câ Norma === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Pasta câ Norma | Suttatìtulu = Piattu tradizziunali catanisi | MmàgginiSupra = Pasta_alla_norma.jpg | DidascalìaMmàgginiSupra = Pasta câ Norma sirvuta | Vuci1 = Orìggini | Valuri1 = [[Catania]], Sicilia | Vuci2 = Tipu di piattu | Valuri2 = Primu piattu | Vuci3 = Timpiratura sirvutu | Valuri3 = Càudu | Abbirtenza1 = Ngridienti principali | Valuri4 = # Pasta (penne o rigatoni) # Milinciani # Pumadoru # Ricotta salata # Àgghiu # Vasanicò # Ogghiu d'aliva | Abbirtenza2 = Nfurmazzioni nutriziunali | Vuci5 = Calorìi pi purzzioni | Valuri5 = ~400-450 kcal | Vuci6 = Tempu di priparazzioni | Valuri6 = 45 minuti | PediPàggina = Ricetta tradizziunali siciliana }} <div style="clear:both;"></div> === Muntaggna - Etna === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Etna | Suttatìtulu = A Muntagna o Mungibeddu | MmàgginiSupra = Mount_Etna.jpg | DidascalìaMmàgginiSupra = L'Etna n'eruzzioni | Supra = Vulcanu attivu | Vuci1 = Autizza | Valuri1 = 3,357 m s.l.m. (variàbbili) | Vuci2 = Pusizzioni | Valuri2 = [[Catania]], Sicilia | Vuci3 = Coordinati | Valuri3 = 37°45′18″N 14°59′43″E | Abbirtenza1 = Gioluggìa | Vuci4 = Tipu | Valuri4 = Stratuvulcanu | Vuci5 = Ùrtima eruzzioni | Valuri5 = 2023 (n'attività) | Vuci6 = Età | Valuri6 = ~500,000 anni | Abbirtenza2 = UNESCO | Vuci7 = Patrimoniu Munniali | Valuri7 = Dû 2013 | Vuci8 = Critèriu | Valuri8 = (viii) - fenòmini naturali | Sutta = Vulcanu cchiù àutu d'Europa }} <div style="clear:both;"></div> === Film - Il Gattopardo === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Il Gattopardo | MmàgginiSupra = Il_gattopardo_poster.jpg | Vuci1 = Riggista | Valuri1 = [[Luchino Visconti]] | Vuci2 = Annu | Valuri2 = 1963 | Vuci3 = Paìsi | Valuri3 = [[File:Flag of Italy.svg|20px]] Italia | Vuci4 = Lìngua | Valuri4 = Talianu | Gruppu5 = Cast principali | Vuci5 = Attura principali | Valuri5 = * [[Burt Lancaster]] - Don Fabrizio * [[Alain Delon]] - Tancredi * [[Claudia Cardinale]] - Angelica | Classi5 = plainlist | Gruppu6 = Pruduzzioni | Vuci6 = Durata | Valuri6 = 187 minuti | Vuci7 = Basatu supra | Valuri7 = Rumanzu di [[Giuseppe Tomasi di Lampedusa]] | Vuci8 = Mùsica | Valuri8 = [[Nino Rota]] | Gruppu9 = Premi | Vuci9 = Palma d'Oru | Valuri9 = Festival di Cannes 1963 | Sutta = Capulavuru dû cìnima talianu | Gruppu6 = Pruduzzioni | Gruppu9 = Premi }} <div style="clear:both;"></div> === Animali - Àcula siciliana === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Àcula siciliana | Suttatìtulu = ''Aquila chrysaetos'' | MmàgginiSupra = Golden_eagle.jpg | DidascalìaMmàgginiSupra = Àcula riali nta volu | Vuci1 = Classi | Valuri1 = Aves | Vuci2 = Òrdini | Valuri2 = Accipitriformes | Vuci3 = Famigghia | Valuri3 = Accipitridae | Abbirtenza1 = Carattirìstichi | Vuci4 = Lunghizza | Valuri4 = 75-88 cm | Vuci5 = Apirtura alari | Valuri5 = 190-230 cm | Vuci6 = Pisu | Valuri6 = 3-6.5 kg | Vuci7 = Durata dâ vita | Valuri7 = 20-30 anni | Abbirtenza2 = Distribuzzioni n Sicilia | Vuci8 = Àbbitat | Valuri8 = Madonìi, Nèbrodi, Etna | Vuci9 = Statu cunsirvazzioni | Valuri9 = Vulniràbbili | Vuci10 = Pupulazzioni stimata | Valuri10 = 15-20 coppî | PediPàggina = Speci prutetta }} <div style="clear:both;"></div> === Festa - Sant'Àjita === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Festa di Sant'Àjita | MmàgginiSupra = SantAgata_Catania.jpg | DidascalìaMmàgginiSupra = A vara di Sant'Àjita | Vuci1 = Tipu | Valuri1 = Festa rilliggìusa | Vuci2 = Data | Valuri2 = 3-5 di frivaru | Vuci3 = Locu | Valuri3 = [[Catania]], Sicilia | Vuci4 = Patrona di | Valuri4 = Catania | Gruppu5 = Cilibbrazzioni | Vuci5 = Evènti principali | Valuri5 = * A prucissioni dû 3 * A prucissioni dû 4 * A prucissioni dû 5 * I cannalora | Classi5 = plainlist | Vuci6 = Partecipanti | Valuri6 = ~500,000 pirsùni | Vuci7 = Tradizzioni dû | Valuri7 = 1126 | Sutta = Una dî festi rilliggiùsi cchiù 'mpurtanti di Sicilia }} <div style="clear:both;"></div> === Castìddu - Castìddu Ursinu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Castìddu Ursinu | MmàgginiSupra = Castello_ursino.jpg | DidascalìaMmàgginiSupra = Vista dû Castìddu Ursinu | Vuci1 = Locu | Valuri1 = [[Catania]], Sicilia | Vuci2 = Custruzzioni | Valuri2 = 1239-1250 | Vuci3 = Cumissiunatu di | Valuri3 = [[Fidiricu II di Svevia]] | Vuci4 = Architettu | Valuri4 = Riccardo da Lentini | Abbirtenza1 = Carattirìstichi | Vuci5 = Stili | Valuri5 = Architittura sveva | Vuci6 = Matiriali | Valuri6 = Petra làvica | Vuci7 = Forma | Valuri7 = Quatratu cû torri | Abbirtenza2 = Usu attuali | Vuci8 = Funzzioni | Valuri8 = Museu Cìvicu | Vuci9 = Cullizzioni | Valuri9 = Arti midevali e muderna | Vuci10 = Visitaturi annuali | Valuri10 = ~150,000 | PediPàggina = Munumentu nazziunali }} <div style="clear:both;"></div> === Lìngua - Sicilianu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Lìngua siciliana | Suttatìtulu = Sicilianu | Vuci1 = Parlatu nta | Valuri1 = [[Sicilia]], [[Calabbria]] miridiunali | Vuci2 = Parlanti | Valuri2 = ~4.7 miliuni | Vuci3 = Famigghia | Valuri3 = Indoeuropea * Romanza ** Italo-occidentali *** Sicilianu | Classi3 = plainlist | Abbirtenza1 = Còdici | Vuci4 = ISO 639-2 | Valuri4 = scn | Vuci5 = ISO 639-3 | Valuri5 = scn | Vuci6 = Glottolog | Valuri6 = sici1248 | Abbirtenza2 = Dialètti | Vuci7 = Varianti principali | Valuri7 = * Sicilianu occidentali * Sicilianu cèntrali * Sicilianu orientali * Sicilianu miridiunali | Classi7 = plainlist | Vuci8 = Statu ufficiali | Valuri8 = Lìngua rilliggiùsa (UNESCO) | Sutta = Patrimòniu linguìsticu di Sicilia }} <div style="clear:both;"></div> === Squadra di Pallùni - Catania === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Calcio Catania | MmàgginiSupra = Catania_logo.png | DidascalìaMmàgginiSupra = Stemma ufficiali | Vuci1 = Nomu cumpletu | Valuri1 = Catania Football Club | Vuci2 = Suprannomu | Valuri2 = Rossazzurri, Elefanti | Vuci3 = Funnatu | Valuri3 = 1946 | Vuci4 = Stadiu | Valuri4 = Angelo Massimino | Vuci5 = Capacità | Valuri5 = 23,266 | Abbirtenza1 = Culùra | Vuci6 = Culùra sòciali | Valuri6 = Russu e cilèsti | Vuci7 = Prisidènti | Valuri7 = Ross Pelligra | Vuci8 = Allinaturi | Valuri8 = Domenico Toscano | Abbirtenza2 = Palmarès | Vuci9 = Campiunati Sèrie B | Valuri9 = 1 (1953-54) | Vuci10 = Coppa Italia Sèrie C | Valuri10 = 2 (1999-00, 2022-23) | Sutta = Forza Catania! }} <div style="clear:both;"></div> === Stòria - Sbarcu n Sicilia === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Tìtulu = Sbarcu n Sicilia | Suttatìtulu = Operazzioni Husky | MmàgginiSupra = Sicily_invasion_1943.jpg | DidascalìaMmàgginiSupra = Truppe allìati sbàrcanu n Sicilia | Supra = Secunna Guerra Munniali | Vuci1 = Data | Valuri1 = 9 lugghiu - 17 agustu 1943 | Vuci2 = Locu | Valuri2 = Sicilia | Vuci3 = Risurtatu | Valuri3 = Vittòria allìata | Abbirtenza1 = Billigirànti | Vuci4 = Allìati | Valuri4 = * [[File:US flag.svg|20px]] Stati Uniti * [[File:UK flag.svg|20px]] Regnu Unitu * [[File:Canada flag.svg|20px]] Canadà | Classi4 = hlist | Vuci5 = Assi | Valuri5 = * [[File:Flag of Italy (1861-1946).svg|20px]] Italia * [[File:Flag of Germany (1935–1945).svg|20px]] Girmània | Classi5 = hlist | Abbirtenza2 = Forzi 'n campu | Vuci6 = Allìati | Valuri6 = ~470,000 òmini | Vuci7 = Assi | Valuri7 = ~260,000 òmini | Abbirtenza3 = Pèrditi | Vuci8 = Allìati | Valuri8 = ~25,000 (muòrti, firùti, dispirsi) | Vuci9 = Assi | Valuri9 = ~165,000 (muòrti, firùti, prigiunèri) | PediPàggina = Primu passu pâ libbirazzioni d'Italia }} <div style="clear:both;"></div> === Test di tutti i pusizzioni dî mmàggini === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test dî Mmàggini | MmàgginiSupra = Etna_eruption.jpg | DidascalìaMmàgginiSupra = Didascalìa dâ mmàggini supra | MmàgginiManuManca = Trinacria.jpg | DidascalìaMmàgginiManuManca = Didascalìa manca | MmàgginiManuDritta = Cassata_siciliana.jpg | DidascalìaMmàgginiManuDritta = Didascalìa dritta | MmàgginiSutta = Teatro_Massimo_Palermo.jpg | DidascalìaMmàgginiSutta = Didascalìa dâ mmàggini sutta }} <div style="clear:both;"></div> === Test dî rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Tipi di Rifirimenti | Vuci1 = Rifirimentu standard | Valuri1 = Quarchi testu<ref>Rifirimentu standard</ref> | Vuci2 = Rifirimentu cû nomu primu usu | Valuri2 = Cchiù testu<ref name="test">Chistu è u rifirimentu test</ref> | Vuci3 = Riusannu rifirimentu cû nomu | Valuri3 = Ancora cchiù testu<ref name="test" /> }} <div style="clear:both;"></div> === Test dû modu Debug === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | debug = yes | Tìtulu = Esèmpiu Debug | Vuci1 = Paràmitru vàlidu | Valuri1 = Quarchi valuri | ParàmitruNunVàlidu = Chistu avissi a cumpariri ntô debug | N'àutruParàmitruMalu = Puru ntô debug }} <div style="clear:both;"></div> === Test dî listi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Esèmpiu di Listi | Vuci1 = Lista nummàrata | Valuri1 = # Prima cosa # Sicunna cosa # Terza cosa | Vuci2 = Lista ammiscata | Valuri2 = # Nummàratu unu #* Suttu-cosa cû puntu #* N'àutra suttu-cosa # Nummàratu dui }} <div style="clear:both;"></div> === Test di raggruppamentu autoheader giugràficu === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Dati Giugràfici | Aria = 250 km² | Pusizzioni = 37°30′N 14°00′E | Pruvincia = Pruvincia di Catania | FusuUrariu = UTC+1 | Vuci10 = Artizza | Valuri10 = 150 m s.l.m. | Prupità10 = P2046 }} <div style="clear:both;"></div> === Riga cumplessa senza etichetta === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Senza Etichetta | Valuri1 = Sta riga nun havi etichetta, occupa dui culonni | Vuci2 = Riga nurmali | Valuri2 = Cû etichetta | Valuri3 = N'àutra riga senza etichetta | Classi3 = plainlist }} <div style="clear:both;"></div> === Test CSS pirsunalizzatu e stili in linea === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | inline_style = background-color: #f0f0f0; border: 2px solid #0066cc; | Tìtulu = Infobox Stilizzata | Vuci1 = Stili pirsunalizzatu | Valuri1 = St'infobox havi CSS pirsunalizzatu }} <div style="clear:both;"></div> === Multipli catigurii e rifirimenti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Rifirimenti | Vuci1 = Multipli ref | Valuri1 = Testu cû ref<ref>Primu ref</ref> e n'àutru<ref>Sicunnu ref</ref> | Vuci2 = Sulu catigurii | Valuri2 = [[Category:Test1]][[Category:Test2]][[Category:Test3]] | Vuci3 = Vacanti ammiscatu | Valuri3 = <ref name="mixedtest">Cuntinnutu rifirimentu</ref>[[Category:Test Vacanti]]<ref name="mixedtest" /> }} <div style="clear:both;"></div> === Test variazzioni di casi ntê catigurii === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Vuci1 = Catigurìa minùscula | Valuri1 = [[category:test minusculu]] | Vuci2 = Casu ammiscatu | Valuri2 = [[CaTeGoRy:Test Casu Ammiscatu]] | Vuci3 = Cû spazî | Valuri3 = [[ Category : Test Cû Spazî ]] }} <div style="clear:both;"></div> === Test paràmitri nummirati àuti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Nùmmari Àuti | Vuci50 = Riga 50 | Valuri50 = Chista è a riga nùmmaru 50 | Vuci100 = Riga 100 | Valuri100 = Chista è a riga nùmmaru 100 | Gruppu100 = Nùmmari Assai Àuti }} <div style="clear:both;"></div> === Test gruppi manuali cû righi nummirati === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Raggruppamentu Manuali | Gruppu1 = Primu Gruppu | Vuci1 = Cosa A | Valuri1 = Valuri A | Vuci2 = Cosa B | Valuri2 = Valuri B | Gruppu3 = Sicunnu Gruppu | Vuci3 = Cosa C | Valuri3 = Valuri C | Gruppu4 = | Vuci4 = Cosa D | Valuri4 = Valuri D (nudda intestazzioni gruppu picchì Gruppu4 è vacanti) }} <div style="clear:both;"></div> === Test paràmitru Wikidata === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Test Ntegrazzioni Wikidata | Vuci1 = Dati manuali | Valuri1 = Chistu è manuali }} <div style="clear:both;"></div> === Infobox figghiu cû tutti i funzioni === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Infobox Patri | Vuci1 = Prima dû figghiu | Valuri1 = Dati patri | Vuci2 = Cascia figghiu | Valuri2 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Tìtulu Figghiu | Abbirtenza1 = Sizzioni Figghiu | Vuci1 = Dati figghiu | Valuri1 = Valuri nnicatu | Sutta = Pedi figghiu }} | Vuci3 = Doppu u figghiu | Valuri3 = Cchiù dati patri }} <div style="clear:both;"></div> === Stringhi vacanti vs paràmitri mancanti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Stringa Vacanti | Vuci1 = Valuri stringa vacanti | Valuri1 = | Vuci2 = Sulu spazî | Valuri2 = | Vuci3 = Havi cuntinnutu | Valuri3 = Cuntinnutu veru }} <div style="clear:both;"></div> === Test override campi predifiniti === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Test Override | Genti = 50,000 àbitanti | VuciGenti = Etichetta Pupulazzioni Pirsunalizzata | Capu = Don Vicenzu | VuciCapu = Capu Esecutivu | GruppuCapu = Dirigenza }} <div style="clear:both;"></div> === Child box with parent no_float === {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Parent No Float | Valuri1 = {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Vuci1 = Child content | Valuri1 = Should inherit positioning }} }} <div style="clear:both;"></div> </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa}} agypoiaec1qpk5i8h4vitigtlb9s1xg Utenti:GianAntonucci/Bozza/Mudeḍḍu:Tèssira/stili.css 2 66277 770422 766974 2025-07-04T10:11:54Z GianAntonucci 46609 770422 sanitized-css text/css .tessira { width: 300px; border: 1px solid #CCC; border-radius: 6px; margin: 0 15px 15px 0; padding: 10px; background: #F9F9F9; box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); color: #333; float: right; font-size: 14px; } .tessira_no_float { float: none; margin-left: auto; margin-right: auto; } .tessira_child_wrapper { display: inline-block; border: 1px solid #CCC; border-radius: 6px; padding: 8px; margin: 0 15px 15px 0; background: #F9F9F9; box-shadow: 0px 4px 8px rgba(0,0,0,0.1); color: #333; font-size: 14px; } /* Titles & subtitles */ .tessira_titulu { font-size: 18px; font-weight: bold; text-align: center; color: #333; padding: 12px; background: #EDEDED; border-radius: 6px 6px 0 0; border-bottom: 2px solid #CCC; } .tessira_suttatitulu { font-size: 16px; font-weight: normal; text-align: center; color: #555; padding: 8px; background: #F1F1F1; border-bottom: 1px solid #CCC; font-style: italic; } /* Supra / Sutta */ .tessira_supra { font-size: 14px; font-weight: bold; text-align: center; color: #333; padding: 8px; background: #F3F3F3; border-bottom: 1px solid #CCC; } .tessira_sutta { font-size: 13px; text-align: center; color: #444; padding: 8px; background: #F8F8F8; border-top: 1px solid #DDD; } /* subheaders */ .tessira_subheader { font-size: 14px; font-weight: bold; text-align: left; color: #444; padding: 6px 8px; background: #EAEAEA; border-top: 1px solid #DDD; border-bottom: 1px solid #DDD; margin: 4px 0; } /* Group header row */ .tessira_gruppu > th { font-size: 14px; font-weight: bold; text-align: center; background: #EFEFEF; color: #333; padding: 8px 0; border-top: 2px solid #CCC; border-bottom: 1px solid #CCC; } /* Label + value cells */ .tessira_vuci { text-align: left; font-weight: bold; color: #444; padding: 6px 8px; width: 40%; background: #F1F1F1; border-right: 1px solid #DDD; font-size: 90%; vertical-align: top; } .tessira_valuri { text-align: left; padding: 6px 8px; width: 60%; font-size: 90%; background: #FFFFFF; vertical-align: top; } /* images + captions */ .tessira_mmaggini { text-align: center; padding: 8px 0 6px; } .tessira_mmaggini img { max-width: 100%; height: auto; border: 1px solid #DDD; } .tessira_didascalia_mmaggini { font-size: 12px; text-align: center; color: #666; padding-bottom: 8px; font-style: italic; } .tessira_mmaggini_manu_manca { text-align: left; padding: 6px; } .tessira_mmaggini_manu_dritta { text-align: right; padding: 6px; } .tessira_didascalia_mmaggini_manu_manca, .tessira_didascalia_mmaggini_manu_dritta { font-size: 12px; color: #666; padding-top: 4px; font-style: italic; } /* footer row */ .tessira_pedi_paggina { font-size: 0.85em; color: #666; text-align: center; padding: 8px; border-top: 1px solid #DDD; background: #F5F5F5; border-radius: 0 0 6px 6px; } /* NavBar row */ .tessira_navbar { text-align: center; padding: 6px; background: #F0F0F0; font-size: 90%; color: #444; border-top: 1px solid #DDD; margin: 4px 0; } html.skin-theme-clientpref-night .tessira { background: #222; border: 1px solid #555; color: #DDD; } html.skin-theme-clientpref-night .tessira_child_wrapper { background: #222; border: 1px solid #555; color: #DDD; } html.skin-theme-clientpref-night .tessira_titulu { background: #333; color: #EEE; border-bottom: 2px solid #555; } html.skin-theme-clientpref-night .tessira_suttatitulu { background: #333; color: #DDD; border-bottom: 1px solid #555; } html.skin-theme-clientpref-night .tessira_supra { background: #333; color: #EEE; border-bottom: 1px solid #555; } html.skin-theme-clientpref-night .tessira_sutta { background: #333; color: #CCC; border-top: 1px solid #555; } html.skin-theme-clientpref-night .tessira_subheader { background: #444; color: #EEE; border-top: 1px solid #666; border-bottom: 1px solid #666; } html.skin-theme-clientpref-night .tessira_gruppu > th { background: #444; color: #EEE; border-top: 2px solid #555; border-bottom: 1px solid #666; } html.skin-theme-clientpref-night .tessira_vuci { background: #444; color: #FFF; border-right: 1px solid #666; } html.skin-theme-clientpref-night .tessira_valuri { background: #333; color: #DDD; } html.skin-theme-clientpref-night .tessira_mmaggini img { border: 1px solid #666; } html.skin-theme-clientpref-night .tessira_didascalia_mmaggini, html.skin-theme-clientpref-night .tessira_didascalia_mmaggini_manu_manca, html.skin-theme-clientpref-night .tessira_didascalia_mmaggini_manu_dritta { color: #AAA; } html.skin-theme-clientpref-night .tessira_pedi_paggina { background: #333; color: #AAA; border-top: 1px solid #555; } html.skin-theme-clientpref-night .tessira_navbar { background: #333; color: #AAA; border-top: 1px solid #555; } @media (prefers-color-scheme: dark) { html.skin-theme-clientpref-os .tessira { background: #222; border: 1px solid #555; color: #DDD; } html.skin-theme-clientpref-os .tessira_child_wrapper { background: #222; border: 1px solid #555; color: #DDD; } html.skin-theme-clientpref-os .tessira_titulu { background: #333; color: #EEE; border-bottom: 2px solid #555; } html.skin-theme-clientpref-os .tessira_suttatitulu { background: #333; color: #DDD; border-bottom: 1px solid #555; } html.skin-theme-clientpref-os .tessira_supra { background: #333; color: #EEE; border-bottom: 1px solid #555; } html.skin-theme-clientpref-os .tessira_sutta { background: #333; color: #CCC; border-top: 1px solid #555; } html.skin-theme-clientpref-os .tessira_subheader { background: #444; color: #EEE; border-top: 1px solid #666; border-bottom: 1px solid #666; } html.skin-theme-clientpref-os .tessira_gruppu > th { background: #444; color: #EEE; border-top: 2px solid #555; border-bottom: 1px solid #666; } html.skin-theme-clientpref-os .tessira_vuci { background: #444; color: #FFF; border-right: 1px solid #666; } html.skin-theme-clientpref-os .tessira_valuri { background: #333; color: #DDD; } html.skin-theme-clientpref-os .tessira_mmaggini img { border: 1px solid #666; } html.skin-theme-clientpref-os .tessira_didascalia_mmaggini, html.skin-theme-clientpref-os .tessira_didascalia_mmaggini_manu_manca, html.skin-theme-clientpref-os .tessira_didascalia_mmaggini_manu_dritta { color: #AAA; } html.skin-theme-clientpref-os .tessira_pedi_paggina { background: #333; color: #AAA; border-top: 1px solid #555; } html.skin-theme-clientpref-os .tessira_navbar { background: #333; color: #AAA; border-top: 1px solid #555; } } k821yj962789fmz7yci2hyclnkv4rg9 Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCità 2 66298 770427 766960 2025-07-04T11:04:27Z GianAntonucci 46609 770427 wikitext text/x-wiki <noinclude> == Zoccu è == Sta tèssira è spicìfica pî cità, paìsi e luchi abitati. Integra automaticamenti dati di Wikidata e permetti pirsunalizzazzioni lucali. == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCità | Nomu = | Wikidata = | Viduta = | Sìnnacu = | Genti = | ... }} </pre> == Paràmitri == === Basi === * '''Nomu''' - Nomu dâ cità (si vacanti, piglia di Wikidata) * '''Wikidata''' - ID Wikidata (es: Q2656 pi Palermu) * '''NomuUfficiali''' - Nomu ufficiali si diffirenti * '''NomuLucali''' - Nomu ntô dialettu lucali === Mmàggini === * '''Viduta''' - Mmàggini principali * '''Didascalìa''' - Didascalìa pâ viduta * '''Stemma''' - Stemma ufficiali * '''Bannera''' - Bannera municipali === Amministrazzioni === * '''Sìnnacu''' - Nomu dû sìnnacu * '''SìnnacuGèniri''' - m/f pi masculu/fimmina * '''SìnnacuPartitu''' - Partitu pulìticu * '''DataElizzioni''' - Data di l'ùrtimi elezzioni === Pupulazzioni === * '''Genti''' - Nùmmaru d'abitanti * '''DataCinsimentu''' - Data dû cinsimentu * '''Dinsità''' - Abitanti pi km² === Giugrafìa === * '''Pusizzioni''' - Coordinati * '''Aria''' - Supirfìci in km² * '''Artizza''' - Metri supra u liveddu dû mari * '''FusuUrariu''' - Fusu urariu === Economia === * '''PIL''' - Produttu internu lordu * '''PILPirsuna''' - PIL pi càpiti * '''Disoccupazzioni''' - Tassu di disoccupazzioni == Esempiu cumpletu == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | Supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | Abbirtenza1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa <!-- Nome e titoli --> | Tìtulu = {{#if: {{{Nomu|}}} | {{{Nomu}}} | {{#if: {{{Wikidata|}}} | {{WikidataLabel|from={{{Wikidata}}}}} | {{PAGENAME}} }} }} | Suttatìtulu = {{#if: {{{NomuUfficiali|}}} | {{{NomuUfficiali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1448|from={{{Wikidata}}}}} }} }} | Supra = {{#if: {{{NomuLucali|}}} | {{{NomuLucali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1705|from={{{Wikidata}}}}} }} }} <!-- Immagini principali --> | MmàgginiSupra = {{#if: {{{Viduta|}}} | {{{Viduta}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P18|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSupra = {{{Didascalìa|}}} <!-- Stemma e bandiera --> | MmàgginiManuManca = {{#if: {{{Stemma|}}} | {{{Stemma}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P94|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiManuManca = {{#if: {{{Stemma|}}} | Stemma }} | MmàgginiManuDritta = {{#if: {{{Bannera|}}} | {{{Bannera}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P41|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiManuDritta = {{#if: {{{Bannera|}}} | Bannera }} <!-- Geografia - sezione automatica --> | Pusizzioni = {{#if: {{{Pusizzioni|}}} | {{{Pusizzioni}}} }} | VuciPusizzioni = Coordinati | GruppuPusizzioni = Geografia | Aria = {{#if: {{{Aria|}}} | {{{Aria}}} }} | VuciAria = Supirfìci | GruppuAria = Geografia | Vuci1 = Artizza | Valuri1 = {{#if: {{{Artizza|}}} | {{{Artizza}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P2044|from={{{Wikidata}}}}} }} }} | Gruppu1 = Geografia | Prupità1 = P2044 | FusuUrariu = {{#if: {{{FusuUrariu|}}} | {{{FusuUrariu}}} }} | VuciFusuUrariu = Fusu urariu | GruppuFusuUrariu = Geografia | Pruvincia = {{#if: {{{Pruvincia|}}} | {{{Pruvincia}}} }} | VuciPruvincia = {{#if: {{{VuciPruvincia|}}} | {{{VuciPruvincia}}} | Pruvincia }} | GruppuPruvincia = Geografia | Vuci2 = Rigioni | Valuri2 = {{#if: {{{Rigioni|}}} | {{{Rigioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P131|qualifier=P31=Q16110|from={{{Wikidata}}}}} | Sicilia }} }} | Gruppu2 = Geografia | Prupità2 = P131 | Vuci3 = Statu | Valuri3 = {{#if: {{{Statu|}}} | {{{Statu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P17|from={{{Wikidata}}}}} | Italia }} }} | Gruppu3 = Geografia | Prupità3 = P17 <!-- Demografia - sezione automatica --> | Genti = {{#if: {{{Genti|}}} | {{{Genti}}} }} | VuciGenti = Pupulazzioni {{#if: {{{DataCinsimentu|}}} | ({{{DataCinsimentu}}}) }} | GruppuGenti = Demographics | Vuci4 = Dinsità | Valuri4 = {{#if: {{{Dinsità|}}} | {{{Dinsità}}} | {{#if: {{{Genti|}}} | {{#if: {{{Aria|}}} | {{#expr: {{{Genti}}} / {{{Aria}}} round 1}} ab./km² }} }} }} | Gruppu4 = Demographics | Vuci5 = Dintilichiu | Valuri5 = {{#if: {{{Dintilichiu|}}} | {{{Dintilichiu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1549|from={{{Wikidata}}}}} }} }} | Gruppu5 = Demographics | Prupità5 = P1549 <!-- Amministrazione - sezione automatica --> | Capu = {{#if: {{{Sìnnacu|}}} | {{{Sìnnacu}}} }} | VuciCapu = Sìnnac{{#if: {{{SìnnacuGèniri|}}} | {{#ifeq: {{{SìnnacuGèniri|}}} | f | a | u }} | u }} | GruppuCapu = Government | Vuci6 = Partitu | Valuri6 = {{#if: {{{SìnnacuPartitu|}}} | {{{SìnnacuPartitu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P6|qualifier=P102|from={{{Wikidata}}}}} }} }} | Gruppu6 = Government | Prupità6 = P102 | Vuci7 = Elittu | Valuri7 = {{{DataElizzioni|}}} | Gruppu7 = Government | Tipu = {{#if: {{{Tipu|}}} | {{{Tipu}}} }} | VuciTipu = Classificazzioni | GruppuTipu = Government <!-- Storia - sezione automatica --> | Vuci8 = Funnata | Valuri8 = {{#if: {{{Funnata|}}} | {{{Funnata}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P571|from={{{Wikidata}}}}} }} }} | Gruppu8 = History | Prupità8 = P571 | Vuci9 = Patronu | Valuri9 = {{#if: {{{Patronu|}}} | {{{Patronu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P417|from={{{Wikidata}}}}} }} }} | Gruppu9 = History | Prupità9 = P417 | Vuci10 = Festa | Valuri10 = {{{Festa|}}} | Gruppu10 = History <!-- Economia - sezione opzionale --> {{#if: {{{PIL|}}}{{{PILPirsuna|}}}{{{Disoccupazzioni|}}} | {{!}} Vuci11 = PIL {{!}} Valuri11 = {{{PIL|}}} {{!}} Gruppu11 = Economia {{!}} Vuci12 = PIL pi càpiti {{!}} Valuri12 = {{{PILPirsuna|}}} {{!}} Gruppu12 = Economia {{!}} Vuci13 = Disoccupazzioni {{!}} Valuri13 = {{{Disoccupazzioni|}}} {{!}} Gruppu13 = Economia }} <!-- Codici --> | ISO = {{#if: {{{ISO|}}} | {{{ISO}}} }} | VuciISO = Còdici ISO | GruppuISO = Còdici | Vuci20 = CAP | Valuri20 = {{#if: {{{CAP|}}} | {{{CAP}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P281|from={{{Wikidata}}}}} }} }} | Gruppu20 = Còdici | Prupità20 = P281 | Vuci21 = Prifissu | Valuri21 = {{#if: {{{Prifissu|}}} | {{{Prifissu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P473|from={{{Wikidata}}}}} }} }} | Gruppu21 = Còdici | Prupità21 = P473 | Vuci22 = Còdici ISTAT | Valuri22 = {{#if: {{{ISTAT|}}} | {{{ISTAT}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P635|from={{{Wikidata}}}}} }} }} | Gruppu22 = Còdici | Prupità22 = P635 | Vuci23 = Còdici catastali | Valuri23 = {{#if: {{{Catastali|}}} | {{{Catastali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P806|from={{{Wikidata}}}}} }} }} | Gruppu23 = Còdici | Prupità23 = P806 <!-- Collegamenti --> | Vuci30 = Situ ufficiali | Valuri30 = {{#if: {{{SituWeb|}}} | [{{{SituWeb}}} {{{SituWeb}}}] | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P856|from={{{Wikidata}}}}} }} }} | Gruppu30 = Lijami | Prupità30 = P856 | Classi30 = plainlist <!-- Footer --> | PediPàggina = {{#if: {{{PediPàggina|}}} | {{{PediPàggina}}} | {{#if: {{{DataAggiurnamentu|}}} | Dati aggiurnati ô {{{DataAggiurnamentu}}} }} }} | NomuMudeḍḍu = {{{NomuMudeḍḍu|}}} | LijamiWikidata = {{#if: {{{Wikidata|}}} | yes }} <!-- Immagine inferiore mappa --> | MmàgginiSutta = {{#if: {{{Mappa|}}} | {{{Mappa}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P242|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSutta = {{#if: {{{DidascalìaMappa|}}} | {{{DidascalìaMappa}}} | {{#if: {{{Mappa|}}} | Pusizzioni }} <!-- Parametri custom --> {{{1|}}} {{{2|}}} {{{3|}}} }} kcrscd1klvvh1johr18kyjmy28gpjrj 770428 770427 2025-07-04T11:09:11Z GianAntonucci 46609 770428 wikitext text/x-wiki <noinclude> == Zoccu è == Sta tèssira è spicìfica pî cità, paìsi e luchi abitati. Integra automaticamenti dati di Wikidata e permetti pirsunalizzazzioni lucali. == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCità | Nomu = | Wikidata = | Viduta = | Sìnnacu = | Genti = | ... }} </pre> == Paràmitri == === Basi === * '''Nomu''' - Nomu dâ cità (si vacanti, piglia di Wikidata) * '''Wikidata''' - ID Wikidata (es: Q2656 pi Palermu) * '''NomuUfficiali''' - Nomu ufficiali si diffirenti * '''NomuLucali''' - Nomu ntô dialettu lucali === Mmàggini === * '''Viduta''' - Mmàggini principali * '''Didascalìa''' - Didascalìa pâ viduta * '''Stemma''' - Stemma ufficiali * '''Bannera''' - Bannera municipali * '''Mappa''' - Mappa di pusizzioni === Amministrazzioni === * '''Sìnnacu''' - Nomu dû sìnnacu * '''SìnnacuGèniri''' - m/f pi masculu/fimmina * '''SìnnacuPartitu''' - Partitu pulìticu * '''DataElizzioni''' - Data di l'ùrtimi elezzioni === Pupulazzioni === * '''Genti''' - Nùmmaru d'abitanti * '''DataCinsimentu''' - Data dû cinsimentu * '''Dinsità''' - Abitanti pi km² === Giugrafìa === * '''Pusizzioni''' - Coordinati * '''Aria''' - Supirfìci in km² * '''Artizza''' - Metri supra u liveddu dû mari * '''FusuUrariu''' - Fusu urariu === Economia === * '''PIL''' - Produttu internu lordu * '''PILPirsuna''' - PIL pi càpiti * '''Disoccupazzioni''' - Tassu di disoccupazzioni == Esempiu cumpletu == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Wikidata = Q2656 | Tìtulu = Palermu | Suttatìtulu = Capoluogo della Sicilia | MmàgginiSupra = Palermo-view-from-north.jpg | DidascalìaMmàgginiSupra = Vista panoramica di Palermu | Supra = Città metropolitana | Capu = Roberto Lagalla | VuciCapu = Sindaco | Genti = 663,401 | VuciGenti = Popolazione (2023) | Aria = 158.88 km² | Pusizzioni = 38°07′N 13°22′E | FusuUrariu = UTC+1 | ISO = IT-PA | Pruvincia = Palermo | Tipu = Città metropolitana | Abbirtenza1 = Storia | Vuci10 = Fondata | Valuri10 = 734 a.C. | Vuci11 = Fondatori | Valuri11 = Fenici | PediPàggina = Dati aggiornati al 2023 | NomuMudeḍḍu = Palermu | LijamiWikidata = yes }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa <!-- Nome e titoli --> | Tìtulu = {{#if: {{{Nomu|}}} | {{{Nomu}}} | {{#if: {{{Wikidata|}}} | {{WikidataLabel|from={{{Wikidata}}}}} | {{PAGENAME}} }} }} | Suttatìtulu = {{#if: {{{NomuUfficiali|}}} | {{{NomuUfficiali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1448|from={{{Wikidata}}}}} }} }} | Supra = {{#if: {{{NomuLucali|}}} | {{{NomuLucali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1705|from={{{Wikidata}}}}} }} }} <!-- Immagini principali --> | MmàgginiSupra = {{#if: {{{Viduta|}}} | {{{Viduta}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P18|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSupra = {{{Didascalìa|}}} <!-- Stemma e bandiera --> | MmàgginiManuManca = {{#if: {{{Stemma|}}} | {{{Stemma}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P94|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiManuManca = {{#if: {{{Stemma|}}}|Stemma|{{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P94|from={{{Wikidata}}}}} | Stemma }} }} }} | MmàgginiManuDritta = {{#if: {{{Bannera|}}} | {{{Bannera}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P41|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiManuDritta = {{#if: {{{Bannera|}}}|Bannera|{{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P41|from={{{Wikidata}}}}} | Bannera }} }} }} <!-- Geografia - sezione automatica con fallback Wikidata completi --> | Pusizzioni = {{#if: {{{Pusizzioni|}}} | {{{Pusizzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P625|from={{{Wikidata}}}}} }} }} | VuciPusizzioni = Coordinati | GruppuPusizzioni = Geography | Aria = {{#if: {{{Aria|}}} | {{{Aria}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P2046|from={{{Wikidata}}}}} }} }} | VuciAria = Supirfìci | GruppuAria = Geography | Vuci1 = Artizza | Valuri1 = {{#if: {{{Artizza|}}} | {{{Artizza}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P2044|from={{{Wikidata}}}}} }} }} | Gruppu1 = Geography | Prupità1 = P2044 | FusuUrariu = {{#if: {{{FusuUrariu|}}} | {{{FusuUrariu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P421|from={{{Wikidata}}}}} }} }} | VuciFusuUrariu = Fusu urariu | GruppuFusuUrariu = Geography | Pruvincia = {{#if: {{{Pruvincia|}}} | {{{Pruvincia}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P131|from={{{Wikidata}}}}} }} }} | VuciPruvincia = {{#if: {{{VuciPruvincia|}}} | {{{VuciPruvincia}}} | Pruvincia }} | GruppuPruvincia = Geography | Vuci2 = Rigioni | Valuri2 = {{#if: {{{Rigioni|}}} | {{{Rigioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P131|qualifier=P31=Q16110|from={{{Wikidata}}}}} }} }} | Gruppu2 = Geography | Prupità2 = P131 | Vuci3 = Statu | Valuri3 = {{#if: {{{Statu|}}} | {{{Statu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P17|from={{{Wikidata}}}}} }} }} | Gruppu3 = Geography | Prupità3 = P17 <!-- Demografia - sezione automatica con fallback Wikidata --> | Genti = {{#if: {{{Genti|}}} | {{{Genti}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1082|from={{{Wikidata}}}}} }} }} | VuciGenti = Pupulazzioni {{#if: {{{DataCinsimentu|}}} | ({{{DataCinsimentu}}}) }} | GruppuGenti = Demographics <!-- Nota: Il calcolo della densità andrebbe fatto nel modulo Lua per gestire meglio i valori mancanti --> | Vuci4 = Dinsità | Valuri4 = {{{Dinsità|}}} | Gruppu4 = Demographics | Vuci5 = Dintilichiu | Valuri5 = {{#if: {{{Dintilichiu|}}} | {{{Dintilichiu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1549|from={{{Wikidata}}}}} }} }} | Gruppu5 = Demographics | Prupità5 = P1549 <!-- Amministrazione - sezione automatica con fallback Wikidata --> | Capu = {{#if: {{{Sìnnacu|}}} | {{{Sìnnacu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P6|from={{{Wikidata}}}}} }} }} | VuciCapu = Sìnnac{{#if: {{{SìnnacuGèniri|}}} | {{#ifeq: {{{SìnnacuGèniri|}}} | f | a | u }} | u }} | GruppuCapu = Government | Vuci6 = Partitu | Valuri6 = {{#if: {{{SìnnacuPartitu|}}} | {{{SìnnacuPartitu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P6|qualifier=P102|from={{{Wikidata}}}}} }} }} | Gruppu6 = Government | Prupità6 = P102 | Vuci7 = Elittu | Valuri7 = {{{DataElizzioni|}}} | Gruppu7 = Government | Tipu = {{#if: {{{Tipu|}}} | {{{Tipu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P31|from={{{Wikidata}}}}} }} }} | VuciTipu = Classificazzioni | GruppuTipu = Government <!-- Storia - sezione automatica --> | Vuci8 = Funnata | Valuri8 = {{#if: {{{Funnata|}}} | {{{Funnata}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P571|from={{{Wikidata}}}}} }} }} | Gruppu8 = History | Prupità8 = P571 | Vuci9 = Patronu | Valuri9 = {{#if: {{{Patronu|}}} | {{{Patronu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P417|from={{{Wikidata}}}}} }} }} | Gruppu9 = History | Prupità9 = P417 | Vuci10 = Festa | Valuri10 = {{{Festa|}}} | Gruppu10 = History <!-- Economia - sezione opzionale --> {{#if: {{{PIL|}}}{{{PILPirsuna|}}}{{{Disoccupazzioni|}}} | {{!}} Vuci11 = PIL {{!}} Valuri11 = {{{PIL|}}} {{!}} Gruppu11 = Economia {{!}} Vuci12 = PIL pi càpiti {{!}} Valuri12 = {{{PILPirsuna|}}} {{!}} Gruppu12 = Economia {{!}} Vuci13 = Disoccupazzioni {{!}} Valuri13 = {{{Disoccupazzioni|}}} {{!}} Gruppu13 = Economia }} <!-- Codici con fallback Wikidata --> | ISO = {{#if: {{{ISO|}}} | {{{ISO}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P300|from={{{Wikidata}}}}} }} }} | VuciISO = Còdici ISO | GruppuISO = Còdici | Vuci20 = CAP | Valuri20 = {{#if: {{{CAP|}}} | {{{CAP}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P281|from={{{Wikidata}}}}} }} }} | Gruppu20 = Còdici | Prupità20 = P281 | Vuci21 = Prifissu | Valuri21 = {{#if: {{{Prifissu|}}} | {{{Prifissu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P473|from={{{Wikidata}}}}} }} }} | Gruppu21 = Còdici | Prupità21 = P473 | Vuci22 = Còdici ISTAT | Valuri22 = {{#if: {{{ISTAT|}}} | {{{ISTAT}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P635|from={{{Wikidata}}}}} }} }} | Gruppu22 = Còdici | Prupità22 = P635 | Vuci23 = Còdici catastali | Valuri23 = {{#if: {{{Catastali|}}} | {{{Catastali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P806|from={{{Wikidata}}}}} }} }} | Gruppu23 = Còdici | Prupità23 = P806 <!-- Collegamenti --> | Vuci30 = Situ ufficiali | Valuri30 = {{#if: {{{SituWeb|}}} | [{{{SituWeb}}} {{{SituWeb}}}] | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P856|from={{{Wikidata}}}}} }} }} | Gruppu30 = Lijami | Prupità30 = P856 | Classi30 = plainlist <!-- Footer --> | PediPàggina = {{#if: {{{PediPàggina|}}} | {{{PediPàggina}}} | {{#if: {{{DataAggiurnamentu|}}} | Dati aggiurnati ô {{{DataAggiurnamentu}}} }} }} | NomuMudeḍḍu = {{{NomuMudeḍḍu|}}} | LijamiWikidata = {{#if: {{{Wikidata|}}} | yes }} <!-- Immagine inferiore mappa --> | MmàgginiSutta = {{#if: {{{Mappa|}}} | {{{Mappa}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P242|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSutta = {{#if: {{{DidascalìaMappa|}}} | {{{DidascalìaMappa}}} | {{#if: {{{Mappa|}}}|Pusizzioni|{{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P242|from={{{Wikidata}}}}} | Pusizzioni }} }} }} }} <!-- Parametri custom --> {{{1|}}} {{{2|}}} {{{3|}}} }} e5vgq7v1ty9c3ngpxc3iqj935g0q1ko Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPulìticu 2 66299 770433 766958 2025-07-04T11:29:27Z GianAntonucci 46609 770433 wikitext text/x-wiki <noinclude> == Zoccu è == Sta tèssira è spicìfica pî pulìtici. Si basa supra a TèssiraCristianu e agghiunci campi spicìfici pâ carrèra pulìtica. == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPulìticu | Nomu = | Wikidata = | Mmàggini = | CaricaPrincipali = | DataInìziu = | DataFini = | Partitu = | ... }} </pre> == Paràmitri == Sta tèssira accetta tutti i paràmitri di TèssiraCristianu, cchiù: === Carichi pulìtichi === * '''CaricaPrincipali''' - Carica cchiù mpurtanti * '''DataInìziu''' - Data d'inìziu dâ carica * '''DataFini''' - Data di fini dâ carica * '''Pricidenti''' - Chi c'era avanti * '''Succissuri''' - Chi vinni doppu * '''NuminatuDi''' - Chi l'havi numinatu (si applicàbbili) * '''ElittuNta''' - Circuscrizioni unni fu elittu === Partiti e coalizioni === * '''Partitu''' - Partitu pulìticu attuali * '''PartituStòricu''' - Partiti pricidenti * '''CoalizioniElittorali''' - Coalizioni * '''GruppuParlamentari''' - Gruppu parlamentari === Carichi sicundari === * '''CaricaSicundaria1''' - Àutra carica * '''DataInìziu1''' - Data inìziu * '''DataFini1''' - Data fini * '''CaricaSicundaria2''' - etc. === Attività parlamentari === * '''LiggiPrisentati''' - Liggi prisentati * '''CummissiùniParlamentari''' - Cummissioni == Esempiu == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | child = yes | Tìtulu = Sergio Mattarella | Suttatìtulu = 12° Presidente della Repubblica Italiana | MmàgginiSupra = Sergio_Mattarella.jpg | DidascalìaMmàgginiSupra = Mattarella ntô 2022 | Supra = In carica dal 3 febbraio 2015 | Vuci1 = Pricidenti | Valuri1 = [[Giorgio Napolitano]] | Gruppu1 = Carica attuali | Abbirtenza1 = Dati pirsunali | Vuci2 = Nascita | Valuri2 = 23 di lugghiu 1941 (82 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Partitu | Valuri3 = Indipinnenti (dû 2015)<br/>DC, PPI, Margherita, PD (avanti) | Gruppu3 = Attività pulìtica | Abbirtenza2 = Carichi pricidenti | Vuci4 = Giùdici Custituzziunali | Valuri4 = 2011–2015 | Vuci5 = Ministru dâ Difisa | Valuri5 = 1999–2001 | PediPàggina = Dati aggiurnati ô 2024 }} </noinclude> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCristianu | Nomu = {{{Nomu|}}} | Wikidata = {{{Wikidata|}}} | NomuCumpletu = {{{NomuCumpletu|}}} | Mmàggini = {{{Mmàggini|}}} | Didascalìa = {{{Didascalìa|}}} | Nascita = {{{Nascita|}}} | LochiNascita = {{{LochiNascita|}}} | Morti = {{{Morti|}}} | LochiMorti = {{{LochiMorti|}}} | Naziunalità = {{{Naziunalità|}}} | CònjugiCivili = {{{CònjugiCivili|}}} | Figghi = {{{Figghi|}}} | Patri = {{{Patri|}}} | Matri = {{{Matri|}}} | StudiUniversitari = {{{StudiUniversitari|}}} | Firma = {{{Firma|}}} | PediPàggina = {{{PediPàggina|}}} | NomuMudeḍḍu = {{{NomuMudeḍḍu|}}} | Sutta = {{{Sutta|}}} <!-- Override del sottotitolo con la carica principale --> | Suttatìtulu = {{#if: {{{CaricaPrincipali|}}} | {{{CaricaPrincipali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P39|from={{{Wikidata}}}|max=1}} }} }} <!-- Override dell'occupazione per includere "Politico" --> | Occupazzioni = {{#if: {{{Occupazzioni|}}} | {{{Occupazzioni}}} | Pulìticu{{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P106|from={{{Wikidata}}}}} | <br/>{{Wikidata|1=P106|from={{{Wikidata}}}}} }} }} }} <!-- Se in carica, mostralo sopra --> | Supra = {{#if: {{{NCarica|}}} | {{{NCarica}}} | {{{Supra|}}} }} <!-- Parametri specifici per politici passati attraverso gli slot numerati --> | 1 = <!-- Carica principale e date --> {{#if: {{{CaricaPrincipali|}}} | {{!}} Abbirtenza20 = Carica principali {{!}} Vuci20 = {{{CaricaPrincipali}}} {{!}} Valuri20 = {{#if: {{{DataInìziu|}}} | {{{DataInìziu}}} }}{{#if: {{{DataFini|}}} | {{#if: {{{DataInìziu|}}} | – }}{{{DataFini}}} | {{#if: {{{DataInìziu|}}} | – n carica }} }} {{!}} Gruppu20 = Carrèra pulìtica }} | 2 = <!-- Predecessore e successore --> {{#if: {{{Pricidenti|}}} | {{!}} Vuci21 = Pricidenti {{!}} Valuri21 = {{{Pricidenti|}}} {{!}} Gruppu21 = Carrèra pulìtica }} {{#if: {{{Succissuri|}}} | {{!}} Vuci22 = Succissuri {{!}} Valuri22 = {{{Succissuri|}}} {{!}} Gruppu22 = Carrèra pulìtica }} | 3 = <!-- Partito e affiliazioni --> {{#if: {{{Partitu|}}} | {{!}} Vuci23 = Partitu {{!}} Valuri23 = {{{Partitu|}}} {{!}} Gruppu23 = Affiliazzioni pulìtichi {{!}} Prupità23 = P102 }} {{#if: {{{PartituStòricu|}}} | {{!}} Vuci24 = Partiti pricidenti {{!}} Valuri24 = {{{PartituStòricu|}}} {{!}} Gruppu24 = Affiliazzioni pulìtichi {{!}} Classi24 = plainlist }} {{#if: {{{CoalizioniElittorali|}}} | {{!}} Vuci25 = Coalizioni {{!}} Valuri25 = {{{CoalizioniElittorali|}}} {{!}} Gruppu25 = Affiliazzioni pulìtichi {{!}} Classi25 = plainlist }} | 4 = <!-- Cariche secondarie --> {{#if: {{{CaricaSicundaria1|}}} | {{!}} Abbirtenza26 = Àutri carichi {{!}} Vuci26 = {{{CaricaSicundaria1}}} {{!}} Valuri26 = {{#if: {{{DataInìziu1|}}} | {{{DataInìziu1}}} }}{{#if: {{{DataFini1|}}} | {{#if: {{{DataInìziu1|}}} | – }}{{{DataFini1}}} }} }} {{#if: {{{CaricaSicundaria2|}}} | {{!}} Vuci27 = {{{CaricaSicundaria2}}} {{!}} Valuri27 = {{#if: {{{DataInìziu2|}}} | {{{DataInìziu2}}} }}{{#if: {{{DataFini2|}}} | {{#if: {{{DataInìziu2|}}} | – }}{{{DataFini2}}} }} {{!}} Gruppu27 = Àutri carichi }} | 5 = <!-- Circoscrizione e attività parlamentare --> {{#if: {{{ElittuNta|}}} | {{!}} Vuci28 = Circuscrizioni {{!}} Valuri28 = {{{ElittuNta|}}} {{!}} Gruppu28 = Attività parlamentari {{!}} Prupità28 = P768 }} {{#if: {{{CummissiùniParlamentari|}}} | {{!}} Vuci29 = Cummissioni {{!}} Valuri29 = {{{CummissiùniParlamentari|}}} {{!}} Gruppu29 = Attività parlamentari {{!}} Classi29 = plainlist }} }} t37aimrkwi8cwmak0nt048wpdzvflfy 770435 770433 2025-07-04T11:46:04Z GianAntonucci 46609 770435 wikitext text/x-wiki <noinclude> == Zoccu è == Sta tèssira è spicìfica pî pulìtici. Si basa supra a [[Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCristianu|TèssiraCristianu]] e agghiunci campi spicìfici pâ carrèra pulìtica. == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPulìticu | Nomu = | Wikidata = | Mmàggini = | CaricaPrincipali = | DataInìziu = | DataFini = | Partitu = ... (tutti i paràmitri di TèssiraCristianu sunnu accittati) }} </pre> </noinclude>{{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCristianu | Nomu = {{{Nomu|}}} | Wikidata = {{{Wikidata|}}} | NomuCumpletu = {{{NomuCumpletu|}}} | NomuNàscita = {{{NomuNàscita|}}} | Pseuònimu = {{{Pseuònimu|}}} | Mmàggini = {{{Mmàggini|}}} | Didascalìa = {{{Didascalìa|}}} | Firma = {{{Firma|}}} | Nascita = {{{Nascita|}}} | LochiNascita = {{{LochiNascita|}}} | Morti = {{{Morti|}}} | LochiMorti = {{{LochiMorti|}}} | CausaMorti = {{{CausaMorti|}}} | LochiSipurtura = {{{LochiSipurtura|}}} | Naziunalità = {{{Naziunalità|}}} | Cittadinanza = {{{Cittadinanza|}}} | Patri = {{{Patri|}}} | Matri = {{{Matri|}}} | CònjugiCivili = {{{CònjugiCivili|}}} | Figghi = {{{Figghi|}}} | Parenti = {{{Parenti|}}} | Occupazzioni = {{{Occupazzioni|}}} | PiriuduAttività = {{{PiriuduAttività|}}} | OpiriNotèvuli = {{{OpiriNotèvuli|}}} | PremiFamusi = {{{PremiFamusi|}}} | StudiUniversitari = {{{StudiUniversitari|}}} | StudiScundari = {{{StudiScundari|}}} | Maistri = {{{Maistri|}}} | SituWeb = {{{SituWeb|}}} | PediPàggina = {{{PediPàggina|}}} | NomuMudeḍḍu = {{{NomuMudeḍḍu|TèssiraPulìticu}}} | Sutta = {{{Sutta|}}} | Suttatìtulu = {{#if: {{{CaricaPrincipali|}}} | {{{CaricaPrincipali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P39|from={{{Wikidata}}}|max=1}} }} }} | 1 = {{#if: {{{CaricaPrincipali|}}}{{{Pricidenti|}}}{{{Succissuri|}}}{{{Wikidata|}}} | {{!}} Abbirtenza50 = Carriera pulìtica }} {{#if: {{{CaricaPrincipali|}}}{{{Wikidata|}}} | {{!}} Vuci50 = {{#if: {{{CaricaPrincipali|}}} | {{{CaricaPrincipali}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P39|from={{{Wikidata}}}|max=1}} }} }} {{!}} Valuri50 = {{#if: {{{DataInìziu|}}} | In carica: {{{DataInìziu}}} }}{{#if: {{{DataFini|}}}| – {{{DataFini}}}|{{#if: {{{DataInìziu|}}}| – ''n cursu''}} }} {{!}} Gruppu50 = Carrèra pulìtica }} {{#if: {{{Pricidenti|}}} | {{!}} Vuci51 = Pricidenti {{!}} Valuri51 = {{{Pricidenti|}}} {{!}} Gruppu51 = Carrèra pulìtica }} {{#if: {{{Succissuri|}}} | {{!}} Vuci52 = Succissuri {{!}} Valuri52 = {{{Succissuri|}}} {{!}} Gruppu52 = Carrèra pulìtica }} {{#if: {{{Partitu|}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P102|from={{{Wikidata}}}}} }} }} }} | {{!}} Vuci53 = Partitu {{!}} Valuri53 = {{#if: {{{Partitu|}}} | {{{Partitu}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P102|from={{{Wikidata}}}}} }} }} {{!}} Gruppu53 = Carrèra pulìtica {{!}} Classi53 = plainlist {{!}} Prupità53 = P102 }} }} gy9dtbtkq0fjizo2p7235sh54zalccu Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaSìmplici/stili.css 2 66310 770400 766905 2025-07-03T21:55:06Z GianAntonucci 46609 770400 sanitized-css text/css .plainlist ol, .plainlist ul { margin: 0; padding: 0; list-style: none; /* No default bullets */ line-height: inherit; /* Inherit line-height from parent */ } /* Keep each list item in the normal flow (vertical listing) */ .plainlist li { margin-bottom: 0; /* No extra bottom margin */ color: #333; /* Match Tessira's color scheme */ font-size: 90%; /* Slightly smaller than default */ } /* Small left indent (like bullet spacing)*/ .plainlist li { padding-left: 1em; text-indent: -1em; } .plainlist { /* Ensure blocks by default */ display: block; } /* Dark mode support for plainlist */ .skin-theme-clientpref-night .plainlist li { color: #DDD; } @media (prefers-color-scheme: dark) { .skin-theme-clientpref-os .plainlist li { color: #DDD; } } 9j5kidwwwqfuq5uzshwgd21xf5wuxgy 770439 770400 2025-07-04T11:54:33Z GianAntonucci 46609 770439 sanitized-css text/css .plainlist ol, .plainlist ul { margin: 0; padding: 0; list-style: none; /* No default bullets */ line-height: inherit; /* Inherit line-height from parent */ } /* Keep each list item in the normal flow (vertical listing) */ .plainlist li { margin-bottom: 0; /* No extra bottom margin */ color: #333; /* Match Tessira's color scheme */ font-size: 90%; /* Slightly smaller than default */ } /* Small left indent (like bullet spacing)*/ .plainlist li { padding-left: 1em; text-indent: -1em; } .plainlist { /* Ensure blocks by default */ display: block; } /* Add support for nested lists */ .plainlist ol ol, .plainlist ol ul, .plainlist ul ol, .plainlist ul ul { margin-left: 1em; } /* Consider reducing indent for infobox context */ .tessira .plainlist li { padding-left: 0.5em; text-indent: -0.5em; } /* Dark mode support for plainlist */ .skin-theme-clientpref-night .plainlist li { color: #DDD; } @media (prefers-color-scheme: dark) { .skin-theme-clientpref-os .plainlist li { color: #DDD; } } 53s9m7hjd165dapsklm2uyhv5i3dhnv Utenti:GianAntonucci/Bozza/Mudeḍḍu:ListaUrizzuntali/stili.css 2 66311 770401 766906 2025-07-03T21:55:45Z GianAntonucci 46609 770401 sanitized-css text/css /* Reset default list styling */ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display each item inline */ .hlist dd, .hlist dt, .hlist li { display: inline; color: #333; /* Match Tèssira's color scheme */ font-size: 90%; } /* Use an interpunct "·" as a separator, except on the last child */ .hlist dd::after, .hlist dt::after, .hlist li::after { content: " · "; font-weight: normal; color: #666; /* Slightly lighter dot */ } .hlist dd:last-child::after, .hlist dt:last-child::after, .hlist li:last-child::after { content: none; /* No dot after the final item */ } /* Parentheses around nested lists */ .hlist dd dl:first-child::before, .hlist dd ol:first-child::before, .hlist dd ul:first-child::before { content: " ("; } .hlist dd dl:last-child::after, .hlist dd ol:last-child::after, .hlist dd ul:last-child::after { content: ")"; } /* Dark mode support for hlist */ html.skin-theme-clientpref-night .hlist dd, html.skin-theme-clientpref-night .hlist dt, html.skin-theme-clientpref-night .hlist li { color: #DDD; } html.skin-theme-clientpref-night .hlist dd::after, html.skin-theme-clientpref-night .hlist dt::after, html.skin-theme-clientpref-night .hlist li::after { color: #999; } @media (prefers-color-scheme: dark) { html.skin-theme-clientpref-os .hlist dd, html.skin-theme-clientpref-os .hlist dt, html.skin-theme-clientpref-os .hlist li { color: #DDD; } html.skin-theme-clientpref-os .hlist dd::after, html.skin-theme-clientpref-os .hlist dt::after, html.skin-theme-clientpref-os .hlist li::after { color: #999; } } 8ko0z9g8y78pil3vmq0jlri1x7y7lvb 770438 770401 2025-07-04T11:54:30Z GianAntonucci 46609 770438 sanitized-css text/css /* Reset default list styling */ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display each item inline */ .hlist dd, .hlist dt, .hlist li { display: inline; color: #333; /* Match Tèssira's color scheme */ font-size: 90%; } /* Use an interpunct "·" as a separator, except on the last child */ .hlist dd::after, .hlist dt::after, .hlist li::after { content: " · "; font-weight: normal; color: #666; /* Slightly lighter dot */ } .hlist dd:last-child::after, .hlist dt:last-child::after, .hlist li:last-child::after { content: none; /* No dot after the final item */ } /* Parentheses around nested lists */ .hlist dd dl:first-child::before, .hlist dd ol:first-child::before, .hlist dd ul:first-child::before { content: " ("; } .hlist dd dl:last-child::after, .hlist dd ol:last-child::after, .hlist dd ul:last-child::after { content: ")"; } /* Add wrapping control */ .hlist { word-wrap: break-word; line-height: 1.4; } /* Ensure proper spacing between wrapped items */ .hlist li { margin-right: 0.25em; } /* Dark mode support for hlist */ html.skin-theme-clientpref-night .hlist dd, html.skin-theme-clientpref-night .hlist dt, html.skin-theme-clientpref-night .hlist li { color: #DDD; } html.skin-theme-clientpref-night .hlist dd::after, html.skin-theme-clientpref-night .hlist dt::after, html.skin-theme-clientpref-night .hlist li::after { color: #999; } @media (prefers-color-scheme: dark) { html.skin-theme-clientpref-os .hlist dd, html.skin-theme-clientpref-os .hlist dt, html.skin-theme-clientpref-os .hlist li { color: #DDD; } html.skin-theme-clientpref-os .hlist dd::after, html.skin-theme-clientpref-os .hlist dt::after, html.skin-theme-clientpref-os .hlist li::after { color: #999; } } bjfs3idavrpfl2t925h3s893if9e868 Utenti:GianAntonucci/Bozza/Tèssira dû Regnu Unitu 2 66467 770430 2025-07-04T11:19:18Z GianAntonucci 46609 Pàggina nova: {{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPajisi | Wikidata = Q145 | Nomu = Regnu Unitu | CapuStatu = Re Carlo III | CapuGuviernu = Rishi Sunak }} 770430 wikitext text/x-wiki {{ Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraPajisi | Wikidata = Q145 | Nomu = Regnu Unitu | CapuStatu = Re Carlo III | CapuGuviernu = Rishi Sunak }} th3i4hqg32vjawresn1z86w1x3nwrwy Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCristianu 2 66468 770432 2025-07-04T11:28:39Z GianAntonucci 46609 Pàggina nova: <noinclude> == Zoccu è == Sta tèssira è a basi pi tutti i pirsunaggi pùbblici. Pò èssiri usata direttamenti o comu basi pi tèssiri cchiù spicìfichi (pulìtici, artisti, scrittùra, ecc.). == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCristianu | Nomu = | Wikidata = | Mmàggini = | Nascita = | Morti = | Naziunalità = | Occupazzioni = | ... }} </pre> == Paràmitri == === Dati basi === * '''Nomu''' - Nomu dû pirsunàggiu * '''Wikida... 770432 wikitext text/x-wiki <noinclude> == Zoccu è == Sta tèssira è a basi pi tutti i pirsunaggi pùbblici. Pò èssiri usata direttamenti o comu basi pi tèssiri cchiù spicìfichi (pulìtici, artisti, scrittùra, ecc.). == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCristianu | Nomu = | Wikidata = | Mmàggini = | Nascita = | Morti = | Naziunalità = | Occupazzioni = | ... }} </pre> == Paràmitri == === Dati basi === * '''Nomu''' - Nomu dû pirsunàggiu * '''Wikidata''' - ID Wikidata * '''NomuCumpletu''' - Nomu cumpletu ufficiali * '''NomuNàscita''' - Nomu â nàscita (si diffirenti) * '''Pseuònimu''' - Pseuònimu o nomu d'arti === Mmàggini === * '''Mmàggini''' - Futugrafia principali * '''Didascalìa''' - Didascalìa pâ futugrafia * '''Firma''' - Mmàggini dâ firma === Dati biugràfici === * '''Nascita''' - Data di nàscita * '''LochiNascita''' - Locu di nàscita * '''Morti''' - Data di morti * '''LochiMorti''' - Locu di morti * '''CausaMorti''' - Causa dâ morti * '''LochiSipurtura''' - Unni è sippillutu * '''Naziunalità''' - Naziunalità * '''Cittadinanza''' - Cittadinanza (si diffirenti) === Famigghia === * '''Patri''' - Nomu dû patri * '''Matri''' - Nomu dâ matri * '''CònjugiCivili''' - Cònjugi/maritu/mugghieri * '''Figghi''' - Figghi * '''Parenti''' - Àutri parenti mpurtanti === Attività === * '''Occupazzioni''' - Occupazzioni principali * '''PiriuduAttività''' - Anni d'attività * '''OpiriNotèvuli''' - Òpiri o risultati principali * '''PremiFamusi''' - Premi e ricunuscimenti === Furmazzjoni === * '''StudiUniversitari''' - Università e laurea * '''StudiScundari''' - Scola sicundaria * '''Maistri''' - Maistri mpurtanti == Esempiu == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nascita | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Morti | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | Abbirtenza1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | Abbirtenza2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | Sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa <!-- Nome e titolo --> | Tìtulu = {{#if: {{{Nomu|}}} | {{{Nomu}}} | {{#if: {{{Wikidata|}}} | {{WikidataLabel|from={{{Wikidata}}}}} | {{PAGENAME}} }} }} | Suttatìtulu = {{#if: {{{Occupazzioni|}}} | {{{Occupazzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P106|from={{{Wikidata}}}}} }} }} <!-- Pseudonimo o nome completo se presente --> {{#if: {{{NomuCumpletu|}}}{{{Pseuònimu|}}} | {{!}} Supra = {{#if: {{{NomuCumpletu|}}} | {{{NomuCumpletu}}} | {{{Pseuònimu}}} }} }} <!-- Immagine principale --> | MmàgginiSupra = {{#if: {{{Mmàggini|}}} | {{{Mmàggini}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P18|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSupra = {{{Didascalìa|}}} <!-- Dati biografici - sezione automatica --> | Vuci1 = Nascita | Valuri1 = {{#if: {{{Nascita|}}} | {{{Nascita}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P569|from={{{Wikidata}}}}} }} }}{{#if: {{{LochiNascita|}}} | <br/>{{{LochiNascita}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P19|from={{{Wikidata}}}}} | <br/>{{Wikidata|1=P19|from={{{Wikidata}}}}} }} }} }} | Gruppu1 = Dati pirsunali | Prupità1 = P569 | Vuci2 = {{#if: {{{Morti|}}} | Morti | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P570|from={{{Wikidata}}}}} | Morti }} }} }} | Valuri2 = {{#if: {{{Morti|}}} | {{{Morti}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P570|from={{{Wikidata}}}}} }} }}{{#if: {{{LochiMorti|}}} | <br/>{{{LochiMorti}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P20|from={{{Wikidata}}}}} | <br/>{{Wikidata|1=P20|from={{{Wikidata}}}}} }} }} }} | Gruppu2 = {{#if: {{{Morti|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P570|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità2 = P570 | Vuci3 = {{#if: {{{CausaMorti|}}} | Causa dâ morti | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P509|from={{{Wikidata}}}}} | Causa dâ morti }} }} }} | Valuri3 = {{#if: {{{CausaMorti|}}} | {{{CausaMorti}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P509|from={{{Wikidata}}}}} }} }} | Gruppu3 = {{#if: {{{CausaMorti|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P509|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità3 = P509 | Vuci4 = {{#if: {{{LochiSipurtura|}}} | Locu di sipurtura | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P119|from={{{Wikidata}}}}} | Locu di sipurtura }} }} }} | Valuri4 = {{#if: {{{LochiSipurtura|}}} | {{{LochiSipurtura}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P119|from={{{Wikidata}}}}} }} }} | Gruppu4 = {{#if: {{{LochiSipurtura|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P119|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità4 = P119 | Vuci5 = Naziunalità | Valuri5 = {{#if: {{{Naziunalità|}}} | {{{Naziunalità}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P27|from={{{Wikidata}}}}} }} }} | Gruppu5 = Dati pirsunali | Prupità5 = P27 | Vuci6 = {{#if: {{{Cittadinanza|}}} | Cittadinanza | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P27|from={{{Wikidata}}}|max=2}} | Cittadinanza }} }} }} | Valuri6 = {{#if: {{{Cittadinanza|}}} | {{{Cittadinanza}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P27|from={{{Wikidata}}}|max=2}} | {{Wikidata|1=P27|from={{{Wikidata}}}}} }} }} }} | Gruppu6 = {{#if: {{{Cittadinanza|}}} | Dati pirsunali }} | Classi6 = {{#if: {{{Cittadinanza|}}} | | plainlist }} <!-- Famiglia - sezione automatica --> | Vuci7 = {{#if: {{{Patri|}}} | Patri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P22|from={{{Wikidata}}}}} | Patri }} }} }} | Valuri7 = {{#if: {{{Patri|}}} | {{{Patri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P22|from={{{Wikidata}}}}} }} }} | Gruppu7 = {{#if: {{{Patri|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P22|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità7 = P22 | Vuci8 = {{#if: {{{Matri|}}} | Matri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P25|from={{{Wikidata}}}}} | Matri }} }} }} | Valuri8 = {{#if: {{{Matri|}}} | {{{Matri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P25|from={{{Wikidata}}}}} }} }} | Gruppu8 = {{#if: {{{Matri|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P25|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità8 = P25 | Vuci9 = {{#if: {{{CònjugiCivili|}}} | Cònjugi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P26|from={{{Wikidata}}}}} | Cònjugi }} }} }} | Valuri9 = {{#if: {{{CònjugiCivili|}}} | {{{CònjugiCivili}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P26|from={{{Wikidata}}}}} }} }} | Gruppu9 = {{#if: {{{CònjugiCivili|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P26|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità9 = P26 | Classi9 = plainlist | Vuci10 = {{#if: {{{Figghi|}}} | Figghi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P40|from={{{Wikidata}}}}} | Figghi }} }} }} | Valuri10 = {{#if: {{{Figghi|}}} | {{{Figghi}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P40|from={{{Wikidata}}}}} }} }} | Gruppu10 = {{#if: {{{Figghi|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P40|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità10 = P40 | Classi10 = plainlist | Vuci11 = {{#if: {{{Parenti|}}} | Parenti notèvuli }} | Valuri11 = {{{Parenti|}}} | Gruppu11 = {{#if: {{{Parenti|}}} | Famigghia }} | Classi11 = plainlist <!-- Attività professionale - sezione automatica --> | Vuci12 = {{#if: {{{Occupazzioni|}}} | Occupazzioni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P106|from={{{Wikidata}}}}} | Occupazzioni }} }} }} | Valuri12 = {{#if: {{{Occupazzioni|}}} | {{{Occupazzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P106|from={{{Wikidata}}}}} }} }} | Gruppu12 = {{#if: {{{Occupazzioni|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P106|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità12 = P106 | Classi12 = plainlist | Vuci13 = {{#if: {{{PiriuduAttività|}}} | Piriudu attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P2031|from={{{Wikidata}}}}} | Piriudu attività }} }} }} | Valuri13 = {{#if: {{{PiriuduAttività|}}} | {{{PiriuduAttività}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P2031|from={{{Wikidata}}}}}–{{Wikidata|1=P2032|from={{{Wikidata}}}}} }} }} | Gruppu13 = {{#if: {{{PiriuduAttività|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P2031|from={{{Wikidata}}}}} | Attività }} }} }} | Vuci14 = {{#if: {{{OpiriNotèvuli|}}} | Òpiri notèvuli | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P800|from={{{Wikidata}}}}} | Òpiri notèvuli }} }} }} | Valuri14 = {{#if: {{{OpiriNotèvuli|}}} | {{{OpiriNotèvuli}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P800|from={{{Wikidata}}}|max=5}} }} }} | Gruppu14 = {{#if: {{{OpiriNotèvuli|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P800|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità14 = P800 | Classi14 = plainlist | Vuci15 = {{#if: {{{PremiFamusi|}}} | Premi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P166|from={{{Wikidata}}}}} | Premi }} }} }} | Valuri15 = {{#if: {{{PremiFamusi|}}} | {{{PremiFamusi}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P166|from={{{Wikidata}}}}} }} }} | Gruppu15 = {{#if: {{{PremiFamusi|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P166|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità15 = P166 | Classi15 = plainlist <!-- Formazione - sezione automatica --> | Vuci16 = {{#if: {{{StudiUniversitari|}}} | Studi universitari | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P69|from={{{Wikidata}}}}} | Studi universitari }} }} }} | Valuri16 = {{#if: {{{StudiUniversitari|}}} | {{{StudiUniversitari}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P69|from={{{Wikidata}}}}} }} }} | Gruppu16 = {{#if: {{{StudiUniversitari|}}} | Furmazzjoni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P69|from={{{Wikidata}}}}} | Furmazzjoni }} }} }} | Prupità16 = P69 | Classi16 = plainlist | Vuci17 = {{#if: {{{StudiScundari|}}} | Studi sicundari }} | Valuri17 = {{{StudiScundari|}}} | Gruppu17 = {{#if: {{{StudiScundari|}}} | Furmazzjoni }} | Vuci18 = {{#if: {{{Maistri|}}} | Maistri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P1066|from={{{Wikidata}}}}} | Maistri }} }} }} | Valuri18 = {{#if: {{{Maistri|}}} | {{{Maistri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1066|from={{{Wikidata}}}}} }} }} | Gruppu18 = {{#if: {{{Maistri|}}} | Furmazzjoni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P1066|from={{{Wikidata}}}}} | Furmazzjoni }} }} }} | Prupità18 = P1066 | Classi18 = plainlist <!-- Firma --> | MmàgginiSutta = {{#if: {{{Firma|}}} | {{{Firma}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P109|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSutta = {{#if: {{{Firma|}}} | Firma | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P109|from={{{Wikidata}}}}} | Firma }} }} }} <!-- Collegamenti --> | Vuci30 = {{#if: {{{SituWeb|}}} | Situ web | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P856|from={{{Wikidata}}}}} | Situ web }} }} }} | Valuri30 = {{#if: {{{SituWeb|}}} | [{{{SituWeb}}} {{{SituWeb}}}] | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P856|from={{{Wikidata}}}}} }} }} | Gruppu30 = {{#if: {{{SituWeb|}}} | Lijami | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P856|from={{{Wikidata}}}}} | Lijami }} }} }} | Prupità30 = P856 <!-- Footer e parametri finali --> | PediPàggina = {{{PediPàggina|}}} | NomuMudeḍḍu = {{{NomuMudeḍḍu|}}} | LijamiWikidata = {{#if: {{{Wikidata|}}} | yes }} | Sutta = {{{Sutta|}}} <!-- Parametri custom per estensibilità --> {{{1|}}} {{{2|}}} {{{3|}}} {{{4|}}} {{{5|}}} }} s0a5i1sdwu35934yo493q1yrh28n9qz 770436 770432 2025-07-04T11:48:24Z GianAntonucci 46609 770436 wikitext text/x-wiki <noinclude> == Zoccu è == Sta tèssira è a basi pi tutti i pirsunaggi pùbblici. Pò èssiri usata direttamenti o comu basi pi tèssiri cchiù spicìfichi (pulìtici, artisti, scrittùra, ecc.). == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCristianu | Nomu = | Wikidata = | Mmàggini = | Nascita = | Morti = | Naziunalità = | Occupazzioni = | ... }} </pre> == Paràmitri == === Dati basi === * '''Nomu''' - Nomu dû pirsunàggiu * '''Wikidata''' - ID Wikidata * '''NomuCumpletu''' - Nomu cumpletu ufficiali * '''NomuNàscita''' - Nomu â nàscita (si diffirenti) * '''Pseuònimu''' - Pseuònimu o nomu d'arti === Mmàggini === * '''Mmàggini''' - Futugrafia principali * '''Didascalìa''' - Didascalìa pâ futugrafia * '''Firma''' - Mmàggini dâ firma === Dati biugràfici === * '''Nascita''' - Data di nàscita * '''LochiNascita''' - Locu di nàscita * '''Morti''' - Data di morti * '''LochiMorti''' - Locu di morti * '''CausaMorti''' - Causa dâ morti * '''LochiSipurtura''' - Unni è sippillutu * '''Naziunalità''' - Naziunalità * '''Cittadinanza''' - Cittadinanza (si diffirenti) === Famigghia === * '''Patri''' - Nomu dû patri * '''Matri''' - Nomu dâ matri * '''CònjugiCivili''' - Cònjugi/maritu/mugghieri * '''Figghi''' - Figghi * '''Parenti''' - Àutri parenti mpurtanti === Attività === * '''Occupazzioni''' - Occupazzioni principali * '''PiriuduAttività''' - Anni d'attività * '''OpiriNotèvuli''' - Òpiri o risultati principali * '''PremiFamusi''' - Premi e ricunuscimenti === Furmazzjoni === * '''StudiUniversitari''' - Università e laurea * '''StudiScundari''' - Scola sicundaria * '''Maistri''' - Maistri mpurtanti == Esempiu == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Wikidata = {{{Wikidata|}}} | Tìtulu = {{#if: {{{Nomu|}}} | {{{Nomu}}} | {{#if: {{{Wikidata|}}} | {{WikidataLabel|from={{{Wikidata}}}}} | {{PAGENAME}} }} }} | Suttatìtulu = {{#if: {{{Occupazzioni|}}} | {{{Occupazzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P106|from={{{Wikidata}}}}} }} }} | no_float = yes | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nascita | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Morti | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | Abbirtenza1 = Attività | Vuci4 = Occupazzioni | Valuri4 = * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | Abbirtenza2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 = * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | Sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa <!-- Nome e titolo --> | Tìtulu = {{#if: {{{Nomu|}}} | {{{Nomu}}} | {{#if: {{{Wikidata|}}} | {{WikidataLabel|from={{{Wikidata}}}}} | {{PAGENAME}} }} }} | Suttatìtulu = {{#if: {{{Occupazzioni|}}} | {{{Occupazzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P106|from={{{Wikidata}}}}} }} }} <!-- Pseudonimo o nome completo se presente --> {{#if: {{{NomuCumpletu|}}}{{{Pseuònimu|}}} | {{!}} Supra = {{#if: {{{NomuCumpletu|}}} | {{{NomuCumpletu}}} | {{{Pseuònimu}}} }} }} <!-- Immagine principale --> | MmàgginiSupra = {{#if: {{{Mmàggini|}}} | {{{Mmàggini}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P18|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSupra = {{{Didascalìa|}}} <!-- Dati biografici - sezione automatica --> | Vuci1 = Nascita | Valuri1 = {{#if: {{{Nascita|}}} | {{{Nascita}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P569|from={{{Wikidata}}}}} }} }}{{#if: {{{LochiNascita|}}} | <br/>{{{LochiNascita}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P19|from={{{Wikidata}}}}} | <br/>{{Wikidata|1=P19|from={{{Wikidata}}}}} }} }} }} | Gruppu1 = Dati pirsunali | Prupità1 = P569 | Vuci2 = {{#if: {{{Morti|}}} | Morti | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P570|from={{{Wikidata}}}}} | Morti }} }} }} | Valuri2 = {{#if: {{{Morti|}}} | {{{Morti}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P570|from={{{Wikidata}}}}} }} }}{{#if: {{{LochiMorti|}}} | <br/>{{{LochiMorti}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P20|from={{{Wikidata}}}}} | <br/>{{Wikidata|1=P20|from={{{Wikidata}}}}} }} }} }} | Gruppu2 = {{#if: {{{Morti|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P570|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità2 = P570 | Vuci3 = {{#if: {{{CausaMorti|}}} | Causa dâ morti | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P509|from={{{Wikidata}}}}} | Causa dâ morti }} }} }} | Valuri3 = {{#if: {{{CausaMorti|}}} | {{{CausaMorti}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P509|from={{{Wikidata}}}}} }} }} | Gruppu3 = {{#if: {{{CausaMorti|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P509|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità3 = P509 | Vuci4 = {{#if: {{{LochiSipurtura|}}} | Locu di sipurtura | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P119|from={{{Wikidata}}}}} | Locu di sipurtura }} }} }} | Valuri4 = {{#if: {{{LochiSipurtura|}}} | {{{LochiSipurtura}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P119|from={{{Wikidata}}}}} }} }} | Gruppu4 = {{#if: {{{LochiSipurtura|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P119|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità4 = P119 | Vuci5 = Naziunalità | Valuri5 = {{#if: {{{Naziunalità|}}} | {{{Naziunalità}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P27|from={{{Wikidata}}}}} }} }} | Gruppu5 = Dati pirsunali | Prupità5 = P27 | Vuci6 = {{#if: {{{Cittadinanza|}}} | Cittadinanza | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P27|from={{{Wikidata}}}|max=2}} | Cittadinanza }} }} }} | Valuri6 = {{#if: {{{Cittadinanza|}}} | {{{Cittadinanza}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P27|from={{{Wikidata}}}|max=2}} | {{Wikidata|1=P27|from={{{Wikidata}}}}} }} }} }} | Gruppu6 = {{#if: {{{Cittadinanza|}}} | Dati pirsunali }} | Classi6 = {{#if: {{{Cittadinanza|}}} | | plainlist }} <!-- Famiglia - sezione automatica --> | Vuci7 = {{#if: {{{Patri|}}} | Patri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P22|from={{{Wikidata}}}}} | Patri }} }} }} | Valuri7 = {{#if: {{{Patri|}}} | {{{Patri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P22|from={{{Wikidata}}}}} }} }} | Gruppu7 = {{#if: {{{Patri|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P22|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità7 = P22 | Vuci8 = {{#if: {{{Matri|}}} | Matri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P25|from={{{Wikidata}}}}} | Matri }} }} }} | Valuri8 = {{#if: {{{Matri|}}} | {{{Matri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P25|from={{{Wikidata}}}}} }} }} | Gruppu8 = {{#if: {{{Matri|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P25|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità8 = P25 | Vuci9 = {{#if: {{{CònjugiCivili|}}} | Cònjugi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P26|from={{{Wikidata}}}}} | Cònjugi }} }} }} | Valuri9 = {{#if: {{{CònjugiCivili|}}} | {{{CònjugiCivili}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P26|from={{{Wikidata}}}}} }} }} | Gruppu9 = {{#if: {{{CònjugiCivili|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P26|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità9 = P26 | Classi9 = plainlist | Vuci10 = {{#if: {{{Figghi|}}} | Figghi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P40|from={{{Wikidata}}}}} | Figghi }} }} }} | Valuri10 = {{#if: {{{Figghi|}}} | {{{Figghi}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P40|from={{{Wikidata}}}}} }} }} | Gruppu10 = {{#if: {{{Figghi|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P40|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità10 = P40 | Classi10 = plainlist | Vuci11 = {{#if: {{{Parenti|}}} | Parenti notèvuli }} | Valuri11 = {{{Parenti|}}} | Gruppu11 = {{#if: {{{Parenti|}}} | Famigghia }} | Classi11 = plainlist <!-- Attività professionale - sezione automatica --> | Vuci12 = {{#if: {{{Occupazzioni|}}} | Occupazzioni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P106|from={{{Wikidata}}}}} | Occupazzioni }} }} }} | Valuri12 = {{#if: {{{Occupazzioni|}}} | {{{Occupazzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P106|from={{{Wikidata}}}}} }} }} | Gruppu12 = {{#if: {{{Occupazzioni|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P106|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità12 = P106 | Classi12 = plainlist | Vuci13 = {{#if: {{{PiriuduAttività|}}} | Piriudu attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P2031|from={{{Wikidata}}}}} | Piriudu attività }} }} }} | Valuri13 = {{#if: {{{PiriuduAttività|}}} | {{{PiriuduAttività}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P2031|from={{{Wikidata}}}}}–{{Wikidata|1=P2032|from={{{Wikidata}}}}} }} }} | Gruppu13 = {{#if: {{{PiriuduAttività|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P2031|from={{{Wikidata}}}}} | Attività }} }} }} | Vuci14 = {{#if: {{{OpiriNotèvuli|}}} | Òpiri notèvuli | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P800|from={{{Wikidata}}}}} | Òpiri notèvuli }} }} }} | Valuri14 = {{#if: {{{OpiriNotèvuli|}}} | {{{OpiriNotèvuli}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P800|from={{{Wikidata}}}|max=5}} }} }} | Gruppu14 = {{#if: {{{OpiriNotèvuli|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P800|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità14 = P800 | Classi14 = plainlist | Vuci15 = {{#if: {{{PremiFamusi|}}} | Premi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P166|from={{{Wikidata}}}}} | Premi }} }} }} | Valuri15 = {{#if: {{{PremiFamusi|}}} | {{{PremiFamusi}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P166|from={{{Wikidata}}}}} }} }} | Gruppu15 = {{#if: {{{PremiFamusi|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P166|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità15 = P166 | Classi15 = plainlist <!-- Formazione - sezione automatica --> | Vuci16 = {{#if: {{{StudiUniversitari|}}} | Studi universitari | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P69|from={{{Wikidata}}}}} | Studi universitari }} }} }} | Valuri16 = {{#if: {{{StudiUniversitari|}}} | {{{StudiUniversitari}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P69|from={{{Wikidata}}}}} }} }} | Gruppu16 = {{#if: {{{StudiUniversitari|}}} | Furmazzjoni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P69|from={{{Wikidata}}}}} | Furmazzjoni }} }} }} | Prupità16 = P69 | Classi16 = plainlist | Vuci17 = {{#if: {{{StudiScundari|}}} | Studi sicundari }} | Valuri17 = {{{StudiScundari|}}} | Gruppu17 = {{#if: {{{StudiScundari|}}} | Furmazzjoni }} | Vuci18 = {{#if: {{{Maistri|}}} | Maistri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P1066|from={{{Wikidata}}}}} | Maistri }} }} }} | Valuri18 = {{#if: {{{Maistri|}}} | {{{Maistri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1066|from={{{Wikidata}}}}} }} }} | Gruppu18 = {{#if: {{{Maistri|}}} | Furmazzjoni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P1066|from={{{Wikidata}}}}} | Furmazzjoni }} }} }} | Prupità18 = P1066 | Classi18 = plainlist <!-- Firma --> | MmàgginiSutta = {{#if: {{{Firma|}}} | {{{Firma}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P109|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSutta = {{#if: {{{Firma|}}} | Firma | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P109|from={{{Wikidata}}}}} | Firma }} }} }} <!-- Collegamenti --> | Vuci30 = {{#if: {{{SituWeb|}}} | Situ web | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P856|from={{{Wikidata}}}}} | Situ web }} }} }} | Valuri30 = {{#if: {{{SituWeb|}}} | [{{{SituWeb}}} {{{SituWeb}}}] | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P856|from={{{Wikidata}}}}} }} }} | Gruppu30 = {{#if: {{{SituWeb|}}} | Lijami | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P856|from={{{Wikidata}}}}} | Lijami }} }} }} | Prupità30 = P856 <!-- Footer e parametri finali --> | PediPàggina = {{{PediPàggina|}}} | NomuMudeḍḍu = {{{NomuMudeḍḍu|}}} | LijamiWikidata = {{#if: {{{Wikidata|}}} | yes }} | Sutta = {{{Sutta|}}} <!-- Parametri custom per estensibilità --> {{{1|}}} {{{2|}}} {{{3|}}} {{{4|}}} {{{5|}}} }} 0zecn93vma93s3uznj70pelcx3oxy6n 770437 770436 2025-07-04T11:50:11Z GianAntonucci 46609 770437 wikitext text/x-wiki <noinclude> == Zoccu è == Sta tèssira è a basi pi tutti i pirsunaggi pùbblici. Pò èssiri usata direttamenti o comu basi pi tèssiri cchiù spicìfichi (pulìtici, artisti, scrittùra, ecc.). == Comu si usa == <pre> {{Utenti:GianAntonucci/Bozza/Mudeḍḍu:TèssiraCristianu | Nomu =  | Wikidata =  | Mmàggini =  | Nascita =  | Morti =  | Naziunalità =  | Occupazzioni =  | ... }} </pre> == Paràmitri == === Dati basi === * '''Nomu''' - Nomu dû pirsunàggiu * '''Wikidata''' - ID Wikidata * '''NomuCumpletu''' - Nomu cumpletu ufficiali * '''NomuNàscita''' - Nomu â nàscita (si diffirenti) * '''Pseuònimu''' - Pseuònimu o nomu d'arti === Mmàggini === * '''Mmàggini''' - Futugrafia principali * '''Didascalìa''' - Didascalìa pâ futugrafia * '''Firma''' - Mmàggini dâ firma === Dati biugràfici === * '''Nascita''' - Data di nàscita * '''LochiNascita''' - Locu di nàscita * '''Morti''' - Data di morti * '''LochiMorti''' - Locu di morti * '''CausaMorti''' - Causa dâ morti * '''LochiSipurtura''' - Unni è sippillutu * '''Naziunalità''' - Naziunalità * '''Cittadinanza''' - Cittadinanza (si diffirenti) === Famigghia === * '''Patri''' - Nomu dû patri * '''Matri''' - Nomu dâ matri * '''CònjugiCivili''' - Cònjugi/maritu/mugghieri * '''Figghi''' - Figghi * '''Parenti''' - Àutri parenti mpurtanti === Attività === * '''Occupazzioni''' - Occupazzioni principali * '''PiriuduAttività''' - Anni d'attività * '''OpiriNotèvuli''' - Òpiri o risultati principali * '''PremiFamusi''' - Premi e ricunuscimenti === Furmazzjoni === * '''StudiUniversitari''' - Università e laurea * '''StudiScundari''' - Scola sicundaria * '''Maistri''' - Maistri mpurtanti == Esempiu == {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | no_float = yes | Tìtulu = Leonardo Sciascia | MmàgginiSupra = Leonardo_Sciascia.jpg | DidascalìaMmàgginiSupra = Leonardo Sciascia nta li anni 1960 | Vuci1 = Nascita | Valuri1 = 8 di jinnaru 1921<br/>[[Racalmuto]], Sicilia | Vuci2 = Morti | Valuri2 = 20 di nuvèmmiru 1989 (68 anni)<br/>[[Palermu]], Sicilia | Vuci3 = Naziunalità | Valuri3 = [[File:Flag of Italy.svg|20px]] Taliana | Abbirtenza1 = Attività | Vuci4 = Occupazzioni | Valuri4 =  * Scritturi * Jurnalista * Pulìticu | Classi4 = plainlist | Vuci5 = Piriudu attività | Valuri5 = 1950–1989 | Vuci6 = Gèniri littrariu | Valuri6 = Rumanzu, saggi, tiatra | Abbirtenza2 = Òpiri principali | Vuci7 = Libbra famusa | Valuri7 =  * ''Il giorno della civetta'' (1961) * ''A ciascuno il suo'' (1966) * ''Todo modo'' (1974) | Classi7 = plainlist | Sutta = Unu dî maiuri scrittùra siciliani dû XX sèculu }} </noinclude> {{#invoke:Bozza/GianAntonucci/Tèssira|stampa | Wikidata = {{{Wikidata|}}} | Tìtulu = {{#if: {{{Nomu|}}} | {{{Nomu}}} | {{#if: {{{Wikidata|}}} | {{WikidataLabel|from={{{Wikidata}}}}} | {{PAGENAME}} }} }} | Suttatìtulu = {{#if: {{{Occupazzioni|}}} | {{{Occupazzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P106|from={{{Wikidata}}}}} }} }} {{#if: {{{NomuCumpletu|}}}{{{Pseuònimu|}}} | {{!}} Supra = {{#if: {{{NomuCumpletu|}}} | {{{NomuCumpletu}}} | {{{Pseuònimu}}} }} }} | MmàgginiSupra = {{#if: {{{Mmàggini|}}} | {{{Mmàggini}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P18|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSupra = {{{Didascalìa|}}} | Vuci1 = Nascita | Valuri1 = {{#if: {{{Nascita|}}} | {{{Nascita}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P569|from={{{Wikidata}}}}} }} }}{{#if: {{{LochiNascita|}}} | <br/>{{{LochiNascita}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P19|from={{{Wikidata}}}}} | <br/>{{Wikidata|1=P19|from={{{Wikidata}}}}} }} }} }} | Gruppu1 = Dati pirsunali | Prupità1 = P569 | Vuci2 = {{#if: {{{Morti|}}} | Morti | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P570|from={{{Wikidata}}}}} | Morti }} }} }} | Valuri2 = {{#if: {{{Morti|}}} | {{{Morti}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P570|from={{{Wikidata}}}}} }} }}{{#if: {{{LochiMorti|}}} | <br/>{{{LochiMorti}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P20|from={{{Wikidata}}}}} | <br/>{{Wikidata|1=P20|from={{{Wikidata}}}}} }} }} }} | Gruppu2 = {{#if: {{{Morti|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P570|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità2 = P570 | Vuci3 = {{#if: {{{CausaMorti|}}} | Causa dâ morti | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P509|from={{{Wikidata}}}}} | Causa dâ morti }} }} }} | Valuri3 = {{#if: {{{CausaMorti|}}} | {{{CausaMorti}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P509|from={{{Wikidata}}}}} }} }} | Gruppu3 = {{#if: {{{CausaMorti|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P509|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità3 = P509 | Vuci4 = {{#if: {{{LochiSipurtura|}}} | Locu di sipurtura | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P119|from={{{Wikidata}}}}} | Locu di sipurtura }} }} }} | Valuri4 = {{#if: {{{LochiSipurtura|}}} | {{{LochiSipurtura}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P119|from={{{Wikidata}}}}} }} }} | Gruppu4 = {{#if: {{{LochiSipurtura|}}} | Dati pirsunali | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P119|from={{{Wikidata}}}}} | Dati pirsunali }} }} }} | Prupità4 = P119 | Vuci5 = Naziunalità | Valuri5 = {{#if: {{{Naziunalità|}}} | {{{Naziunalità}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P27|from={{{Wikidata}}}}} }} }} | Gruppu5 = Dati pirsunali | Prupità5 = P27 | Vuci6 = {{#if: {{{Cittadinanza|}}} | Cittadinanza | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P27|from={{{Wikidata}}}|max=2}} | Cittadinanza }} }} }} | Valuri6 = {{#if: {{{Cittadinanza|}}} | {{{Cittadinanza}}} | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P27|from={{{Wikidata}}}|max=2}} | {{Wikidata|1=P27|from={{{Wikidata}}}}} }} }} }} | Gruppu6 = {{#if: {{{Cittadinanza|}}} | Dati pirsunali }} | Classi6 = {{#if: {{{Cittadinanza|}}} | | plainlist }} | Vuci7 = {{#if: {{{Patri|}}} | Patri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P22|from={{{Wikidata}}}}} | Patri }} }} }} | Valuri7 = {{#if: {{{Patri|}}} | {{{Patri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P22|from={{{Wikidata}}}}} }} }} | Gruppu7 = {{#if: {{{Patri|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P22|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità7 = P22 | Vuci8 = {{#if: {{{Matri|}}} | Matri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P25|from={{{Wikidata}}}}} | Matri }} }} }} | Valuri8 = {{#if: {{{Matri|}}} | {{{Matri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P25|from={{{Wikidata}}}}} }} }} | Gruppu8 = {{#if: {{{Matri|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P25|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità8 = P25 | Vuci9 = {{#if: {{{CònjugiCivili|}}} | Cònjugi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P26|from={{{Wikidata}}}}} | Cònjugi }} }} }} | Valuri9 = {{#if: {{{CònjugiCivili|}}} | {{{CònjugiCivili}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P26|from={{{Wikidata}}}}} }} }} | Gruppu9 = {{#if: {{{CònjugiCivili|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P26|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità9 = P26 | Classi9 = plainlist | Vuci10 = {{#if: {{{Figghi|}}} | Figghi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P40|from={{{Wikidata}}}}} | Figghi }} }} }} | Valuri10 = {{#if: {{{Figghi|}}} | {{{Figghi}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P40|from={{{Wikidata}}}}} }} }} | Gruppu10 = {{#if: {{{Figghi|}}} | Famigghia | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P40|from={{{Wikidata}}}}} | Famigghia }} }} }} | Prupità10 = P40 | Classi10 = plainlist | Vuci11 = {{#if: {{{Parenti|}}} | Parenti notèvuli }} | Valuri11 = {{{Parenti|}}} | Gruppu11 = {{#if: {{{Parenti|}}} | Famigghia }} | Classi11 = plainlist | Vuci12 = {{#if: {{{Occupazzioni|}}} | Occupazzioni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P106|from={{{Wikidata}}}}} | Occupazzioni }} }} }} | Valuri12 = {{#if: {{{Occupazzioni|}}} | {{{Occupazzioni}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P106|from={{{Wikidata}}}}} }} }} | Gruppu12 = {{#if: {{{Occupazzioni|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P106|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità12 = P106 | Classi12 = plainlist | Vuci13 = {{#if: {{{PiriuduAttività|}}} | Piriudu attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P2031|from={{{Wikidata}}}}} | Piriudu attività }} }} }} | Valuri13 = {{#if: {{{PiriuduAttività|}}} | {{{PiriuduAttività}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P2031|from={{{Wikidata}}}}}–{{Wikidata|1=P2032|from={{{Wikidata}}}}} }} }} | Gruppu13 = {{#if: {{{PiriuduAttività|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P2031|from={{{Wikidata}}}}} | Attività }} }} }} | Vuci14 = {{#if: {{{OpiriNotèvuli|}}} | Òpiri notèvuli | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P800|from={{{Wikidata}}}}} | Òpiri notèvuli }} }} }} | Valuri14 = {{#if: {{{OpiriNotèvuli|}}} | {{{OpiriNotèvuli}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P800|from={{{Wikidata}}}|max=5}} }} }} | Gruppu14 = {{#if: {{{OpiriNotèvuli|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P800|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità14 = P800 | Classi14 = plainlist | Vuci15 = {{#if: {{{PremiFamusi|}}} | Premi | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P166|from={{{Wikidata}}}}} | Premi }} }} }} | Valuri15 = {{#if: {{{PremiFamusi|}}} | {{{PremiFamusi}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P166|from={{{Wikidata}}}}} }} }} | Gruppu15 = {{#if: {{{PremiFamusi|}}} | Attività | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P166|from={{{Wikidata}}}}} | Attività }} }} }} | Prupità15 = P166 | Classi15 = plainlist | Vuci16 = {{#if: {{{StudiUniversitari|}}} | Studi universitari | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P69|from={{{Wikidata}}}}} | Studi universitari }} }} }} | Valuri16 = {{#if: {{{StudiUniversitari|}}} | {{{StudiUniversitari}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P69|from={{{Wikidata}}}}} }} }} | Gruppu16 = {{#if: {{{StudiUniversitari|}}} | Furmazzjoni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P69|from={{{Wikidata}}}}} | Furmazzjoni }} }} }} | Prupità16 = P69 | Classi16 = plainlist | Vuci17 = {{#if: {{{StudiScundari|}}} | Studi sicundari }} | Valuri17 = {{{StudiScundari|}}} | Gruppu17 = {{#if: {{{StudiScundari|}}} | Furmazzjoni }} | Vuci18 = {{#if: {{{Maistri|}}} | Maistri | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P1066|from={{{Wikidata}}}}} | Maistri }} }} }} | Valuri18 = {{#if: {{{Maistri|}}} | {{{Maistri}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P1066|from={{{Wikidata}}}}} }} }} | Gruppu18 = {{#if: {{{Maistri|}}} | Furmazzjoni | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P1066|from={{{Wikidata}}}}} | Furmazzjoni }} }} }} | Prupità18 = P1066 | Classi18 = plainlist | MmàgginiSutta = {{#if: {{{Firma|}}} | {{{Firma}}} | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P109|from={{{Wikidata}}}}} }} }} | DidascalìaMmàgginiSutta = {{#if: {{{Firma|}}} | Firma | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P109|from={{{Wikidata}}}}} | Firma }} }} }} | Vuci30 = {{#if: {{{SituWeb|}}} | Situ web | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P856|from={{{Wikidata}}}}} | Situ web }} }} }} | Valuri30 = {{#if: {{{SituWeb|}}} | [{{{SituWeb}}} {{{SituWeb}}}] | {{#if: {{{Wikidata|}}} | {{Wikidata|1=P856|from={{{Wikidata}}}}} }} }} | Gruppu30 = {{#if: {{{SituWeb|}}} | Lijami | {{#if: {{{Wikidata|}}} | {{#if: {{Wikidata|1=P856|from={{{Wikidata}}}}} | Lijami }} }} }} | Prupità30 = P856 | PediPàggina = {{{PediPàggina|}}} | NomuMudeḍḍu = {{{NomuMudeḍḍu|}}} | LijamiWikidata = {{#if: {{{Wikidata|}}} | yes }} | Sutta = {{{Sutta|}}} {{{1|}}} {{{2|}}} {{{3|}}} {{{4|}}} {{{5|}}} }} 55wwtie4iskztmyvalu384t9z3n94c7