Modul:Rasprava o brisanju
Izgled
Modul služi kao dopuna predlošcima za brisanje i osporavanje brisanja.
Modul pruža nekoliko izvanjskih metoda:
- – 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
- pretraziArhivu(naslov, datum) - u pozadini na stranici za osporavanja za pruženi mjesec i godinu predlaganja (parametar datum) traži podnaslov koji nosi ime pruženog članka (parametar naslov).
- – Ovisno o uspjehu metoda vraća neki od ovih Booleanovih operatora: true ako je podnaslov pronađen, false ako nije
- – Ako nije unesen parametar "datum" (mjesec predlaganja) ili ako stranica za osporavanje u pojedinom mjesecu nije stvorena, metoda vraća prazan string.
- postojiRasprava – koristi se u pojedinačnom predlošku za brisanje ako je naveden mjesec prijedloga. Poziva metodu pretraziArhivu s nazivom stranice na kojoj je pozvan predložak za brisanje i unesenog datuma. Ako je rezultat pretrage pozitivan, predložak za brisanje umjesto gumba "ospori ovo brisanje" prikazuje poveznicu na raspravu.
- pretraziSveArhive(naslov) - poziva pretraziArhivu u svim kombinacijama mjeseca i godina, i popisuje sve arhive u kojima je prisutna rasprava o članku imena naslov. Ovu metodu koristi predložak {{Razgovor zaglavlje/1}} za prikaz poveznica na rasprave o brisanjima na SZR svih članaka koji su ikada bili predloženi, neovisno o zaključku rasprave.
- - ako rasprava u nekoj kombinaciji mjeseca i godine nije otvorena (pretpostavljeno idući mjesec u trenutnoj godini) pretraga staje i vraća se dotad izgrađeni popis.
- 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 "Travanj 2023." sortirat će se kao 202304.
local p = {}
local MIN = -3
local MAX = 3
local MIN_GOD = -2
local MAX_GOD = 2
local separator = " · "
local now = os.date("*t")
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 ispisiMjesec(mjesec, godina, i, godinaOnly, frame)
local vrijeme = os.date( "*t", os.time({year=godina, month=mjesec, day="15"}) )
local datum = mapNumberToText(vrijeme.month) .. " " .. vrijeme.year .. "."
local tekst = datum
-- Calculate the difference in months
local year_diff = now.year - vrijeme.year
local month_diff = now.month - vrijeme.month
local total_month_diff = year_diff * 12 + month_diff
-- Check if the difference is more than a month
local plaintext = math.abs(total_month_diff) > 1
if godinaOnly == true then tekst = vrijeme.year .. "." end
local link = ''
if mw.title.new("Rasprava o brisanju/Rasprave/" .. datum, 'Wikipedija').exists then
link = "[[Wikipedija:Rasprava o brisanju/Rasprave/" .. datum .. "|" .. tekst .. "]]"
else
if plaintext == false and (vrijeme.year > 2021 or (vrijeme.year == 2021 and vrijeme.month == 12)) then
-- zapriječi otvaranje novih rasprava za više od mjesec dana unaprijed ili prije uvođenja WP:ROB (pros. 2021)
link = mw.getCurrentFrame():preprocess('<span class="plainlinks rasprava-o-brisanju-novo">['
.. '{{fullurl:Wikipedija:Rasprava o brisanju/Rasprave/{{urlencode:' .. datum..'|WIKI}}'
.. '|action=edit'
.. '&preload=Wikipedija:Rasprava_o_brisanju/Rasprave/bazna'
.. '&summary={{urlencode:Otvaranje rasprave u novom mjesecu}}}}<span style="color:#ba0000;">'.. tekst .. '</span>]</span>')
else link = tekst
end
end
-- zadnji mjesec nema povlaku
if i == MAX and godinaOnly == false then return link
elseif i ==MAX_GOD and godinaOnly == true then return link
else return link .. separator
end
end
function ispisiZaglavlje(mjesecNominativ, godina, frame)
local mjesec = mapTextToNumber(mjesecNominativ)
ret = ''
for i=MIN_GOD,MAX_GOD,1 do
ret = ret .. ispisiMjesec(mjesec, godina+i, i, true)
end
ret = ret .. '<br>'
for i=MIN,MAX,1 do
ret = ret .. ispisiMjesec(mjesec+i, godina, i, false)
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)
return p.pretraziArhivu(stranicaKojuTrazimo, datumBrisanja)
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
function p.pretraziArhivu(naslov, datum)
local sadrzaj = mw.title.new('Rasprava o brisanju/Rasprave/'.. datum, 'Wikipedija' )
if sadrzaj.exists then
-- mw.log(mw.text.decode(sadrzaj:getContent(), true))
naslov = naslov:gsub("([()-])", "%%%1") -- escaping parens, hyphens for regex below
if mw.text.decode(sadrzaj:getContent(), true):match("==% *%[%[%:?"..naslov) == nil then
return false
else return true
end
else return '' -- stranica za traženi datum ne postoji
end
end
function p.pretraziSveArhive(frame)
local ret = ''
local naslov = frame.args[1]:gsub("^%s*(.-)%s*$", "%1") --remove staring and ending spaces
if p.pretraziArhivu(naslov, 'Prosinac 2021.') == true then
ret = ret .. '[[Wikipedija:Rasprava o brisanju/Rasprave/' .. 'Prosinac 2021.' .. '#' .. naslov .. '|' .. 'Prosinac 2021.' ..']]\n'
end
for i=2022,2050,1 do
for j=1, 12, 1 do
datum = mapNumberToText(j) .. ' ' .. i .. '.'
local arhiva = p.pretraziArhivu(naslov, datum)
if arhiva == true then
ret = ret .. '[[Wikipedija:Rasprava o brisanju/Rasprave/' .. datum .. '#' .. naslov .. '|' .. datum ..']]\n'
elseif arhiva == '' then
mw.log('stop', datum)
return ret -- rasprava za datum nije otvorena, stani s pretragom
end
end
end
return ret
end
return p