Modul:Infookvir tracking: razlika između inačica

Izvor: Wikipedija
Izbrisani sadržaj Dodani sadržaj
mNema sažetka uređivanja
mNema sažetka uređivanja
Redak 5: Redak 5:
local function nema(args, extArgs, maincats)
local function nema(args, extArgs, maincats)
for k, v in pairs(args) do
for k, v in pairs(args) do
if k ~= "okvir" then
if k ~= "okvir" and k~= "smjer" then
local sinonimi = mw.text.split(v, "@", true)
local sinonimi = mw.text.split(v, "@", true)
for tk, tv in pairs(sinonimi) do
for tk, tv in pairs(sinonimi) do
Redak 21: Redak 21:
local function ima(args, extArgs, maincats)
local function ima(args, extArgs, maincats)
for k, v in pairs(args) do
for k, v in pairs(args) do
if k ~= "okvir" then
if k ~= "okvir" and k ~= "smjer" then
local sinonimi = mw.text.split(v, "@", true)
local sinonimi = mw.text.split(v, "@", true)
for tk, tv in pairs(sinonimi) do
for tk, tv in pairs(sinonimi) do

Inačica od 14. kolovoza 2022. u 21:03

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

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

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)
    for k, v in pairs(args) do
        if k ~= "okvir" and k~= "smjer" then
            local sinonimi = mw.text.split(v, "@", true)
            for tk, tv in pairs(sinonimi) do
                if (isblank(extArgs[tv])) then
                    maincats = maincats .. '[[Kategorija:Stranice koje koriste ' ..
                            args['okvir']:lower() .. ' bez parametra ' ..
                            sinonimi[1] .. ']]'
                end
            end
        end
    end
    return maincats
end

local function ima(args, extArgs, maincats)
    for k, v in pairs(args) do
        if k ~= "okvir" and k ~= "smjer" then
            local sinonimi = mw.text.split(v, "@", true)
            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] .. ']]'
                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

    return cats
end

return p