Modul:Rasprava o brisanju

Dokumentacija modula[vidi] [uredi] [povijest] [osvježi]

Modul služi kao dopuna predlošcima za brisanje i osporavanje brisanja.

Modul pruža tri izvanjske metode:

  • zaglavlje – stvara popis mjeseci u zaglavlju pojedinačne rasprave o brisanju; vidi npr. ovdje.
– 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