66 514
contributi
(Link with short series' names) |
Nessun oggetto della modifica |
||
(39 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 10: | Riga 10: | ||
local QFromP = require('Modulo:DTGenerico').QFromP | local QFromP = require('Modulo:DTGenerico').QFromP | ||
local SeasonsQty = require('Modulo:DTSem').SeasonsQty | local SeasonsQty = require('Modulo:DTSem').SeasonsQty | ||
local LabelOrLink = require('Modulo:DTBase').LabelOrLink | |||
--local PropertiesOnTree = require('Modulo:DTFunzioniComuni').PropertiesOnTree | |||
local SeriesTree = require('Modulo:DTFunzioniComuni').SeriesTree | |||
--- generates a list of backlink using SMW query. | --- generates a list of backlink using SMW query. | ||
-- | -- | ||
Riga 161: | Riga 165: | ||
local FinalString = "" | local FinalString = "" | ||
local Actor = mw.title.getCurrentTitle().text | local Actor = mw.title.getCurrentTitle().text | ||
local QueryResult = mw.smw.getQueryResult('[[Interprete::' .. Actor .. ']]|?' .. Actor .. '|sort=Numero di produzione|order=asc') | local QueryResult = mw.smw.getQueryResult('[[Interprete::' .. Actor .. ']]|?' .. Actor .. '|limit=500|sort=Numero di produzione|order=asc') | ||
if QueryResult == nil then | if QueryResult == nil then | ||
Riga 192: | Riga 196: | ||
for ID, Group in pairs(FinalArray) do | for ID, Group in pairs(FinalArray) do | ||
FinalString = FinalString .. "* [[" .. ID .. "]]: [[" .. table.concat(Group, "]], [[") .. "]]" .. string.char(10) | FinalString = FinalString .. "* '''[[" .. ID .. "]]''': [[" .. table.concat(Group, "]], [[") .. "]]" .. string.char(10) | ||
end | end | ||
return FinalString | return FinalString | ||
end | |||
--- Content of a generic secondary box | |||
-- | |||
-- @frame Info from MW session | |||
-- @return Wikitext to inject in template | |||
function p.SecBoxBuilder(frame) | |||
local TemplateName | |||
local BoxTitle = "" | |||
local BoxContent = "" | |||
local SeriesQ | |||
local Short | |||
local CategoryNames = {} | |||
local UL | |||
local LI | |||
local Quantity | |||
local Categories | |||
local Seasons | |||
local Series | |||
local Preposizione | |||
local Others | |||
local Separator ="<hr />" | |||
local FullOutput = true | |||
local Output = {} | |||
-- Get page name and clean to get the name | |||
TemplateName = string.gsub(frame:getParent():getTitle(), "Template:", "") | |||
if TemplateName == "BoxSecEpisodio" then | |||
if mw.wikibase.getEntity().claims["P162"] ~= nil then | |||
BoxContent = BoxContent .. "<span class='titoletto'>Presentazione</span>" | |||
BoxContent = BoxContent .. "<p>" .. mw.wikibase.getEntity().claims["P162"][1].mainsnak.datavalue.value .. "</p>" | |||
end | |||
Series = SeriesTree(frame) | |||
BoxContent = BoxContent .. "<span class='titoletto'>Serie</span>" | |||
BoxContent = BoxContent .. Series | |||
BoxTitle = "Titolo BoxSecEpisodio" | |||
--BoxContent = "Contenuto BoxSecEpisodio<br />" .. Series | |||
else | |||
--Series | |||
if frame.args[1] ~= nil then | |||
--Function is called from unliked page | |||
Series = mw.wikibase.getEntity(frame.args[1]) | |||
Separator = " | " | |||
FullOutput = false | |||
elseif mw.wikibase.getEntity().claims["P14"][1].mainsnak.datavalue.value.id == "Q13" then | |||
-- Page is instance of Series | |||
Series = mw.wikibase.getEntity() | |||
elseif mw.wikibase.getEntity().claims["P16"] ~= nil then | |||
Series = mw.wikibase.getEntity(QFromP("P16")) | |||
else | |||
-- Fall back to Short Treks | |||
Series = mw.wikibase.getEntity("Q8537") | |||
end | |||
BoxTitle = "Titolo " .. TemplateName | |||
BoxContent = "Contenuto " .. TemplateName | |||
end | |||
--[=[ | |||
Output example | |||
{{BoxSecondario | |||
|Titolo= Serie {{#if: {{#statements:P16}} | {{#statements:P16}} | ''No P16<!--{{#statements:P24}}-->'' }} | |||
|Contenuto={{#invoke:DTSpecific|SecBoxSeries|Q66}} | |||
|Nome=BoxSecEpisodio | |||
}} | |||
--]=] | |||
return frame:expandTemplate{title = 'BoxSecondario', args = {Titolo = BoxTitle, Contenuto = BoxContent, Nome = TemplateName}} | |||
end | end | ||
Riga 202: | Riga 281: | ||
-- @frame Info from MW session | -- @frame Info from MW session | ||
-- @return Wikitext to inject in template | -- @return Wikitext to inject in template | ||
function p. | function p.SecBoxSeries(frame) | ||
local SeriesQ | local SeriesQ | ||
local Series | local Series = "" | ||
local Short | local Short = "" | ||
local CategoryNames = {} | local CategoryNames = {} | ||
local UL | local UL | ||
Riga 213: | Riga 292: | ||
local Seasons | local Seasons | ||
local Series | local Series | ||
local Preposizione | |||
local Others | |||
local Separator ="<hr />" | |||
local FullOutput = true | |||
local Output = {} | |||
--Series | --Series | ||
if mw.wikibase.getEntity().claims["P14"][1].mainsnak.datavalue.value.id == "Q13" then | if frame.args[1] ~= nil then | ||
--Function is called from unliked page | |||
Series = mw.wikibase.getEntity(frame.args[1]) | |||
Separator = " | " | |||
FullOutput = false | |||
elseif mw.wikibase.getEntity().claims["P14"][1].mainsnak.datavalue.value.id == "Q13" then | |||
--Instance of the item is "Series" | |||
Series = mw.wikibase.getEntity() | Series = mw.wikibase.getEntity() | ||
elseif mw.wikibase.getEntity().claims["P16"] ~= nil then | |||
Series = mw.wikibase.getEntity(QFromP("P16")) | |||
else | else | ||
Series = mw.wikibase.getEntity(QFromP("P16" | --Episode | ||
Series = mw.wikibase.getEntity(mw.wikibase.getEntity(QFromP("P14")).claims["P16"][1].mainsnak.datavalue.value.id) | |||
end | end | ||
--Short name of the series | --Short name of the series | ||
--Short = mw.wikibase.getEntity(SeriesQ).claims['P24'][1].mainsnak.datavalue['value'] | --Short = mw.wikibase.getEntity(SeriesQ).claims['P24'][1].mainsnak.datavalue['value'] | ||
Short = Series.claims['P24'][1].mainsnak.datavalue['value'] | Short = Series.claims['P24'][1].mainsnak.datavalue['value'] | ||
CategoryNames = {"SHORT|Serie", "Personaggi | if Short == "Serie Classica" or Short == "Serie Animata" then | ||
Preposizione = "della" | |||
else | |||
Preposizione = "di" | |||
end | |||
CategoryNames = {"SHORT|Serie", "Personaggi PREPOSIZIONE SHORT|Personaggi", "Episodi PREPOSIZIONE SHORT|Episodi", "SHORT - Ordine di produzione|Ordine di produzione", "SHORT - Titoli italiani|Titoli italiani"} | |||
UL = mw.html.create('ul') | UL = mw.html.create('ul') | ||
Riga 231: | Riga 331: | ||
:attr('title', "Categorie") | :attr('title', "Categorie") | ||
for _, Name in | for _, Name in ipairs(CategoryNames) do | ||
local Item | local Item | ||
Name = string.gsub(Name, "PREPOSIZIONE", Preposizione) | |||
Item = "[[:Categoria:" .. string.gsub(Name, "SHORT", Short) .. "]]" | Item = "[[:Categoria:" .. string.gsub(Name, "SHORT", Short) .. "]]" | ||
Riga 240: | Riga 342: | ||
end | end | ||
Categories = tostring(UL) | Categories = tostring(UL) | ||
table.insert(Output, Categories) | |||
Quantity = SeasonsQty(Short) | Quantity = SeasonsQty(Short) | ||
--mw.smw.set("Numero di stagioni = " .. | --mw.smw.set("Numero di stagioni = " .. Short) | ||
if Quantity < 1 then | if Quantity < 1 then | ||
Seasons = "Errore: <1" | Seasons = "Errore: <1" | ||
Riga 255: | Riga 359: | ||
if Item == 0 then | if Item == 0 then | ||
LI:wikitext("[[ | LI:wikitext("[[Episodi " .. Preposizione .. " " .. Short .. "|Tutti]]") | ||
elseif Item == 1 then | elseif Item == 1 then | ||
LI:wikitext("Stagioni: [[Stagione " .. Item .. " | LI:wikitext("Stagioni: [[Stagione " .. Item .. " " .. Preposizione .. " " .. Short .. "|" .. Item .. "]]") | ||
else | else | ||
LI:wikitext("[[Stagione " .. Item .. " | LI:wikitext("[[Stagione " .. Item .. " " .. Preposizione .. " " .. Short .. "|" .. Item .. "]]") | ||
end | end | ||
UL:node(LI) | UL:node(LI) | ||
end | end | ||
Seasons = tostring(UL) | Seasons = tostring(UL) | ||
table.insert(Output, Seasons) | |||
end | end | ||
if FullOutput then | |||
--Other pages | |||
UL = mw.html.create('ul') | |||
if | |||
UL | UL | ||
:attr('class', "compactul") | :attr('class', "compactul") | ||
:attr('title', " | :attr('title', "Altre pagine") | ||
LI = mw.html.create('li') | |||
LI:wikitext("[[Personaggi ricorrenti " .. Preposizione .. " " .. Short .. "]]") | |||
UL:node(LI) | |||
Others = tostring(UL) | |||
table.insert(Output, Others) | |||
end | |||
if FullOutput then | |||
--All Series | |||
local SeriesQuery = mw.smw.getQueryResult('[[Istanza::Serie]]|?Abbreviazione|sort=Ordinale|order=asc') | |||
if SeriesQuery == nil then | |||
Series = "''Nessun risultato''" | |||
end | |||
return Categories .. "<hr />" .. Seasons .. "<hr />" .. Series | if type(SeriesQuery) == "table" then | ||
UL = mw.html.create('ul') | |||
UL | |||
:attr('class', "compactul") | |||
:attr('title', "Tutte le serie") | |||
for _, CurrSeries in ipairs(SeriesQuery.results) do | |||
--In the output, example: | |||
--"fulltext": "Star Trek: Strange New Worlds", | |||
LI = mw.html.create('li') | |||
LI:wikitext("[[" .. (CurrSeries.fulltext or "NullFulltext") .. "|" .. (CurrSeries.printouts.Abbreviazione[1] or "NullAbbreviazione") .. "]]") | |||
UL:node(LI) | |||
end | |||
Series = tostring(UL) | |||
else | |||
Series = "''Il risultato non è una TABLE''" | |||
end | |||
table.insert(Output, Series) | |||
end | |||
--return Categories .. "<hr />" .. Seasons .. "<hr />" .. Others .. "<hr />" .. Series | |||
return table.concat(Output, Separator) | |||
--[==[ | --[==[ | ||
<strong>Categorie</strong> | <strong>Categorie</strong> | ||
Riga 303: | Riga 427: | ||
<hr /> | <hr /> | ||
]==] | ]==] | ||
end | |||
--- Listo of "motto" sentences (P104) for Template:BoxAvvisi | |||
-- | |||
-- @frame Info from MW session | |||
-- @return Wikitext to inject in template | |||
function p.MottoBoxes(frame) | |||
local Subject | |||
local Boxes = {} | |||
--Series | |||
if frame.args[1] ~= nil then | |||
--Function is called from unliked page | |||
Subject = mw.wikibase.getEntity(frame.args[1]) | |||
else | |||
Subject = mw.wikibase.getEntity() | |||
end | |||
for _, Motto in ipairs(Subject.claims["P104"]) do | |||
local Sentence | |||
local Author | |||
local Reference | |||
Sentence = Motto.mainsnak.datavalue.value | |||
Author = LabelOrLink(Motto.qualifiers["P47"][1].datavalue.value.id) | |||
Reference =LabelOrLink(Motto.qualifiers["P58"][1].datavalue.value.id) | |||
table.insert(Boxes, frame:expandTemplate{ title = 'quote', args = {text = Sentence, sign = Author, source = Reference} }) | |||
end | |||
return table.concat(Boxes, string.char(10)) | |||
end | end | ||