Modul:UK navboks
Hopp til navigering
Hopp til søk
Dokumentasjon for denne modulen kan opprettes på Modul:UK navboks/dok
local p = {}
p.lang = mw.getContentLanguage()
p.thisyear = tonumber(p.lang:formatDate( 'o', date, true))
p.thisweek = tonumber(p.lang:formatDate( 'W', date, true))
p.thismonth = tonumber(p.lang:formatDate( 'n', date, true))
function p.entry(year, week, topic)
local pagename = string.format("Wikipedia:Konkurranser/Ukens konkurranse %04d-%02d", year, week)
if year == p.thisyear and week == p.thisweek then
-- sjekk om siden eksisterer
local page = mw.title.new(pagename)
if not page.exists then
local s = "'''" .. week .. "''' " .. topic
s = s .. string.format(" ''<small>[{{fullurl:Wikipedia:Konkurranser/Ukens konkurranse %04d-%02d|action=edit&preload=Mal:Ukens_konkurranse_preload}} (opprett)]</small>", year, week)
return s
end
end
if topic == "" then
return "'''" .. week .. "''' (ikke bestemt)"
end
return "'''" .. week .. "''' [[" .. pagename .. "|" .. topic .. "]]"
end
function p.lastweek(frame)
local year = tonumber(frame.args[1])
local week = tonumber(p.lang:formatDate('W', year ..'-12-31', true))
if week == 1 then
-- vi hopper litt tilbake i tid :)
week = tonumber(p.lang:formatDate('W', year ..'-12-24', true))
end
return week
end
function p.innhold(frame)
local year = tonumber(frame.args[1])
local week = 1
local entries = {}
local endweek = p.lastweek(frame)
if year == p.thisyear then
endweek = p.thisweek
end
local modname = 'Module:Ukens konkurranse-liste ' .. year
local topics = require(modname)
for week = 1, endweek, 1
do
if not (topics[week] == nil) then
table.insert(entries, p.entry(year, week, topics[week]))
end
end
return "\n*" .. frame:preprocess(table.concat(entries, "\n*"))
end
function p.nesteuke(frame)
local week = tonumber(p.lang:formatDate('W', '+1 week', true))
local year = tonumber(p.lang:formatDate('o', '+1 week', true))
-- Sjekk om konkurransen er lagt inn i [[Module:Ukens konkurranse-liste YYYY]]
local modname = 'Module:Ukens konkurranse-liste ' .. year
local topics = require(modname)
local topic = topics[week]
if topic == '' then
return 'Mangler forslag <small>[[' .. modname .. '|(føy til forslag)]]</small>'
end
-- Sjekk om konkurransesiden eksisterer
local pagename = string.format("Wikipedia:Konkurranser/Ukens konkurranse %04d-%02d", year, week)
local page = mw.title.new(pagename)
if not page.exists then
return frame:preprocess(string.format("%s ''<small>[{{fullurl:Wikipedia:Konkurranser/Ukens konkurranse %04d-%02d|action=edit&preload=Mal:Ukens_konkurranse_preload}} (opprett)]</small>''", topic, year, week))
end
-- Konkurransen eksisterer
return string.format("[[%s|%s]]", pagename, topic)
end
-- Skriver ut lenke til månedens konkurranse for en gitt måned
function p.entry_mk(year, month, topic)
local key = string.format('%04d-%02d', year, month)
local pagename = string.format("Wikipedia:Konkurranser/Månedens konkurranse %s", key)
local monthName = p.lang:formatDate( 'F', key .. '-01' )
if year == p.thisyear and month == p.thismonth then
-- sjekk om siden eksisterer
local page = mw.title.new(pagename)
if not page.exists then
local s = monthName .. ": " .. topic
s = s .. string.format(" ''<small>[{{fullurl:Wikipedia:Konkurranser/Månedens konkurranse %s|action=edit&preload=Mal:Ukens_konkurranse_preload}} (opprett)]</small>", key)
return s
end
end
if topic == "" then
return monthName .. ": (ikke bestemt)"
end
return monthName .. ": [[" .. pagename .. "|" .. topic .. "]]"
end
-- Skriver ut lenker til alle månedens konkurranser for et gitt år
-- Til bruk i navboks.
function p.innhold_mk(frame)
local year = tonumber(frame.args[1])
local key, month
local entries = {}
local topics = mw.loadJsonData('Modul:Månedens konkurranse')
for month = 1, 12, 1
do
key = string.format('%04d-%02d', year, month)
if not (topics[key] == nil) then
table.insert(entries, p.entry_mk(year, month, topics[key]))
end
end
return "\n*" .. frame:preprocess(table.concat(entries, "\n*"))
end
function p.nestemaaned(frame)
local year = tonumber(p.lang:formatDate('o', '+1 month', true))
local month = tonumber(p.lang:formatDate('n', '+1 month', true))
local key = string.format('%04d-%02d', year, month)
-- Sjekk om konkurransen er lagt inn i [[Modul:Månedens konkurranse]]
local topics = mw.loadJsonData('Modul:Månedens konkurranse')
local topic = topics[key]
if topic == '' then
return 'Mangler forslag <small>[[Module:Månedens konkurranse|(føy til forslag)]]</small>'
end
-- Sjekk om konkurransesiden eksisterer
local pagename = string.format("Wikipedia:Konkurranser/Månedens konkurranse %s", key)
local page = mw.title.new(pagename)
if not page.exists then
return frame:preprocess(string.format("%s ''<small>[{{fullurl:Wikipedia:Konkurranser/Månedens konkurranse %s|action=edit&preload=Mal:Ukens_konkurranse_preload}} (opprett)]</small>''", topic, key))
end
-- Konkurransen eksisterer
return string.format("[[%s|%s]]", pagename, topic)
end
function p.current(frame)
local lang = mw.getContentLanguage()
local month = tonumber(lang:formatDate('n', now, true))
local year = tonumber(lang:formatDate('Y', now, true))
local key = string.format('%04d-%02d', year, month)
local topics = mw.loadJsonData( 'Modul:Månedens konkurranse')
local topic = topics[key]
return topic
end
function p.contest_name(frame)
local year
local month
if frame.args[1] == nil then
return p.current(frame)
end
if frame.args[2] == nil then
local spl = mw.text.split(frame.args[1], '-', true)
year = tonumber(spl[1])
month = tonumber(spl[2])
else
year = tonumber(frame.args[1])
month = tonumber(frame.args[2])
end
local key = string.format('%04d-%02d', year, month)
local topics = mw.loadJsonData('Modul:Månedens konkurranse')
local topic = topics[key]
return topic
end
return p