İçeriğe atla

Modül:Bilgi kutusu resmi

Vikikitap, özgür kütüphane

Genel bakış

[değiştir]

Bu modül görüntü parametrelerinin düzenli bir şekilde sonuç vermesi ve dosyaların işlenmesi için Infobox (Bilgi kutusu) şablonu içinde kullanılır.

Parametreler

[değiştir]
Parametre Tanımlama
image Gerekli. Ana temel parametredir ve resmin adı ile uzantısı bilgisini içerir.
size Resmin görüntülenecek boyutu.
maxsize Resmin görüntülenecek maksimum boyutu. Not: Eğer sizedefault parametresinde resim için bir değer belirtilmezse maxsize kullanılır.
sizedefault Hiçbir parametre yani boyut belirtilmediği takdirde çerçevesiz ve varsayılan görüntü boyutu uygulanır.
alt Resmin altında görüntülenmesi için metin
title Resim için bir başlık metni. Eğer boş bırakılırsa ve alt parametresi doluysa, alt parametresinde yazılı olanlar kullanılır.
border Eğer yes seçilirse, resme bir çerçeve ekler.
upright dik görüntüler için bu parametre kullanılır.
center Eğer yes seçilirse, görüntü merkeze ortalanır.
suppressplaceholder Eğer yes seçilirse, çerçevelerin görüntülenmesi engellenir.

Not: Eğer maxsize veya sizedefault parametrelerini kullanmak isterseniz, sayıdan sonra piksel anlamına gelen px ekini kullanmalısınız.

Örnek kullanım

[değiştir]
|Dosya = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|alt={{{alt|}}}}}

Örnekler

[değiştir]
|image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|alt={{{alt|}}}}}

Örnekler

[değiştir]
{{#invoke:InfoboxImage|InfoboxImage}}
{{#invoke:InfoboxImage|InfoboxImage|image=}}
{{#invoke:InfoboxImage|InfoboxImage|image=[[Image:Abbey Rd Studios.jpg|200px]]}}

{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg}}
{{#invoke:InfoboxImage|InfoboxImage|image=File:Abbey Rd Studios.jpg}}
{{#invoke:InfoboxImage|InfoboxImage|image=Image:Abbey Rd Studios.jpg}}

{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg|size=100px}}
{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg|size=100}}

{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg|sizedefault=250px|alt=Abbey Road Stüdyoları ön kapı ve merdivenleri}} Abbey Road Stüdyoları ön kapı ve merdivenleri
{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg|alt=Abbey Road Stüdyoları ön kapı ve merdivenleri}} Abbey Road Stüdyoları ön kapı ve merdivenleri
{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg|size=100px|alt=Abbey Road Stüdyoları ön kapı ve merdivenleri}} Abbey Road Stüdyoları ön kapı ve merdivenleri
{{#invoke:InfoboxImage|InfoboxImage|image=Bandera de Bilbao.svg|size=100|border=yes}}
{{#invoke:InfoboxImage|InfoboxImage|image=Replace this image male.svg|suppressplaceholder=yes}}
{{#invoke:InfoboxImage|InfoboxImage|image=[[Image:replace this image male.svg|200px]]|suppressplaceholder=yes}}
{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg|size=50px|maxsize=100px}}
{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg|size=200px|maxsize=100px}}
{{#invoke:InfoboxImage|InfoboxImage|image=Abbey Rd Studios.jpg|maxsize=100px|center=yes}}

-- Girdiler:
--    image - Dosya adı (Dosya:/Resim: öneki olan veya olmayan) veya tam biçimli dosya bağlantısı
--    page - çoklu sayfalarda gösterilecek sayfa  (DjVu)
--    size - görüntülenecek boyut
--    maxsize - görüntü için maksimum boyut
--    sizedefault - resim görüntüleme boyutu boşsa varsayılan boyut
--    alt - görüntü için alt metin
--    title - görüntü için başlık metni
--    border - kenarlık için yes ayarlıysa
--    center - yes ayarlanırsa, görüntü merkeze ortalanır.
--    upright - dik görüntü parametresi
--    suppressplaceholder - eğer yes değeri verilirse çerçeve görüntülenir
--    link - resme tıklanınca gidilecek bağlantı
-- Çıktılar:
--    Biçimlendirilmiş görüntü.
-- Daha fazla detay ve bilgi "Modül:InfoboxImage/belge" sayfasında bulunabilir

local i = {};

local placeholder_image = {
    "Blue - Replace this image female.svg",
    "Blue - Replace this image male.svg",
    "Female no free image yet.png",
    "Flag of None (square).svg",
    "Flag of None.svg",
    "Flag of.svg",
    "Green - Replace this image female.svg",
    "Green - Replace this image male.svg",
    "Image is needed female.svg",
    "Image is needed male.svg",
    "Location map of None.svg",
    "Male no free image yet.png",
    "Missing flag.png",
    "No flag.svg",
    "No free portrait.svg",
    "No portrait (female).svg",
    "No portrait (male).svg",
    "Red - Replace this image female.svg",
    "Red - Replace this image male.svg",
    "Replace this image female (blue).svg",
    "Replace this image female.svg",
    "Replace this image male (blue).svg",
    "Replace this image male.svg",
    "Silver - Replace this image female.svg",
    "Silver - Replace this image male.svg",
    "Replace this image.svg",
	"Cricket no pic.png",
	"CarersLogo.gif",
	"Diagram Needed.svg",
	"Example.jpg",
	"Image placeholder.png",
	"No male portrait.svg",
	"Nocover-upload.png",
	"NoDVDcover copy.png",
	"Noribbon.svg",
	"No portrait-BFD-test.svg",
	"Placeholder barnstar ribbon.png",
	"Project Trains no image.png",
	"Image-request.png",
	"Sin bandera.svg",
	"Sin escudo.svg",
	"Replace this image - temple.png",
	"Replace this image butterfly.png",
	"Replace this image.svg",
	"Replace this image1.svg",
	"Resolution angle.png",
	"Image-No portrait-text-BFD-test.svg",
	"Insert image here.svg",
	"No image available.png",
	"NO IMAGE YET square.png",
	"NO IMAGE YET.png",
	"No Photo Available.svg",
	"No Screenshot.svg",
	"No-image-available.jpg",
	"Null.png",
	"PictureNeeded.gif",
	"Place holder.jpg",
	"Unbenannt.JPG",
	"UploadACopyrightFreeImage.svg",
	"UploadAnImage.gif",
	"UploadAnImage.svg",
	"UploadAnImageShort.svg",
	"CarersLogo.gif",
	"Diagram Needed.svg",
	"No male portrait.svg",
	"NoDVDcover copy.png",
	"Placeholder barnstar ribbon.png",
	"Project Trains no image.png",
	"Image-request.png",
}

function i.IsPlaceholder(image)
    -- değişik alanlarda alt çizgi
    image = mw.ustring.gsub(image, "_", " ");
    assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
    -- eğer görüntü şununla başlıyorsa [[ onu ve herşeyi kaldır |
    if mw.ustring.sub(image,1,2) == "[[" then
        image = mw.ustring.sub(image,3);
        image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
        assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
    end
    -- Kesme alanlarında
    image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
    assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
    -- önek varsa kaldır (dosya:)
    local allNames = mw.site.namespaces[6].aliases
    allNames[#allNames + 1] = mw.site.namespaces[6].name
    allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
    for i, name in ipairs(allNames) do
        if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
            image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
            break
        end
    end
    -- Kesme alanlarında
    image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
    -- ilk harfini büyüt
    image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);

    for i,j in pairs(placeholder_image) do
        if image == j then
            return true
        end
    end
    return false
end

function i.InfoboxImage(frame)
    local image = frame.args["image"];
    
    if image == "" or image == nil then
        return "";
    end
    if image == " " then
        return image;
    end
    if frame.args["suppressplaceholder"] ~= "no" then
        if i.IsPlaceholder(image) == true then
            return "";
        end
    end

    if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then
        return "";
    end
    if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then
        return "";
    end
    if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then
        return "";
    end
    if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then
        return "";
    end
    if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then
        return "";
    end
    if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then
        return "";
    end

    if mw.ustring.sub(image,1,2) == "[[" then
        -- küçük resimleri araştır ve bulduğunda aşağıdaki kategori ile onları işaretle
        if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
            return image .. "[[Kategori:Bilgi kutusunda küçük resim kullanan sayfalar]]";
        elseif mw.title.getCurrentTitle().namespace == 0 then
            return image .. "[[Kategori:Kullanımdan kaldırılmış görüntü sözdizimi kullanan sayfalar]]";
        else
            return image;
        end
    elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
        return image;
    elseif mw.ustring.sub(image,1,1) == "<" then
        return image;
    elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
        -- Başlangıcında belirteç işareti bulundu, bu nedenle hiçbir işlem yapma
        return image;
    elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
        -- Başlangıcında belirteç işareti bulundu, bu nedenle hiçbir işlem yapma
        return image;
    else
        local result = "";
        local page = frame.args["page"];
        local size = frame.args["size"];
        local maxsize = frame.args["maxsize"];
        local sizedefault = frame.args["sizedefault"];
        local alt = frame.args["alt"];
        local link = frame.args["link"];
        local title = frame.args["title"];
        local border = frame.args["border"];
        local upright = frame.args["upright"] or "";
        local thumbtime = frame.args["thumbtime"] or "";
        local center= frame.args["center"];
        
        -- önek varsa kaldır (dosya:)
        local allNames = mw.site.namespaces[6].aliases
        allNames[#allNames + 1] = mw.site.namespaces[6].name
        allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
        for i, name in ipairs(allNames) do
            if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
                image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
                break
            end
        end
        
        if maxsize ~= "" and maxsize ~= nil then
            --  maxsize için bir değer atanmazsa sizedefault belirle
            if sizedefault == "" or sizedefault == nil then
                sizedefault = maxsize
            end
            -- eğer daha büyük boyutluysa maxsize kontrolü yap
            if size ~= "" and size ~= nil then
                local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
                local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
                if sizenumber>maxsizenumber and maxsizenumber>0 then
                    size = maxsize;
                end
            end
        end
        -- yalnızca bir sayıysa boyutuna px ekle
        if (tonumber(size) or 0) > 0 then
            size = size .. "px";
        end
        
        result = "[[Dosya:" .. image;
        if page ~= "" and page ~= nil then
            result = result .. "|page=" .. page;
        end
        if size ~= "" and size ~= nil then
            result = result .. "|" .. size;
        elseif sizedefault ~= "" and sizedefault ~= nil then
            result = result .. "|" .. sizedefault;
        else
            result = result .. "|frameless";
        end
        if center == "yes" then
            result = result .. "|center"
        end
        if alt ~= "" and alt ~= nil then
            result = result .. "|alt=" .. alt;
        end
        if link ~= "" and link ~= nil then
            result = result .. "|link=" .. link;
        end
        if border == "yes" then
            result = result .. "|border";
        end
        if upright == "yes" then
            result = result .. "|upright";
        elseif upright ~= "" then
            result = result .. "|upright=" .. upright;
        end
        if thumbtime ~= "" then
            result = result .. "|thumbtime=" .. thumbtime;
        end
        if title ~= "" and title ~= nil then
            result = result .. "|" .. title;
        elseif alt ~= "" and alt ~= nil then
            result = result .. "|" .. alt;
        end
        result = result .. "]]";
        
        return result;
    end
end

return i;