Jump to content

Module:InfoboxImage: Difference between revisions

m 1 revision imported
Template>WOSlinker
make changes from sandbox requested by User:Hike395 on talk page
Line 17: Line 17:
-- More details available at the "Module:InfoboxImage/doc" page
-- More details available at the "Module:InfoboxImage/doc" page


local i = {};
local i = {}


local placeholder_image = {
-- List of placeholder images and tracking categories stored in [[Module:InfoboxImage/data]]
    "Blue - Replace this image female.svg",
-- Other constants:
    "Blue - Replace this image male.svg",
--   the system-wide default thumbnail size (in px)
    "Flag of None (square).svg",
local defaultThumbnailSize = 250
    "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.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",
}


local categories = {
-- If page is not a user page, return tracking category. Else return empty.
url_image_links = "[[Category:Pages using infoboxes with URL in image parameter]]",
local function trackingCat(cat)
thumbnail_images = "[[Category:Pages using infoboxes with thumbnail images]]",
}
 
local function trackable()
local ns = mw.title.getCurrentTitle().nsText:lower()
local ns = mw.title.getCurrentTitle().nsText:lower()
return not (ns == 'user' or ns == 'user talk')
    local categories = mw.loadData('Module:InfoboxImage/data').categories
return (ns ~= 'user' and ns ~= 'user talk' and categories[cat]) or ""
end
end


-- Determine whether image is a placeholder
function i.IsPlaceholder(image)
function i.IsPlaceholder(image)
     -- change underscores to spaces
     -- change underscores to spaces
Line 128: Line 60:
     image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
     image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);


     for i,j in pairs(placeholder_image) do
     local placeholder_image = mw.loadData('Module:InfoboxImage/data').placeholder_image
        if image == j then
    return placeholder_image[image]
            return true
end
        end
 
    end
local function isempty(x)
     return false
     return (not x) or x == ""
end
end


-- Main entry point
function i.InfoboxImage(frame)
function i.InfoboxImage(frame)
     local image = frame.args["image"];
     local image = frame.args["image"];
      
      
     if image == "" or image == nil then
     if isempty(image) then
         return "";
         return "";
     end
     end
Line 153: Line 86:
     if string.find(image, "^%[*https?:") then
     if string.find(image, "^%[*https?:") then
-- Error category.
-- Error category.
return trackable() and categories.url_image_links or ""
return trackingCat("url_image_links")
end
end


Line 160: Line 93:
         local cat = "";
         local cat = "";
         if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
         if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
             cat = trackable() and categories.thumbnail_images or ""
             cat = trackingCat("thumbnail_images")
         end
         end
         return image .. cat;
         return image .. cat;
Line 173: Line 106:
         local result = "";
         local result = "";
         local page = frame.args["page"];
         local page = frame.args["page"];
        local upright = frame.args["upright"] or ""
         local size = frame.args["size"];
         local size = frame.args["size"];
         local maxsize = frame.args["maxsize"];
         local maxsize = frame.args["maxsize"];
Line 180: Line 114:
         local title = frame.args["title"];
         local title = frame.args["title"];
         local border = frame.args["border"];
         local border = frame.args["border"];
        local upright = frame.args["upright"] or "";
         local thumbtime = frame.args["thumbtime"] or "";
         local thumbtime = frame.args["thumbtime"] or "";
         local center = frame.args["center"];
         local center = frame.args["center"];
Line 196: Line 129:
         end
         end
          
          
         if maxsize ~= "" and maxsize ~= nil then
         if not isempty(maxsize) then
             -- if no sizedefault then set to maxsize
             -- if no sizedefault nor upright, then set to maxsize
             if sizedefault == "" or sizedefault == nil then
             if isempty(sizedefault) and isempty(upright) then
                 sizedefault = maxsize
                 sizedefault = maxsize
             end
             end
             -- check to see if size bigger than maxsize
             -- check to see if size bigger than maxsize
             if size ~= "" and size ~= nil then
             local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
            if not isempty(size) then
                 local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
                 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
                 if sizenumber>maxsizenumber and maxsizenumber>0 then
                     size = maxsize;
                     size = maxsize;
                end
            end
            -- check to see if upright bigger than maxsize (at default preferred size)
            if not isempty(upright) then
                local uprightnumber = tonumber(upright) or (upright == "yes" and 0.75) or 0
                if uprightnumber*defaultThumbnailSize > maxsizenumber and maxsizenumber > 0 then
                    upright = tostring(maxsizenumber/defaultThumbnailSize)
                 end
                 end
             end
             end
Line 220: Line 160:
          
          
         result = "[[File:" .. image;
         result = "[[File:" .. image;
         if page ~= "" and page ~= nil then
         if not isempty(page) then
             result = result .. "|page=" .. page;
             result = result .. "|page=" .. page;
         end
         end
         if size ~= "" and size ~= nil then
         if not isempty(size) then
             result = result .. "|" .. size;
             result = result .. "|" .. size;
         elseif sizedefault ~= "" and sizedefault ~= nil then
         elseif not isempty(sizedefault) and isempty(upright) then
             result = result .. "|" .. sizedefault;
             result = result .. "|" .. sizedefault;
         else
         else
Line 233: Line 173:
             result = result .. "|center"
             result = result .. "|center"
         end
         end
         if alt ~= "" and alt ~= nil then
         if not isempty(alt) then
             result = result .. "|alt=" .. alt;
             result = result .. "|alt=" .. alt;
         end
         end
         if link ~= "" and link ~= nil then
         if not isempty(link) then
             result = result .. "|link=" .. link;
             result = result .. "|link=" .. link;
         end
         end
Line 250: Line 190:
             result = result .. "|thumbtime=" .. thumbtime;
             result = result .. "|thumbtime=" .. thumbtime;
         end
         end
         if class ~= nil and class ~= "" then
         if not isempty(class) then
             result = result .. "|class=" .. class;
             result = result .. "|class=" .. class;
         end
         end
Line 257: Line 197:
             alt = nil;
             alt = nil;
         end
         end
         if title ~= "" and title ~= nil then
         if not isempty(title) then
             -- does title param contain any templatestyles? If yes then set to blank.
             -- does title param contain any templatestyles? If yes then set to blank.
             if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
             if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
Line 263: Line 203:
             end
             end
         end
         end
         if title ~= "" and title ~= nil then
         if not isempty(title) then
             result = result .. "|" .. title;
             result = result .. "|" .. title;
         end
         end