Moduł:Stopka portal: Różnice pomiędzy wersjami
Z Nonsensopedii, polskiej encyklopedii humoru
Ostrzyciel (dyskusja • edycje) M (Linux Libertine ma glif Tuxa... nie mam lepszego pomysłu na inicjał portalu; @ rezerwuję na portal o Internecie) |
Ostrzyciel (dyskusja • edycje) M (+nawigacja międzywymiarowa) |
||
Linia 13: | Linia 13: | ||
}, |
}, |
||
['Informatyka'] = { |
['Informatyka'] = { |
||
letter = '', |
letter = '', -- Tux ;) |
||
color = '#235bc1', |
color = '#235bc1', |
||
text = { |
text = { |
||
Linia 27: | Linia 27: | ||
}, |
}, |
||
} |
} |
||
-- Appends a portal initial to an HTML builder object |
|||
local function makeInitial(builder, name, info) |
|||
⚫ | |||
⚫ | |||
:addClass('link-kolor') |
|||
⚫ | |||
⚫ | |||
⚫ | |||
end |
|||
function p.getText() |
function p.getText() |
||
Linia 43: | Linia 53: | ||
div = mw.html.create('div') |
div = mw.html.create('div') |
||
:addClass('n-portal-link') |
:addClass('n-portal-link') |
||
div = makeInitial(div, name, info) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
div = div:tag('span') |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
:addClass('n-portal-link-text') |
:addClass('n-portal-link-text') |
||
:node(info.text[math.random(#info.text)]) |
:node(info.text[math.random(#info.text)]) |
||
Linia 63: | Linia 68: | ||
end |
end |
||
function p.getNavigation() |
|||
local cont = mw.html.create('div') |
|||
:addClass('n-portal-nav-container') |
|||
for name, info in pairs(portals) do |
|||
cont = cont:tag('div') |
|||
:addClass('n-portal-nav-item') |
|||
cont = makeInitial(cont, name, info) |
|||
⚫ | |||
:addClass('n-portal-nav-text') |
|||
:node('[[Portal:' .. name .. '|' .. name .. ']]') |
|||
:done() |
|||
:done() |
|||
end |
|||
return tostring(cont) |
|||
end |
|||
return p |
return p |
Wersja z 16:00, 23 gru 2021
Generuje linki do portali w szablonie {{Stopka}}
. Zobacz też: Moduł:Stopka.
local tools = require('Moduł:Narzędzia')
local p = {}
-- Portale dodawaj alfabetycznie.
-- Edytuj śmiało, teksty zachęcające do kliknięcia w link są losowane z podanej tu puli
local portals = {
['Historia'] = {
letter = 'H',
color = '#820000',
text = {
"Zobacz więcej artykułów w '''[[Portal:Historia|portalu o historii]]'''."
}
},
['Informatyka'] = {
letter = '', -- Tux ;)
color = '#235bc1',
text = {
"Zobacz więcej artykułów w '''[[Portal:Informatyka|portalu o informatyce]]'''."
}
},
['Polityka'] = {
letter = 'P',
color = '#090082',
text = {
"Zobacz więcej artykułów w '''[[Portal:Polityka|portalu o polityce]]'''."
}
},
}
-- Appends a portal initial to an HTML builder object
local function makeInitial(builder, name, info)
return builder:tag('span')
:addClass('n-portal-initial')
:addClass('link-kolor')
:cssText('color: ' .. info.color)
:node('[[Portal:' .. name .. '|' .. info.letter .. ']]')
:done()
end
function p.getText()
local text = ''
local title = mw.title.getCurrentTitle()
local res = mw.smw.getQueryResult{
'[[Zawiera artykuł::' .. title.fullText .. ']]',
'[[Portal:+]]'
}
for _, r in ipairs(res.results) do
local name = mw.ustring.gsub(r.fulltext, 'Portal:', '')
local info = portals[name]
if info then
div = mw.html.create('div')
:addClass('n-portal-link')
div = makeInitial(div, name, info)
div = div:tag('span')
:addClass('n-portal-link-text')
:node(info.text[math.random(#info.text)])
:done()
text = text .. tostring(div)
end
end
return text
end
function p.getNavigation()
local cont = mw.html.create('div')
:addClass('n-portal-nav-container')
for name, info in pairs(portals) do
cont = cont:tag('div')
:addClass('n-portal-nav-item')
cont = makeInitial(cont, name, info)
cont = cont:tag('span')
:addClass('n-portal-nav-text')
:node('[[Portal:' .. name .. '|' .. name .. ']]')
:done()
:done()
end
return tostring(cont)
end
return p