Moduł:Stopka portal: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
M (Linux Libertine ma glif Tuxa... nie mam lepszego pomysłu na inicjał portalu; @ rezerwuję na portal o Internecie)
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)
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()
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)
:tag('span')
:addClass('n-portal-initial')
:addClass('link-kolor')
div = div:tag('span')
:cssText('color: ' .. info.color)
:node('[[Portal:' .. name .. '|' .. info.letter .. ']]')
:done()
--
: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)
cont = cont:tag('span')
:addClass('n-portal-nav-text')
:node('[[Portal:' .. name .. '|' .. name .. ']]')
:done()
:done()
end
return tostring(cont)
end


return p
return p

Wersja z 17: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