Anonimo

Modulo:DTSpecific: differenze tra le versioni

Da Wikitrek.
nessun oggetto della modifica
(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.SecBoxContent(frame)
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 di SHORT|Personaggi", "Episodi di SHORT|Episodi", "SHORT - Ordine di produzione|Ordine di produzione", "SHORT - Titoli italiani|Titoli italiani"}
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 pairs(CategoryNames) do
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 = " .. Quantity)
--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("[[Tabella riassuntiva di " .. Short .. "|Tutti]]")
LI:wikitext("[[Episodi " .. Preposizione .. " " .. Short .. "|Tutti]]")
elseif Item == 1 then
elseif Item == 1 then
LI:wikitext("Stagioni: [[Stagione " .. Item .. " di " .. Short .. "|" .. Item .. "]]")
LI:wikitext("Stagioni: [[Stagione " .. Item .. " "  .. Preposizione .. " " .. Short .. "|" .. Item .. "]]")
else
else
LI:wikitext("[[Stagione " .. Item .. " di " .. Short .. "|" .. 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
--Series
if FullOutput then  
local SeriesQuery = mw.smw.getQueryResult('[[Istanza::Serie]]|?Abbreviazione|sort=Ordinale|order=asc')
--Other pages
UL = mw.html.create('ul')
if SeriesQuery == nil then
        Series = "''Nessun risultato''"
    end
 
    if type(SeriesQuery) == "table" then
    UL = mw.html.create('ul')
UL
UL
:attr('class', "compactul")
:attr('class', "compactul")
:attr('title', "Tutte le serie")
:attr('title', "Altre pagine")
    for _, CurrSeries in pairs(SeriesQuery.results) do
    --In the output, example:
LI =  mw.html.create('li')
    --"fulltext": "Star Trek: Strange New Worlds",
LI:wikitext("[[Personaggi ricorrenti " .. Preposizione .. " " .. Short .. "]]")
    LI =  mw.html.create('li')
UL:node(LI)
        LI:wikitext("[[" .. CurrSeries.fulltext .. "|" .. CurrSeries.printouts.Abbreviazione[1] .. "]]")
       
Others = tostring(UL)
        UL:node(LI)
table.insert(Output, Others)
    end
end
    Series = tostring(UL)
    else
if FullOutput then
    Series = "''Il risultato non è una TABLE''"
--All Series
    end
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