Moduuli:TietolaatikkoKuva
Siirry navigaatioon
Siirry hakuun
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:TietolaatikkoKuva/ohje
-- Määreet:
-- kuva - voi olla pelkkä tiedostonimi (ilman tai kera Tiedosto-alukkeen) tai täydellinen tiedostolinkki hakasulkeineen
-- paate - vaihtoehtoinen parametri tiedostopäätteelle kuten gif, jpg, jpeg, png, svg.
-- oletuspaate - vaihtoehtoinen parametri oletustiedostopäättteelle.
-- leveys - kuvan esittämisleveys
-- maksimileveys - kuvan suurin sallittu leveys
-- oletusleveys - kuvan oletusleveys jos leveys-parametrille ei määritellä arvoa
-- alt - kuvan alt-teksti
-- otsikko - kuvan otsikkoteksti
-- reunus - anna arvoksi kyllä jos haluat kuvaan reunuksen
-- keskitys - anna arvoksi kyllä jos haluat kuvan asettuvan keskitetysti
-- pysty - kuva pystyasennossa? (Suhteuttaa leveyden.)
-- piilotasijainen - anna arvoksi kyllä jos haluat sijaiskuvan piilottuvan
-- Tuloste:
-- Kuvan koodi.
local i = {};
local sijaiskuva = {
"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",
}
function i.IsPlaceholder(kuva)
-- vaihtaa alaviivat välilyönneiksi
kuva = mw.ustring.gsub(kuva, "_", " ");
-- jos parametrin arvo alkaa [[, poistaa sulkeet ja kaiken merkin | jälkeen
if mw.ustring.sub(kuva,1,2) == "[[" then
kuva = mw.ustring.sub(kuva,3);
kuva = mw.ustring.gsub(kuva, "([^|]*)|.*", "%1");
end
-- poistaa ylimääräiset välilyönnit
kuva = mw.ustring.gsub(kuva, '^[ ]*(.-)[ ]*$', '%1');
-- poistaa etuliitteen file: tai tiedosto: tai kuva:
if mw.ustring.lower(mw.ustring.sub(kuva,1,5)) == "file:" then
kuva = mw.ustring.sub(kuva,6);
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,6)) == "tiedosto:" then
kuva = mw.ustring.sub(kuva,7);
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,8)) == "kuva:" then
kuva = mw.ustring.sub(kuva,9);
end
-- poistaa ylimääräiset välilyönnit
kuva = mw.ustring.gsub(kuva, '^[ ]*(.-)[ ]*$', '%1');
-- ensimmäinen kirjain isolla
kuva = mw.ustring.upper(mw.ustring.sub(kuva,1,1)) .. mw.ustring.sub(kuva,2);
for i,j in pairs(sijaiskuva) do
if kuva == j then
return true
end
end
return false
end
function i.ValidateEnding (f)
-- analysoi Wikipediassa sallitut kuvatiedostojen päätteet
-- sivun http://commons.wikimedia.org/wiki/Commons:File_types mukaan
-- poislukien tiff, koska se ei toimi kaikilla selaimilla
-- xcf toimii vain MediaWikissä
if f == "gif" or f == "jpg" or f == "jpeg" or f == "png" or f == "svg" then
return true
else return false
end
end
function i.AddEnding (kuva, paate, oletuspaate)
-- testaa onko kuvan arvossa jo pääte
local f = kuva:gsub("^(.*)%.","")
f = mw.ustring.lower(f) -- kirjaimet pieniksi
if i.ValidateEnding(f) == true then
return kuva -- jos on pääte, palauttaa arvon sellaisenaan
end
-- lisää tiedostopäätteen kuvan nimeen
if paate ~="" and paate ~=nil then
if i.ValidateEnding(paate) == true then
kuva = kuva .. "." .. paate
end
elseif oletuspaate ~="" and oletuspaate ~=nil then
if i.ValidateEnding(oletuspaate) == true then
kuva = kuva .. "." .. oletuspaate
end
end
return kuva
end
function i.TietolaatikkoKuva(frame)
local kuva = frame.args["kuva"];
if kuva == "" or kuva == nil then
return "";
end
if kuva == " " then
return kuva;
end
if frame.args["piilotasijainen"] == "kyllä" then
if i.IsPlaceholder(kuva) == true then
return "";
end
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,5)) == "http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,6)) == "[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,7)) == "[[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,6)) == "https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,7)) == "[https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,8)) == "[[https:" then
return "";
end
if mw.ustring.sub(kuva,1,2) == "[[" then
-- etsii pienoiskuvaa (thumbnail) and add to tracking cat if found
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(kuva, "|%s*thumb%s*[|%]]") or mw.ustring.find(kuva, "|%s*thumbnail%s*[|%]]") or mw.ustring.find(kuva, "|%s*eta%s*[|%]]")) then
return kuva .. "[[Luokka:Pages using infoboxes with thumbnail images]]";
else
return kuva;
end
elseif mw.ustring.sub(kuva,1,2) == "{{" and mw.ustring.sub(kuva,1,3) ~= "{{{" then
return kuva;
elseif mw.ustring.sub(kuva,1,1) == "<" then
return kuva;
elseif mw.ustring.sub(kuva,1,5) == mw.ustring.char(127).."UNIQ" then
-- jos alussa strip marker, ohittaa ja palauttaa annetun arvon sellaisenaan
return kuva;
else
local result = "";
local paate = frame.args["paate"];
local oletuspaate = frame.args["oletuspaate"];
local leveys = frame.args["leveys"];
local maksimileveys = frame.args["maksimileveys"];
local oletusleveys = frame.args["oletusleveys"];
local alt = frame.args["alt"];
local otsikko = frame.args["otsikko"];
local reunus = frame.args["reunus"];
local pysty = frame.args["pysty"] or "";
local keskitys = frame.args["keskitys"]
-- poistaa alukkeen file: tai tiedosto: or kuva:
if mw.ustring.lower(mw.ustring.sub(kuva,1,5)) == "file:" then
kuva = mw.ustring.sub(kuva,6);
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,6)) == "tiedosto:" then
kuva = mw.ustring.sub(kuva,7);
end
if mw.ustring.lower(mw.ustring.sub(kuva,1,8)) == "kuva:" then
kuva = mw.ustring.sub(kuva,9);
end
if maksimileveys ~= "" and maksimileveys ~= nil then
-- jos ei oletusleveysa, aseta kuvan leveys maksimileveyson
if oletusleveys == "" or oletusleveys == nil then
oletusleveys = maksimileveys
end
-- tarkista onko leveys suurempi kuin maksimileveys
if leveys ~= "" and leveys ~= nil then
local sizenumber = tonumber(mw.ustring.match(leveys,"%d*")) or 0;
local maxsizenumber = tonumber(mw.ustring.match(maksimileveys,"%d*"));
if sizenumber>maxsizenumber and maxsizenumber>0 then
leveys = maksimileveys;
end
end
end
-- lisää leveysmääreeseen "px" jos puuttuu
if (tonumber(leveys) or 0) > 0 then
leveys = leveys .. "px";
end
kuva = i.AddEnding (kuva,paate,oletuspaate)
result = "[[Tiedosto:" .. kuva;
if leveys ~= "" and leveys ~= nil then
result = result .. "|" .. leveys;
elseif oletusleveys ~= "" and oletusleveys ~= nil then
result = result .. "|" .. oletusleveys;
else
result = result .. "|frameless";
end
if keskitys == "kyllä" then
result = result .. "|center"
end
if alt ~= "" and alt ~= nil then
result = result .. "|alt=" .. alt;
end
if reunus == "kyllä" then
result = result .. "|border";
end
if pysty ~= "" then
result = result .. "|upright=" .. upright;
end
if otsikko ~= "" and otsikko ~= nil then
result = result .. "|" .. otsikko;
elseif alt ~= "" and alt ~= nil then
result = result .. "|" .. alt;
end
result = result .. "]]";
return result;
end
end
return i;