Modül:Ödül
Görünüm
Modül belgelemesi[oluştur]
Bu modül şu Lua modülünü kullanıyor: |
-- Kullanıcı ödül şablonlarının genel modülü
local dosyalar = require("Modül:Ödül/veri")
function goster(frame)
--ilk parametreye girilen değeri ödül / yıldız adı olarak kabul edelim
local ad = frame:getParent().args[1] or frame:getParent().args["topic"]
ad = ad and mw.text.trim(ad) or "Ödül"
--ikinci parametreye girilen değeri de açıklama yazısı olarak kabul edelim
local aciklama = frame:getParent().args[2] or frame:getParent().args["text"]
aciklama = aciklama and mw.text.trim(aciklama) or aciklama
--imzayı alalım
local imza = frame.args["imza"]
local kontur = frame:getParent().args["kontur"] or frame:getParent().args["border"]
local arkaplan = frame:getParent().args["arkaplan"] or frame:getParent().args["color"]
-- ödül tablosunu başlatalım
local sonuc = [[
<div style='width:100%;padding-top:10px;padding-bottom:10px'>
<div style='
display:flex;
-webkit-align-items:flex-start;align-items:flex-start;
background:]] .. (arkaplan and arkaplan or "#f6f7f9") .. [[;
width:100%;
max-width:100%;
margin:0 auto;
padding:20px;
box-sizing:border-box;
border:1px solid ]] .. (kontur and kontur or "#e5e7ec") .. [[;'>
]]
-- eğer bir ad parametresi girildiyse
if ad then
-- girilen ödül için verilerde eşleşen bir dosya mevcut mu?
-- ya da manuel olarak eklenmiş bir dosya mevcut mu?
local dosya = frame:getParent().args["dosya"]
or frame:getParent().args["image"]
or dosyalar[mw.ustring.lower(ad)]
or "Original Barnstar Hires.svg"
local alter = frame:getParent().args["alt"]
if alter and alter ~= nil and alter ~= "" and type(dosya) == "table" and dosya.alt then
dosya = dosya.alt[tonumber(alter)][1]
end
-- girilen dosyanın bir genişliği belirlendi mi?
local boyut = frame:getParent().args["dosya_genişlik"]
or frame:getParent().args["size"]
or ((dosya and dosya[2]) and dosya[2])
-- eğer bir dosya bulunduysa...
if dosya then
sonuc = sonuc .. "<div style='padding-right:20px'>[[Dosya:"
.. (type(dosya) == "string" and dosya or dosya[1]) .. (boyut and "|" .. boyut or "|100px") .. "]]</div>"
end
sonuc = sonuc .. [[<div style='flex:1'><div style='font-size:25px;border-bottom:1px solid ]]
.. (kontur and kontur or "#e5e7ec") .. [[;margin-bottom:20px'>]]
.. ((dosya and dosya.ad) and dosya.ad or ad) .. "</div>"
end
-- bir açıklama metni girildi mi?
if aciklama then
sonuc = sonuc .. aciklama
end
if imza then
sonuc = sonuc .. "<br>" .. imza
end
if ad then
sonuc = sonuc .. "</div>"
end
sonuc = sonuc .. "</div></div>"
return sonuc
end
function diz(a, b)
local alfabe = "AaBbCcÇçDdEeFfGgĞğHhIıİiJjKkLlMmNnOoÖöPpQqRrSsŞşTtUuÜüVvWwXxYyZz0123456789"
local a2 = mw.ustring.find(alfabe, mw.ustring.sub(mw.text.trim(a), 1, 1))
local b2 = mw.ustring.find(alfabe, mw.ustring.sub(mw.text.trim(b), 1, 1))
return (a2 == b2) and a:lower() < b:lower() or a2 < b2
end
function alternatifler(frame)
local ad = frame.args[1]
local v = dosyalar[mw.ustring.lower(ad)]
local son = ""
if v and v.alt then
son = son .. "=== Alternatifler ===\n\nBu şablonun alternatif dosyaları da mevcuttur. Kullanımları şu şekildedir:\n"
for i = 1,3 do
if v.alt[i] then
son = son .. "\n;1=\n<code>{{"..ad
.."|Mesajınız buraya gelecek|alt="..i.."}}</code>".."\n\n"..
frame:expandTemplate{ title = ad, args = {"Mesajınız buraya gelecek", ["alt"] = i}}
end
end
end
return son
end
function hepsi(frame)
local son = "{| class='wikitable'\n!Ad\n!Asil dosya\n!Alt 1\n!Alt 2\n!Alt 3\n|-"
local tkeys = {}
for k in pairs(dosyalar) do table.insert(tkeys, k) end
table.sort(tkeys, function(a, b) return diz(a, b) end)
for _, k in ipairs(tkeys) do
v = dosyalar[k]
son = son .. "\n|" .. v.ad .. "\n|[[Dosya:" .. v[1] .. "|50px]]"
for i = 1,3 do
if v.alt and v.alt[i] then
son = son .. "\n|[[Dosya:" .. v.alt[i][1] .. "|50px]]"
else
son = son .. "\n|"
end
end
son = son .. "\n|-"
end
return son .. "\n|}"
end
return {goster = goster, hepsi = hepsi, alternatifler = alternatifler}