Modul:Rasprava o brisanju
Modul služi kao dopuna predlošcima za brisanje i osporavanje brisanja.
Modul pruža tri izvanjske metode:
- – Popis se automatski ažurira ovisno o podstranici na kojoj se nalazimo; mjesec na trenutačnoj stranici uvijek je u sredini, a sa svake njegove strane nalaze se još tri kronološki poredana mjeseca.
- – Broj mjeseci prije sadašnjeg regulira se varijablom
MIN
- – Broj nakon sadašnjeg regulira se varijablom
MAX
- – Tekst između mjeseci regulira se varijablom
separator
- postojiRasprava – koristi se u pojedinačnom predlošku za brisanje ako je naveden mjesec prijedloga.
- U pozadini na stranici za osporavanja za mjesec predlaganja traži podnaslov koji nosi ime članka predloženog za brisanje. Ako je podnaslov pronađen, umjesto gumba "ospori ovo brisanje" prikazuje se poveznica na raspravu.
- – Ovisno o uspjehu metoda vraća neki od ovih Booleanovih operatora: true ako je podnaslov pronađen, false ako nije (logiku prikazivanja preuzima predložak {{Brisanje}}).
- – Ako nije unesen parametar "datum" (mjesec predlaganja) ili ako stranica za osporavanje u pojedinom mjesecu nije stvorena, metoda vraća prazan string.
- sortirajKategoriju – predložak {{Rasprava o brisanju}} koristi se tom metodom za stvaranje kategorijskog ključa za podstranice rasprava.
- – Stranice u kategorijama sortiraju se po brojčanoj vrijednosti godine i mjeseca rasprave umjesto po tekstu podstranice. Primjerice, podstranica "Prosinac 2021." sortirat će se kao 202112.
local p = {}
local MIN = -3
local MAX = 3
local separator = " · "
function mapNumberToText(mjesecNumber)
local mjesec = "00"
if mjesecNumber == 1 then mjesec = "siječanj"
elseif mjesecNumber == 2 then mjesec = "veljača"
elseif mjesecNumber == 3 then mjesec = "ožujak"
elseif mjesecNumber == 4 then mjesec = "travanj"
elseif mjesecNumber == 5 then mjesec = "svibanj"
elseif mjesecNumber == 6 then mjesec = "lipanj"
elseif mjesecNumber == 7 then mjesec = "srpanj"
elseif mjesecNumber == 8 then mjesec = "kolovoz"
elseif mjesecNumber == 09 then mjesec = "rujan"
elseif mjesecNumber == 10 then mjesec = "listopad"
elseif mjesecNumber == 11 then mjesec = "studeni"
elseif mjesecNumber == 12 then mjesec = "prosinac"
end
return mw.language.getContentLanguage():ucfirst(mjesec)
end
function mapTextToNumber(mjesecText)
local mjesec = "00"
if mjesecText == "siječanj" then mjesec = "01"
elseif mjesecText == "veljača" then mjesec = "02"
elseif mjesecText == "ožujak" then mjesec = "03"
elseif mjesecText == "travanj" then mjesec = "04"
elseif mjesecText == "svibanj" then mjesec = "05"
elseif mjesecText == "lipanj" then mjesec = "06"
elseif mjesecText == "srpanj" then mjesec = "07"
elseif mjesecText == "kolovoz" then mjesec = "08"
elseif mjesecText == "rujan" then mjesec = "09"
elseif mjesecText == "listopad" then mjesec = "10"
elseif mjesecText == "studeni" then mjesec = "11"
elseif mjesecText == "prosinac" then mjesec = "12"
end
return mjesec
end
function obradiMjesec(mjesec, godina, i, frame)
local vrijeme = os.date( "*t", os.time({year=godina, month=mjesec+(i), day="15"}) )
local tekst = mapNumberToText(vrijeme.month) .. " " .. vrijeme.year .. "."
local link = ''
if mw.title.new("Rasprava o brisanju/Rasprave/" .. tekst, 'Wikipedija').exists then
link = "[[Wikipedija:Rasprava o brisanju/Rasprave/" .. tekst .. "|" .. tekst .. "]]"
else
link = mw.getCurrentFrame():preprocess('<span class="plainlinks rasprava-o-brisanju-novo">['
.. '{{fullurl:Wikipedija:Rasprava o brisanju/Rasprave/{{urlencode:' .. tekst..'|WIKI}}'
.. '|action=edit'
.. '&preload=Wikipedija:Rasprava_o_brisanju/Rasprave/bazna'
.. '&summary={{urlencode:Otvaranje rasprave u novom mjesecu}}}}<span style="color:#ba0000;">'.. tekst .. '</span>]</span>')
end
-- zadnji mjesec nema povlaku
if i == MAX then return link
else return link .. separator
end
end
function ispisiZaglavlje(mjesecNominativ, godina, frame)
local mjesec = mapTextToNumber(mjesecNominativ)
ret = ''
for i=MIN,MAX,1 do
ret = ret .. obradiMjesec(mjesec, godina, i)
end
return ret
end
function p.zaglavlje(frame)
local naslov = mw.ustring.lower(mw.title.getCurrentTitle().subpageText)
local mjesecNominativ, godina = naslov:match("([A-ž]*) (%d%d%d%d)%.")
if mjesecNominativ == nil then
return ''
else
return ispisiZaglavlje(mjesecNominativ, godina)
end
end
----- Traženje sekcije gdje je brisanje osporeno -----
function p.postojiRasprava()
local frame = mw.getCurrentFrame():getParent()
local datumBrisanja = frame.args['datum']
if datumBrisanja == nil then
return ''
end
local stranicaKojuTrazimo = ''
if mw.title.getCurrentTitle().nsText == '' then
stranicaKojuTrazimo = mw.title.getCurrentTitle().text
else
stranicaKojuTrazimo = mw.title.getCurrentTitle().nsText .. ":" .. mw.title.getCurrentTitle().text
end
mw.log("stranica", stranicaKojuTrazimo)
local sadrzaj = mw.title.new('Rasprava o brisanju/Rasprave/'.. datumBrisanja, 'Wikipedija' )
if sadrzaj.exists then
-- mw.log(mw.text.decode(sadrzaj:getContent(), true))
stranicaKojuTrazimo = stranicaKojuTrazimo:gsub("([()-])", "%%%1") -- escaping parens, hyphens for regex below
if mw.text.decode(sadrzaj:getContent(), true):match("==% *%[%["..stranicaKojuTrazimo) == nil then
return false
else return true
end
end
return ''
end
function p.sortirajKategoriju()
local naslov = mw.ustring.lower(mw.title.getCurrentTitle().subpageText)
local mjesecNominativ, godina = naslov:match("([A-ž]*) (%d%d%d%d)%.")
local mjesec = mapTextToNumber(mjesecNominativ) or "00"
if mjesecNominativ == nil then
return ''
else
return godina .. mjesec
end
end
return p