Modul:Smiles: razlika između inačica

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje
mNema sažetka uređivanja
mNema sažetka uređivanja
 
Redak 2: Redak 2:


function p.render(frame)
function p.render(frame)
     -- Provjeravamo oba izvora argumenata jer HeaderTabs zna promijeniti kontekst frejma
     -- Provjera svih mogućih slojeva argumenata (roditeljski, trenutni, i alternativni)
     local parentArgs = frame:getParent().args or {}
     local args = {}
     local currentArgs = frame.args or {}
   
    if frame:getParent() then
        for k, v in pairs(frame:getParent().args) do args[k] = v end
    end
   
     for k, v in pairs(frame.args) do args[k] = v end


     -- Pokušaj dohvatiti SMILES iz bilo kojeg dostupnog parametra
     -- Tražimo parametar 'smiles' ili prvi neimenovani parametar
     local smiles = parentArgs[1] or parentArgs.smiles or currentArgs[1] or currentArgs.smiles or ""
     local smiles = args.smiles or args[1] or ""
     local size = parentArgs.size or currentArgs.size or "260"
     local size = args.size or "260"
     local theme = parentArgs.theme or currentArgs.theme or "light"
     local theme = args.theme or "light"


     -- Čišćenje SMILES stringa od razmaka, novih redova i nevidljivih znakova
     -- Trimanje razmaka i novih redova
     if type(smiles) == "string" then
     if type(smiles) == "string" then
         smiles = string.gsub(smiles, "^%s*(.-)%s*$", "%1") -- trim razmaka s početka i kraja
         smiles = string.gsub(smiles, "^%s*(.-)%s*$", "%1")
     else
     else
         smiles = ""
         smiles = ""
     end
     end


     -- Ako je nakon čišćenja prazno, ispiši precizniju poruku za debugiranje
     -- Ako je i dalje prazno, HeaderTabs je potpuno sakrio predložak.
    -- U tom slučaju radimo fallback: dopuštamo slanje preko imenovanog 'smiles=' parametra
     if smiles == "" then
     if smiles == "" then
         return '<span class="error" style="color:orange; font-weight:bold;">[Smiles greška: Prazan unos unutar taba]</span>'
         return '<span class="error" style="color:red; font-weight:bold;">[Greška: HeaderTabs je blokirao parametre. Koristite {{Smiles|smiles=VAŠ_ZAPIS}}]</span>'
     end
     end


     -- Prisilno učitavanje ResourceLoader modula na stranici
     -- Prisilno učitavanje ResourceLoader modula
     frame:callParserFunction('#tag', { 'script', '', module = 'ext.smiles' })
     frame:callParserFunction('#tag', { 'script', '', module = 'ext.smiles' })


     -- Kreiramo čisti HTML string
     -- Kreiranje HTML strukture
     local html = '<div class="mw-smiles" data-smiles="' .. mw.text.nowiki(smiles) .. '" data-size="' .. size .. '" data-theme="' .. theme .. '">'
     local html = '<div class="mw-smiles" data-smiles="' .. mw.text.nowiki(smiles) .. '" data-size="' .. size .. '" data-theme="' .. theme .. '"></div>'
    html = html .. '<noscript>[[Datoteka:Smiles-fallback.png|200px|link=]]</noscript>'
    html = html .. '</div>'


    -- Vraćamo HTML spreman za obradu
     return frame:preprocess(html)
     return frame:preprocess(html)
end
end


return p
return p

Posljednja izmjena od 27. lipanj 2026. u 13:36

Dokumentacija modula


local p = {}

function p.render(frame)
    -- Provjera svih mogućih slojeva argumenata (roditeljski, trenutni, i alternativni)
    local args = {}
    
    if frame:getParent() then
        for k, v in pairs(frame:getParent().args) do args[k] = v end
    end
    
    for k, v in pairs(frame.args) do args[k] = v end

    -- Tražimo parametar 'smiles' ili prvi neimenovani parametar
    local smiles = args.smiles or args[1] or ""
    local size = args.size or "260"
    local theme = args.theme or "light"

    -- Trimanje razmaka i novih redova
    if type(smiles) == "string" then
        smiles = string.gsub(smiles, "^%s*(.-)%s*$", "%1")
    else
        smiles = ""
    end

    -- Ako je i dalje prazno, HeaderTabs je potpuno sakrio predložak.
    -- U tom slučaju radimo fallback: dopuštamo slanje preko imenovanog 'smiles=' parametra
    if smiles == "" then
        return '<span class="error" style="color:red; font-weight:bold;">[Greška: HeaderTabs je blokirao parametre. Koristite {{Smiles|smiles=VAŠ_ZAPIS}}]</span>'
    end

    -- Prisilno učitavanje ResourceLoader modula
    frame:callParserFunction('#tag', { 'script', '', module = 'ext.smiles' })

    -- Kreiranje HTML strukture
    local html = '<div class="mw-smiles" data-smiles="' .. mw.text.nowiki(smiles) .. '" data-size="' .. size .. '" data-theme="' .. theme .. '"></div>'

    return frame:preprocess(html)
end

return p