Modul:Infookvir tracking: razlika između inačica
m ispr. |
za Special:Diff/6780452: u poziv predloška U ČLANKU staviti |ne pratiti parametre=@param1@param2@ pa se *za taj članak* neće dodati kategorija; u predlošcima se ništa ne mijenja |
||
Redak 4: | Redak 4: | ||
local function nema(args, extArgs, maincats) |
local function nema(args, extArgs, maincats) |
||
local extSkip = extArgs['ne pratiti parametre'] or '' |
|||
for k, v in pairs(args) do |
for k, v in pairs(args) do |
||
if k ~= "okvir" and k ~= "smjer" then |
if k ~= "okvir" and k ~= "smjer" then |
||
Redak 9: | Redak 10: | ||
local sinonimiSize = 0 |
local sinonimiSize = 0 |
||
local countNema = 0 |
local countNema = 0 |
||
local skip |
|||
for tk, tv in pairs(sinonimi) do |
for tk, tv in pairs(sinonimi) do |
||
if mw.ustring.match(extSkip, "@"..tv.."@") then |
|||
skip = true |
|||
end |
|||
sinonimiSize = sinonimiSize + 1 |
sinonimiSize = sinonimiSize + 1 |
||
if (isblank(extArgs[tv])) then |
if (isblank(extArgs[tv])) then |
||
Redak 15: | Redak 20: | ||
end |
end |
||
end |
end |
||
if sinonimiSize == countNema then |
if sinonimiSize == countNema and not skip then |
||
maincats = maincats .. '[[Kategorija:Stranice koje koriste ' .. |
maincats = maincats .. '[[Kategorija:Stranice koje koriste ' .. |
||
args['okvir']:lower() .. ' bez parametra ' .. |
args['okvir']:lower() .. ' bez parametra ' .. |
||
Redak 26: | Redak 31: | ||
local function ima(args, extArgs, maincats) |
local function ima(args, extArgs, maincats) |
||
local extSkip = extArgs['ne pratiti parametre'] or '' |
|||
for k, v in pairs(args) do |
for k, v in pairs(args) do |
||
if k ~= "okvir" and k ~= "smjer" then |
if k ~= "okvir" and k ~= "smjer" then |
||
local sinonimi = mw.text.split(v, "@", true) |
local sinonimi = mw.text.split(v, "@", true) |
||
local skip |
|||
for tk, tv in pairs(sinonimi) do |
for tk, tv in pairs(sinonimi) do |
||
if mw.ustring.match(extSkip, "@"..tv.."@") then |
|||
skip = true |
|||
end |
|||
⚫ | |||
end |
|||
⚫ | |||
if not skip then |
|||
for tk, tv in pairs(sinonimi) do |
|||
if (not isblank(extArgs[tv])) then |
|||
maincats = |
|||
⚫ | |||
⚫ | |||
sinonimi[1] .. ']]' |
|||
break |
|||
end |
|||
end |
end |
||
end |
end |
||
Redak 74: | Redak 89: | ||
cats = cats .. maincats |
cats = cats .. maincats |
||
end |
end |
||
mw.log(maincats) |
|||
return cats |
return cats |
||
end |
end |
Posljednja izmjena od 22. studenoga 2023. u 02:47
Modul služi za praćenje potpunosti predložaka (obično infookvira).
Način korištenja (umjesto param1, param2 i param3 navedite parametre koje želite pratiti odvojene znakom | ):
{{#invoke:Infookvir tracking|tracking|okvir={{subst:#titleparts:{{subst:PAGENAME}}|1}}|param1|param2|param3}}
Parametar |smjer=
(prihvaća vrijednosti nema, ima ili oba) može se koristiti za kategorizaciju parametara kojih ima, nema ili oba. Zadana vrijednost je "nema".
Ako parametar ima sinonime (primjerice ako predložak prihvaća |koordinate=
ili |coord=
), u modulu je potrebno navesti koordinate@coord
. Modul će provjeriti postoji li bilo koja navedena vrijednost, a kategorija će nositi ime po prvoj vrijednosti.
Ako se želi izbjeći kategorizacija pojedinačnog članka u kojem je infookvir koji prati određene parametre, u poziv infookvira u članku dodaje se |ne pratiti parametre=@param1@param5@
. Taj parametar ne pripada infookviru, ali će modul učitati njegovu vrijednost. Svako ime parametra treba biti okruženo znakovima @.
Primjer[uredi kôd]
Infookvir otok ima sljedeći kod:
{{#invoke:Infookvir tracking|tracking|okvir=Infookvir otok|koordinate|država|površina}}
U člancima u kojima se koristi infookvir otok a parametar "država" nije naveden, modul će automatski dodati Kategorija:Stranice koje koriste infookvir otok bez parametra država. Slične će kategorije biti dodane za sve praćene parametre koji nisu navedeni ili popunjeni.
Na dokumentacijskoj podstranici uputno je dodati automatski popis kategorija:
== Kategorije za praćenje == {{Posebno:Prefiks_indeks/Kategorija:Stranice koje koriste {{subst:lc:{{subst:#titleparts:{{subst:PAGENAME}}|1}}}}}}
Ako se u članku o otoku Atlantidi želi izbjeći kategorizacija u Kategorija:Stranice koje koriste infookvir otok bez parametra država, u članak se u pozivu predloška {{Infookvir otok}} dodaje |ne pratiti parametre=@država@
.
local p = {}
local function isblank(val) return (val == nil) or val:match('^[%s]*$') end
local function nema(args, extArgs, maincats)
local extSkip = extArgs['ne pratiti parametre'] or ''
for k, v in pairs(args) do
if k ~= "okvir" and k ~= "smjer" then
local sinonimi = mw.text.split(v, "@", true)
local sinonimiSize = 0
local countNema = 0
local skip
for tk, tv in pairs(sinonimi) do
if mw.ustring.match(extSkip, "@"..tv.."@") then
skip = true
end
sinonimiSize = sinonimiSize + 1
if (isblank(extArgs[tv])) then
countNema = countNema + 1
end
end
if sinonimiSize == countNema and not skip then
maincats = maincats .. '[[Kategorija:Stranice koje koriste ' ..
args['okvir']:lower() .. ' bez parametra ' ..
sinonimi[1] .. ']]'
end
end
end
return maincats
end
local function ima(args, extArgs, maincats)
local extSkip = extArgs['ne pratiti parametre'] or ''
for k, v in pairs(args) do
if k ~= "okvir" and k ~= "smjer" then
local sinonimi = mw.text.split(v, "@", true)
local skip
for tk, tv in pairs(sinonimi) do
if mw.ustring.match(extSkip, "@"..tv.."@") then
skip = true
end
end
if not skip then
for tk, tv in pairs(sinonimi) do
if (not isblank(extArgs[tv])) then
maincats =
maincats .. '[[Kategorija:Stranice koje koriste ' ..
args['okvir']:lower() .. ' s parametrom ' ..
sinonimi[1] .. ']]'
break
end
end
end
end
end
return maincats
end
function p.tracking(frame)
local cats = ''
local maincats = ''
local extArgs = frame:getParent().args
local args = frame.args
local warnmsg = {}
-- smjer: ima, nema ili oba
if args["smjer"] == "nema" or isblank(args["smjer"]) then
maincats = nema(args, extArgs, maincats)
else
if args["smjer"] == "ima" then
maincats = ima(args, extArgs, maincats)
else
if args["smjer"] == "oba" then
maincats = ima(args, extArgs, maincats)
maincats = nema(args, extArgs, maincats)
end
end
end
if #warnmsg > 0 then
cats = require('Module:If preview')._warning({
table.concat(warnmsg, '<br>') .. '<br>(' .. args['okvir']:lower() ..
').'
}) .. cats
end
if maincats ~= '' and mw.title.getCurrentTitle().namespace == 0 then
cats = cats .. maincats
end
mw.log(maincats)
return cats
end
return p