Modul:Infookvir tracking

Izvor: Hrvatska internetska enciklopedija
Skoči na:orijentacija, traži
<templatestyles src="Modul:Dokumentacija/styles.css"></templatestyles>
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}}

Primjer

Infookvir otok ima sljedeći kod:
{{#invoke:Infookvir tracking|tracking|okvir=Infookvir otok|koordinate|država|površina}}

U člancima na 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. Jednake će kategorije biti dodane za sve praćene parametre ako isti nisu navedeni.

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}}}}}}


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)
            local sinonimiSize = 0
            local countNema = 0
            for tk, tv in pairs(sinonimi) do
                sinonimiSize = sinonimiSize + 1
                if (isblank(extArgs[tv])) then 
                	countNema = countNema + 1 
                end
            end
            if sinonimiSize == countNema 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)
    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