Moduli:Request counter
| Ky modul është i mbrojtur nga redaktimi duke qenë një modul me ndikim të lartë në shumë faqe. |
Ky modul është krijuar për të numëruar kërkesat aktive të përfshira në një faqe të caktuar. Ai skanon përmbajtjen e faqes për të gjetur transkludime të nën-faqeve (p.sh., {{Faqja/Kërkesa}}) dhe kthen numrin total të tyre.
Moduli është optimizuar për saktësi dhe kërkon specifikimin e titullit të faqes për të funksionuar saktë edhe kur përfshihet në faqe të tjera (transkludim).
Përdorimi
Moduli zakonisht përdoret nëpërmjet stampës së dedikuar: {{Request counter}} (ose shkurt {{RC}}).
Përmes stampës (Rekomandohet)
Për të siguruar që numërimi të jetë gjithmonë i saktë, duhet të jepni titullin e plotë të faqes ku ndodhen kërkesat.
Sintaksa bazë:
{{RC|<Titulli i Faqes>}}
Mënyra e shpejtë (Me zëvendësim): Për të mos e shkruar titullin me dorë, mund të përdorni kodin e mëposhtëm kur jeni duke redaktuar faqen e kërkesave. Kjo do të vendosë automatikisht titullin e saktë në momentin që ruani faqen:
{{RC|{{subst:FULLPAGENAME}}}}
Thirrja e drejtpërdrejtë (Invoke)
Moduli mund të thirret dhe në mënyrë të drejtpërdrejtë duke përdorur:
{{#invoke:Request counter|fetch|<Emri i Faqes Target>}}
Parametrat dhe rezultatet
Moduli pranon një parametër pozicional të detyrueshëm.
- Parametri 1: Titulli i plotë i faqes ku përfshihen nën-faqet e kërkesave (p.sh.,
Wikipedia:Forumi i Grisjes/Kërkesë për grisje).
Mesazhet e kthimit
Moduli kthen një rezultat tekstual të formatuar në shqip:
- Nëse mungon parametri: Gabim: Mungon titulli i faqes burimore.
- Nëse numri = 0: Aktualisht nuk gjendet asnjë kërkesë e hapur.
- Nëse numri = 1: Aktualisht gjendet 1 kërkesë e hapur.
- Nëse numri > 1: Aktualisht gjenden X kërkesa të hapura.
Shembull
Supozojmë se po numërojmë kërkesat në faqen Wikipedia:Forumi i Grisjes/Kërkesë për grisje.
Duke përdorur stampën {{RC}}:
{{RC|Wikipedia:Forumi i Grisjes/Kërkesë për grisje}}
Rezultati do të shfaqet si tekst i thjeshtë, i cili mund të stilizohet me CSS sipas dëshirës (p.sh., brenda një <div class="counter">).
local p = {}
-- Helper to escape special characters for Lua patterns
local function escape_pattern(s)
return string.gsub(s, '([%(%)%.%%%+%-%*%?%[%]%^%$])', '%%%1')
end
function p.fetch(frame)
-- 1. Retrieve Arguments
-- We look at the parent frame (Template args) first, then direct invoke args
local args = frame.args
local target_page = args[1] or (frame:getParent() and frame:getParent().args[1])
-- 2. Validate Input (Strict Mode)
-- If no page is provided, we do NOT auto-detect. We return an error or empty string.
-- This prevents the "works here, breaks there" confusion.
if not target_page or mw.text.trim(target_page) == '' then
return '<span class="error">Gabim: Mungon titulli i faqes burimore.</span>'
end
target_page = mw.text.trim(target_page)
-- 3. Check Cache
-- (Optional for this scale, but good practice)
if p.cache and p.cache[target_page] then return p.cache[target_page] end
-- 4. The Counting Logic
local title = mw.title.new(target_page)
local count = 0
if title and title.exists then
local content = title:getContent() or ''
-- Logic: We are looking for transclusions of subpages of the target.
-- Pattern: {{TargetPage/Subpage}}
-- We use the full page name to be precise.
local prefix_pattern = escape_pattern(target_page .. '/')
-- Regex Breakdown:
-- ^%s* Start of line (ignoring indentation)
-- %{%{%s* Opening braces {{
-- prefix... The specific page path
-- [^|}]* The request name (stop before | parameters or closing })
for line in string.gmatch(content, "[^\r\n]+") do
-- We check if the line STARTS with the transclusion to avoid false positives in comments
if string.match(line, '^%s*%{%{%s*' .. prefix_pattern .. '[^|}]*') then
count = count + 1
end
end
end
-- 5. Output Formatting
local result
if count == 0 then
result = 'Aktualisht nuk gjendet asnjë kërkesë e hapur.'
elseif count == 1 then
result = 'Aktualisht gjendet 1 kërkesë e hapur.'
else
result = 'Aktualisht gjenden ' .. count .. ' kërkesa të hapura.'
end
return result
end
return p