# Module:InfoboxImage

From faraghaib
Jump to navigation Jump to search

-- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if the image has to be centered -- upright - upright image param -- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it -- link - page to visit when clicking on image -- class - HTML classes to add to the image -- Outputs: -- Formatted image. -- More details available at the "Module:InfoboxImage/doc" page

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", "Noimage.gif", }

function i.IsPlaceholder(image)

       -- change underscores to spaces
       image = mw.ustring.gsub(image, "_", " ");
       assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
       -- if image starts with [[then remove that and anything after |
       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
       -- Trim spaces
       image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
       assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
       -- remove prefix if exists
       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
       -- Trim spaces
       image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
       -- capitalise first letter
       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"] or frame.args['تصویر'];

       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
           -- search for thumbnail images and add to tracking cat if found
           local cat = "";
           if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]") or mw.ustring.find(image, "|%s*بندانگشتی%s*[|%]]")) then
               cat = "رده:صفحاتی که از جعبه اطلاعات همراه تصاویر بندانگشتی استفاده می‌کنند";
           end
           return image .. cat;
       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
           -- Found strip marker at begining, so pass don't process at all
           return image;
       elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
           -- Found strip marker at begining, so pass don't process at all
           return image;
       else
           local result = "";
           local page = frame.args["page"] or frame.args['صفحه'];
           local size = frame.args["size"] or frame.args['اندازه'];
           local maxsize = frame.args["maxsize"] or frame.args['حداکثر اندازه'];
           local sizedefault = frame.args["sizedefault"] or frame.args['اندازه پیش‌فرض'];
           local alt = frame.args["alt"] or frame.args['جایگزین'];
           local link = frame.args["link"] or frame.args['پیوند'];
           local title = frame.args["title"] or frame.args['عنوان'];
           local border = frame.args["border"] or frame.args['حاشیه'];
           local upright = frame.args["upright"] or frame.args['ایستاده'] or "";
           local thumbtime = frame.args["thumbtime"] or "";
           local center = frame.args["center"] or frame.args['وسط'];
           local class = frame.args["class"];

           -- remove prefix if exists
           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
               -- if no sizedefault then set to maxsize
               if sizedefault == "" or sizedefault == nil then
                   sizedefault = maxsize
               end
               -- check to see if size bigger than maxsize
               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
           -- add px to size if just a number
           if (tonumber(size) or 0) > 0 then
               size = size .. "px";
           end
           -- add px to sizedefault if just a number
           if (tonumber(sizedefault) or 0) > 0 then
               sizedefault = sizedefault .. "px";
           end

           result = "[[پرونده:" .. image;
           if page ~= "" and page ~= nil then
               result = result .. "|صفحه=" .. page;
           end
           if size ~= "" and size ~= nil then
               result = result .. "|" .. size;
           elseif sizedefault ~= "" and sizedefault ~= nil then
               result = result .. "|" .. sizedefault;
           else
               result = result .. "|بی‌قاب";
           end
           if center == "yes" then
               result = result .. "|وسط"
           end
           if alt ~= "" and alt ~= nil then
               result = result .. "|جایگزین=" .. alt;
           end
           if link ~= "" and link ~= nil then
               result = result .. "|پیوند=" .. link;
           end
           if border == "yes" or border == "بله" then
               result = result .. "|حاشیه";
           end
           if upright == "yes" or upright == "بله" then
               result = result .. "|ایستاده";
           elseif upright ~= "" then
               result = result .. "|ایستاده=" .. upright;
           end
           if thumbtime ~= "" then
               result = result .. "|thumbtime=" .. thumbtime;
           end
           if class ~= nil and class ~= "" then
               result = result .. "|class=" .. class;
           end
           -- if alt value is a keyword then do not use as a description
           if alt == "thumbnail" or alt == "بندانگشتی" or alt == "thumb" or alt == "انگشتی" or
           alt == "frameless" or alt == "بی‌قاب" or alt == "left" or alt == "چپ" or
           alt == "center" or alt == "وسط" or alt == "right" or alt == "راست" or
           alt == "upright" or alt == "ایستاده" or alt == "border" or alt == "حاشیه" or
           mw.ustring.match(alt or "", '^[0-9۰-۹]*px$', 1) ~= nil then
               alt = nil;
           end
           if title ~= "" and title ~= nil then
               -- does title param contain any templatestyles? If yes then set to blank.
               if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
                   title = nil;
               end
           end
           if title ~= "" and title ~= nil then
               result = result .. "|" .. title;
           end
           result = result .. "]]";

           return result;
       end

end

return i;

Retrieved from "https://en.faraghaib.ir/w/index.php?title=Module:InfoboxImage&oldid=1188"