Module:InfoboxImage: Difference between revisions

From NvWiki
Jump to navigation Jump to search
make changes from sandbox requested by User:Hike395 on talk page
 
m Archiving 1 discussion(s) to Module talk:InfoboxImage/Archive 4) (bot
Line 1: Line 1:
-- Inputs:
{{Permanently protected}}
--    image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link
{{talk header}}
--    page - page to display for multipage images (DjVu)
{{User:MiszaBot/config
--    size - size to display the image
|archiveheader      = {{talkarchivenav}}
--    maxsize - maximum size for image
|maxarchivesize      = 75K
--    sizedefault - default size to display the image if size param is blank
|counter            = 4
--    alt - alt text for image
|minthreadsleft      = 4
--    title - title text for image
|minthreadstoarchive = 1
--    border - set to yes if border
|algo                = old(365d)
--    center - set to yes, if the image has to be centered
|archive            = Module talk:InfoboxImage/Archive %(counter)d
--    upright - upright image param
}}
--    suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it
{{archives|search=yes}}
--    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 = {}
== Other size parameters cause upright to be ignored ==


-- List of placeholder images and tracking categories stored in [[Module:InfoboxImage/data]]
With the current implementation of this module, the upright parameter is ignored if the maxsize or sizedefault parameters are defined. This appears to be because image syntax ignores upright if a size in pixels is defined. It means that if either of those parameters are used in an infobox template (see {{tl|Infobox bridge}} for example), then it's not possible to use the upright parameter at all in articles, which is not the intended behavior.
-- Other constants:
--  the system-wide default thumbnail size (in px)
local defaultThumbnailSize = 250


-- If page is not a user page, return tracking category. Else return empty.
I don't have the Lua skills to do so, but I think the module should be rewritten so that a pixel size is not passed if the upright parameter is used and the size parameter is not. [[User:Pi.1415926535|Pi.1415926535]] ([[User talk:Pi.1415926535|talk]]) 03:27, 30 May 2025 (UTC)
local function trackingCat(cat)
local ns = mw.title.getCurrentTitle().nsText:lower()
    local categories = mw.loadData('Module:InfoboxImage/data').categories
return (ns ~= 'user' and ns ~= 'user talk' and categories[cat]) or ""
end


-- Determine whether image is a placeholder
:I think there are two separate cases to consider:
function i.IsPlaceholder(image)
:# Both {{para|upright}} and either {{para|maxsize}} or {{para|sizedefault}} are specified
    -- change underscores to spaces
:# Both {{para|upright}} and {{para|size}} are specified
    image = mw.ustring.gsub(image, "_", " ");
:In the first case, I think the current module behavior is likely incorrect -- the caller specified a size via {{para|upright}} and it's being handled as if no size was specified. The second case is less clear, because conflicting sizes are being provided. I'm reluctant to change the current behavior for the second case, because there may be unintended consequences to the 5M articles that use this module.
    assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
:Of course, fixing the incorrect behavior also may have unintended consequences, also, so we should be careful. For example, the proposed behavior now allows people to set absurd values to {{para|upright}} and there is no check or limit.
    -- if image starts with [[ then remove that and anything after |
:I've modified [[Module:InfoboxImage/sandbox|the sandbox]] to fix the first issue, and updated [[Module:InfoboxImage/testcases|the tests]] to exercise the new code. {{Pinging|WOSlinker}} to see if they have any comments on the change: other editors are also welcome to comment. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 09:17, 30 May 2025 (UTC)
    if mw.ustring.sub(image,1,2) == "[[" then
::Later: I added some logic to ensure that {{para|upright}} doesn't produce an image larger than {{para|maxsize}}, assuming the default user preference. This fixes one potential issue. Updated sandbox and testcases. I'm hoping some other templateeditor or admin takes a look at the [https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&page1=Module%3AInfoboxImage&page2=Module%3AInfoboxImage%2Fsandbox diff]. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 10:01, 30 May 2025 (UTC)
        image = mw.ustring.sub(image,3);
:::@[[User:Hike395|Hike395]]: Thanks for looking into this! Just to clarify - will this still allow an image scaled with upright to be larger than maxsize if the user preference is set to a larger-than-default value? That seems important for accessibility reasons. [[User:Pi.1415926535|Pi.1415926535]] ([[User talk:Pi.1415926535|talk]]) 16:09, 30 May 2025 (UTC)
        image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
::::Yes: if upright is specified, then maxsize will scale with the user's default image size. So if maxsize=300, and the user's preferred thumbnail size is set to 300px, then the output image will be limited to be less than 300*300/220 = 409px for that user. There's no way to avoid this. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 00:39, 31 May 2025 (UTC)
        assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
:::::Great, that is the behavior I believe it should have. [[User:Pi.1415926535|Pi.1415926535]] ([[User talk:Pi.1415926535|talk]]) 00:45, 31 May 2025 (UTC)
    end
:To the original observation {{tq|the upright parameter is ignored if the maxsize or sizedefault parameters are defined. This appears to be because image syntax ignores upright if a size in pixels is defined}}: this is expected behaviour, and is documented at [[WP:PICSIZE]], inside the "Implementation details" box ([[WP:EIS#Implementation details|direct link]]), last paragraph. --[[User:Redrose64|<span style="color:#a80000; background:#ffeeee; text-decoration:inherit">Red</span>rose64]] &#x1f339; ([[User talk:Redrose64|talk]]) 13:39, 31 May 2025 (UTC)
    -- Trim spaces
::{{ping|Pi.1415926535|Redrose64}} Picking this back up. My sandbox edits do not contradict [[WP:PICSIZE]]. If a absolute size and an upright are both specified, then the absolute size is used. What I did was scale maxsize and sizedefault relative to the user preferred image size. Those two parameters are only defined in this module: [[WP:PICSIZE]] does not discuss them.
    image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
::Is it ok to promote the sandbox to main? I see that since this edit, Pi.14 has removed maxsize and sizedefault from a number of infoboxes. It would be good to restore those, if I can promote sandbox to main. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 08:48, 5 August 2025 (UTC)
    assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
:::{{ping|Pi.1415926535|Redrose64}} Any comments or thoughts before I propose this as an edit? {{U|Pppery}} just [[WP:FULL|fully protected]] this Module, so I can no longer edit it, so even a simple support/agree would be helpful. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 14:46, 12 August 2025 (UTC)
    -- remove prefix if exists
:::: To be clear, my full protection was completely unrelated to this dispute, which I didn't even know existed; if you look at my edits at the time I adjusted the protection level of hundreds of templates. [[User:Pppery|* Pppery *]] [[User talk:Pppery|<sub style="color:#800000">it has begun...</sub>]] 17:35, 12 August 2025 (UTC)
    local allNames = mw.site.namespaces[6].aliases
:::::If I'm understanding correctly what your edit does, I support it. I'm confused about your statement {{tq|Pi.14 has removed maxsize and sizedefault from a number of infoboxes}} - to my knowledge, I haven't edited any infobox templates to remove these. [[User:Pi.1415926535|Pi.1415926535]] ([[User talk:Pi.1415926535|talk]]) 05:12, 13 August 2025 (UTC)
    allNames[#allNames + 1] = mw.site.namespaces[6].name
::::::{{ping|Pppery}} apologies. I didn't mean to imply causation here -- I just wanted to point out that I can no longer edit the template directly.
    allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
::::::{{ping|Pi.1415926535}} more apologies. I recall seeing edits to infoboxes which removed maxsize and sizedefault, but now I cannot find them to check who did them. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 12:33, 13 August 2025 (UTC)
    for i, name in ipairs(allNames) do
===Edit request===
        if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
{{FPER|answered=yes}}
            image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
Please copy [[Module:InfoboxImage/sandbox]] to [[Module:InfoboxImage]]
            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);


    local placeholder_image = mw.loadData('Module:InfoboxImage/data').placeholder_image
This is a change in handling the case where {{para|upright}} and either {{para|maxsize}} or {{para|sizedefault}} is specified. In this case, the sandbox version obeys {{para|upright}}, but if it exceeds <code>maxsize/220</code>, then it is set to <code>maxsize/220</code>. The current behavior is to ignore {{para|upright}} when either {{para|maxsize}} or {{para|sizedefault}} is specified, which is incorrect.
    return placeholder_image[image]
end


local function isempty(x)
This edit does not change any behavior if {{para|upright}} is not specified. Also, if {{para|size}} and {{para|upright}} are both specified, the behavior remains unchanged: {{para|size}} is obeyed in that case.
    return (not x) or x == ""
:Are you sure that this description is correct? On the testcases page, I am seeing the Mustela image with <syntaxhighlight>upright=1.5|sizedefault=272|maxsize=300</syntaxhighlight>. The live module renders the image at 1.5x my thumbnail size. The sandbox image is rendered at 272px. This seems to be the opposite of the description above, if I am reading it correctly. It also seems to be a fix that helps the module to match normal image rendering (px is preferred over upright). Is this what you want? – [[User:Jonesey95|Jonesey95]] ([[User talk:Jonesey95|talk]]) 17:01, 15 August 2025 (UTC)
end
::You may be interpreting the unit tests backward? Here are the results when main and sandbox are called with the case that you are highlighting:
:::<code><nowiki>{{subst:#invoke:InfoboxImage|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|sizedefault=272|maxsize=300}}</nowiki></code> →
[[File:Mustela erminea upright.jpg|272px|upright=1]]
:::<code><nowiki>{{subst:#invoke:InfoboxImage/sandbox|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|sizedefault=272|maxsize=300}}</nowiki></code> →
[[File:Mustela erminea upright.jpg|frameless|upright=1]]
:::Here, the main module is generating a pic with size=272px, while the sandbox module is generating a pic with upright=1 (rendered at your preferred size). So the logic is correct.
:::The logic has not changed when both size and upright are specified. They are both emitted and MediaWiki prefers size over upright:
:::<code><nowiki>{{subst:#invoke:InfoboxImage|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|size=200}}</nowiki></code> →
[[File:Mustela erminea upright.jpg|200px|upright=1]]
:::<code><nowiki>{{subst:#invoke:InfoboxImage/sandbox|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|size=200}}</nowiki></code> →
[[File:Mustela erminea upright.jpg|200px|upright=1]]
:::— [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 17:18, 15 August 2025 (UTC)
::::Indeed, I do not understand what "Expected" and "Actual" refer to on that page. I'm used to seeing the live template followed by the sandbox, with appropriate headers to match. In that case, and based on the apparent consensus above, I have no objections. It looks like this change will require an administrator, which I am not. – [[User:Jonesey95|Jonesey95]] ([[User talk:Jonesey95|talk]]) 17:25, 15 August 2025 (UTC)
::::: {{ping|Redrose64}} Do you object to this request? [[User:Pppery|* Pppery *]] [[User talk:Pppery|<sub style="color:#800000">it has begun...</sub>]] 19:48, 15 August 2025 (UTC)
::::::I'm not a Lua expert, and have never claimed to be. --[[User:Redrose64|<span style="color:#a80000; background:#ffeeee; text-decoration:inherit">Red</span>rose64]] &#x1f339; ([[User talk:Redrose64|talk]]) 22:18, 16 August 2025 (UTC)


-- Main entry point
{{Done}} [[User:Pppery|* Pppery *]] [[User talk:Pppery|<sub style="color:#800000">it has begun...</sub>]] 04:35, 17 August 2025 (UTC)
function i.InfoboxImage(frame)
    local image = frame.args["image"];
   
    if isempty(image) then
        return "";
    end
    if image == "&nbsp;" then
        return image;
    end
    if frame.args["suppressplaceholder"] ~= "no" then
        if i.IsPlaceholder(image) == true then
            return "";
        end
    end
   
    if string.find(image, "^%[*https?:") then
-- Error category.
return trackingCat("url_image_links")
end


    if mw.ustring.sub(image,1,2) == "[[" then
== Default maxsize to 250px ==
        -- 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*[|%]]")) then
            cat = trackingCat("thumbnail_images")
        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,8) == mw.ustring.char(127).."'\"`UNIQ" then
        -- Found strip marker at begining, so pass don't process at all
        return image;
    else
        local result = "";
        local page = frame.args["page"];
        local upright = frame.args["upright"] or ""
        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 thumbtime = frame.args["thumbtime"] or "";
        local center = frame.args["center"];
        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 not isempty(maxsize) then
            -- if no sizedefault nor upright, then set to maxsize
            if isempty(sizedefault) and isempty(upright) then
                sizedefault = maxsize
            end
            -- check to see if size bigger than maxsize
            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;
                if sizenumber > maxsizenumber and maxsizenumber > 0 then
                    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
        -- 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 = "[[File:" .. image;
        if not isempty(page) then
            result = result .. "|page=" .. page;
        end
        if not isempty(size) then
            result = result .. "|" .. size;
        elseif not isempty(sizedefault) and isempty(upright) then
            result = result .. "|" .. sizedefault;
        else
            result = result .. "|frameless";
        end
        if center == "yes" then
            result = result .. "|center"
        end
        if not isempty(alt) then
            result = result .. "|alt=" .. alt;
        end
        if not isempty(link) 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 not isempty(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 == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then
            alt = nil;
        end
        if not isempty(title) 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 not isempty(title) then
            result = result .. "|" .. title;
        end
        result = result .. "]]";
       
        return result;
    end
end


return i;
I’ve recently been coming across a lot of Infoboxes with substatially large images in their infoboxes. 300-400px in size. Can we modify this module to default to a {{code|maxsize}} of 250px? If for some reason a particular infobox wants to override that, that’s another matter, but that way we can at least cut down on the number of large images? If there is no objection to this change, I’m happy to write the code in the sandbox and do a formal edit request. '''[[User:Zackmann08|<span style="color:#00ced1">Zack</span><span style="color:#007F94">mann</span>]]''' (<sup>[[User_talk:Zackmann08|Talk to me]]</sup>/<sub>[[Special:Contributions/Zackmann08|<span style="color:orange;">What I been doing</span>]]</sub>) 07:37, 30 September 2025 (UTC)
:A few comments:
:#I would be extremely cautious about setting defaults in this template. It's used on 5M pages and in system messages. The probability of unintended consequences is high.
:#Looking at [https://en.wikipedia.org/w/index.php?title=Special:Search&limit=500&offset=0&ns10=1&search=insource%3AInfoboxImage+insource%3Asizedefault the usage of {{para|sizedefault}}], I see many templates use {{para|sizedefault|frameless}}. With the current code, such a default will ignore maxsize.
:#Looking at [https://en.wikipedia.org/w/index.php?title=Special:Search&limit=500&offset=0&ns10=1&search=insource%3AInfoboxImage+insource%3Amaxsize the usage of {{para|maxsize}}], many templates set maxsize larger than 250px. The largest ones appear to be 325px. To be conservative, the default maxsize should set to a high value (e.g., 325px). I think, however, it would be safer not to have a default maxsize.
:— [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 10:11, 30 September 2025 (UTC)
::We should not standardize on a pixel size, per [[MOS:IMGSIZE]] ({{tq|Except with very good reason, a fixed width in pixels (e.g. 17px) should not be specified, because it ignores the user's base width setting.}}). See [[Module_talk:InfoboxImage#Help_with_improving_default_image_sizes|the discussion above]], which proposes to somehow default to the viewer's preferred thumbnail size, and [[Template_talk:Infobox_bridge/Archive_2#Image_and_map_widths|the 2022 discussion that led to the one above]]. – [[User:Jonesey95|Jonesey95]] ([[User talk:Jonesey95|talk]]) 10:44, 30 September 2025 (UTC)
:::Per {{diff|title=Module:InfoboxImage|diff=prev|oldid=1306324007|label=this recent edit}}, setting {{para|maxsize}} does not standardize on a pixel size. If we do set {{para|maxsize|250}}, then it limits {{para|size}} to 250 and limits {{para|upright}} to 1.136. px is not forced or favored in any way.
:::Also -- I just cleaned up <s>all</s> uses of {{para|sizedefault|frameless}}, so that is no longer a factor in any decision. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 13:52, 30 September 2025 (UTC)
::::Thanks for both of those. Based on the above discussion, which I had forgotten about because I got so mixed up, it looks like the sizedefault of frameless will override the maxsize as long as size= is not specified. I tested <code>sizedefault=frameless|maxsize=250</code> in my sandbox and got a 300px image, which is the same as my thumbnail preference. If I set <code>sizedefault=frameless|maxsize=250|size=100</code>, I get a 100px image. Based on that, it looks like a <s>sizedefault</s> <ins>maxsize</ins> of 250px would prevent images from getting larger than the editor's preferred thumb size unless size= is specifically set. Caveat: I might not be testing all possible cases. – [[User:Jonesey95|Jonesey95]] ([[User talk:Jonesey95|talk]]) 14:12, 30 September 2025 (UTC)
:::::To clarify: the behavior with {{para|sizedefault|frameless}} is a bug. Maybe I should fix the bug rather than cleaning up occurrences of {{para|sizedefault|frameless}}, although fixing the bug would add 3 lines of special-purpose code for that case.
:::::To see the correct behavior, if you try <code>maxsize=250</code> you should get 250px, if you try <code>upright=1|maxsize=250</code> you should get 300px, while if you try <code>upright=1.5|maxsize=250</code> you should get 340px (limited by maxsize). — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 14:44, 30 September 2025 (UTC)
::::::Yeah, now I'm confused again.
::::::*When I set <code>maxsize=250</code>, I get 250px (my thumb size is 300px, and I thought sizedefault=frameless was being set by default, so I was expecting 300px).
::::::*When I set <code>|upright=1|maxsize=200</code>, I get 270px (about 137% of maxsize, so it doesn't match maxsize or the upright setting).
::::::*When I set <code>|upright=1|maxsize=250</code>, I get 300px (my thumb size preference; this seems correct).
::::::*When I set <code>|upright=1|maxsize=300</code>, I get 300px (my thumb size preference; this seems correct).
::::::*When I set <code>|upright=1.5|maxsize=300</code>, I get 412px (about 137% of maxsize and my thumb size, so it doesn't match maxsize or the upright setting).
::::::The code I am using in a Preview window in my sandbox looks like <syntaxhighlight inline lang=wikitext>{{subst:#invoke:InfoboxImage|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|maxsize=300}}</syntaxhighlight>. Somebody please explain it to me like I'm not very smart. – [[User:Jonesey95|Jonesey95]] ([[User talk:Jonesey95|talk]]) 16:22, 30 September 2025 (UTC)
:::::::The maxsize parameter is to limit the value of the size parameter. Normally in an infobox template you would have <syntaxhighlight inline lang=wikitext>image = {{subst:#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size}}}|maxsize=300}}</syntaxhighlight> and then when used on an article with <syntaxhighlight inline lang=wikitext>{{Infobox something|image=abc.jpg|image_size=500}}</syntaxhighlight>, the image size would be limited to 300. -- [[User:WOSlinker|WOSlinker]] ([[User talk:WOSlinker|talk]]) 18:26, 30 September 2025 (UTC)
{{od|7}} To understand the behavior, see [[#Other size parameters cause upright to be ignored|the discussion above]]. The maximum size (in px) for InfoboxImage when upright is specified is (maxsize/220)*(your thumbnail preference).
:When you set maxsize=200, you are saying that the max upright is 200/220 = 0.909, which is 272px.
:When you set maxsize=250, you are saying that the max upright is 250/220 = 1.136, which is 341px. Upright=1 thus gives 300px for you.
:When you set maxsize=300, you are saying that the max upright is 300/220 = 1.364, which is 409px for you. Upright=1 thus gives 300px, but upright=1.5 gets limited to 1.364 which is 409px.
The 220 comes from the default user thumbnail size. Hope this helps. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 22:37, 30 September 2025 (UTC)
 
:[https://en.wikipedia.org/w/index.php?title=Atuwatse_I&oldid=1305079334 Here] is an example of what a default {{code|maxsize}} would help prevent… - '''[[User:Zackmann08|<span style="color:#00ced1">Zack</span><span style="color:#007F94">mann</span>]]''' (<sup>[[User_talk:Zackmann08|Talk to me]]</sup>/<sub>[[Special:Contributions/Zackmann08|<span style="color:orange;">What I been doing</span>]]</sub>) 01:06, 1 October 2025 (UTC)
::{{ping|Zackmann08}} sorry for the bad news, but that article uses {{tl|Infobox royalty}} that already has {{para|maxsize|300}}. Adding a default maxsize would do anything in this case. What this module produces with that input is <nowiki>[[File:Olu Atuwatse I Dom Domingos.jpg|300x|upright=1]]</nowiki>. The "300x" is a syntax error, so the Wiki image markup just displays the image at full resolution (which is 5286x4119px).
::We could attempt to harden the output of the module so that junk doesn't "leak through". This is separate from maxsize. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 02:46, 1 October 2025 (UTC)
:::{{ping|Hike395}} I added the {{para|maxsize|300}} {{Diff|Template:Infobox royalty|1314363626|1313895985|here}} as a result of finding that page. But good to know that maxsize wouldn’t have prevented it. {{smiley|sad}} — '''[[User:Zackmann08|<span style="color:#00ced1">Zack</span><span style="color:#007F94">mann</span>]]''' (<sup>[[User_talk:Zackmann08|Talk to me]]</sup>/<sub>[[Special:Contributions/Zackmann08|<span style="color:orange;">What I been doing</span>]]</sub>) 02:49, 1 October 2025 (UTC)
:Continuing from [[Template talk:Infobox settlement#Max size]] :) My [[Special:Preferences#mw-prefsection-rendering-files]] says 250px, and I don't remember having changed this myself.
:So the use of 220 in this module needs to be abstracted away into some sort of a variable, because it looks like this isn't making a lot of sense otherwise. --[[User:Joy|Joy]] ([[User talk:Joy|talk]]) 10:18, 17 October 2025 (UTC)
::And if [[Wikipedia:Image use policy#Displayed image size]] tells editors {{tq|Except with very good reason, do not use px [...], which forces a fixed image width measured in pixels, disregarding the user's image size preference setting.}}, then this module should also support relative sizes as well, instead of forcing this sort of pixel-based thinking from editors. --[[User:Joy|Joy]] ([[User talk:Joy|talk]]) 10:20, 17 October 2025 (UTC)
:The default thumbnail size used to be 220px but changed to 250px in April 2025. See [[Wikipedia:Tech_news/Archive_13#Tech_News:_2025-16]]. -- [[User:WOSlinker|WOSlinker]] ([[User talk:WOSlinker|talk]]) 17:59, 17 October 2025 (UTC)
===Edit request 17 October 2025===
{{FPER|answered=yes}}
Please copy the [[Module:InfoboxImage/sandbox|sandbox]] to [[Module:InfoboxImage|main]].
 
Two changes:
# (technical) --- factored out list of placeholder images and tracking categories into [[Module:InfoboxImage/data]] to neaten beginning of module
# (substantive) --- per discussion above, the systemwide default thumbnail size is now 250px. Factored this value out of existing code and turned it into constant at beginning of module. This introduces two expected "errors" into the [[Module talk:InfoboxImage/testcases|test cases]].
{{pinging|WOSlinker}} who brought this up. — [[User:Hike395|hike395]] ([[User talk:Hike395|talk]]) 02:28, 18 October 2025 (UTC)
:{{done}} -- [[User:WOSlinker|WOSlinker]] ([[User talk:WOSlinker|talk]]) 09:46, 18 October 2025 (UTC)
 
== UPDATE PROFILE IMAGE ==
 
{{edit fully-protected|Module:InfoboxImage|answered=yes}}
Please change the profile photo to the following image https://commons.wikimedia.org/wiki/File:Walter_Masterson.jpg [[User:Wikispiraling|Wikispiraling]] ([[User talk:Wikispiraling|talk]]) 23:54, 24 November 2025 (UTC)
: {{ping|Wikispiraling}} This page is for discussions concerning use and development of the module [[Module:InfoboxImage]]. I can only assume that you are intending to ask for the image you have mentioned to be put in the article [[Walter Masterson]]; if so the request belongs in the talk page of whatever article that is, not here. [[User:JBW|JBW]] ([[User talk:JBW|talk]]) 00:04, 25 November 2025 (UTC)
 
==Discussion at [[:Template talk:MergedMap]]==
[[File:Symbol watching blue lashes high contrast.svg|25px|link=|alt=]]&nbsp;You are invited to join the discussion at [[:Template talk:MergedMap]]. &#x0020;--<!-- Template:Please see --> [[User:Joy|Joy]] ([[User talk:Joy|talk]]) 12:48, 27 November 2025 (UTC)

Revision as of 19:39, 27 November 2025

Template:Permanently protected Template:Talk header User:MiszaBot/config Template:Archives

Other size parameters cause upright to be ignored

With the current implementation of this module, the upright parameter is ignored if the maxsize or sizedefault parameters are defined. This appears to be because image syntax ignores upright if a size in pixels is defined. It means that if either of those parameters are used in an infobox template (see {{Infobox bridge}} for example), then it's not possible to use the upright parameter at all in articles, which is not the intended behavior.

I don't have the Lua skills to do so, but I think the module should be rewritten so that a pixel size is not passed if the upright parameter is used and the size parameter is not. Pi.1415926535 (talk) 03:27, 30 May 2025 (UTC)

I think there are two separate cases to consider:
  1. Both |upright= and either |maxsize= or |sizedefault= are specified
  2. Both |upright= and |size= are specified
In the first case, I think the current module behavior is likely incorrect -- the caller specified a size via |upright= and it's being handled as if no size was specified. The second case is less clear, because conflicting sizes are being provided. I'm reluctant to change the current behavior for the second case, because there may be unintended consequences to the 5M articles that use this module.
Of course, fixing the incorrect behavior also may have unintended consequences, also, so we should be careful. For example, the proposed behavior now allows people to set absurd values to |upright= and there is no check or limit.
I've modified the sandbox to fix the first issue, and updated the tests to exercise the new code. Template:Pinging to see if they have any comments on the change: other editors are also welcome to comment. — hike395 (talk) 09:17, 30 May 2025 (UTC)
Later: I added some logic to ensure that |upright= doesn't produce an image larger than |maxsize=, assuming the default user preference. This fixes one potential issue. Updated sandbox and testcases. I'm hoping some other templateeditor or admin takes a look at the diff. — hike395 (talk) 10:01, 30 May 2025 (UTC)
@Hike395: Thanks for looking into this! Just to clarify - will this still allow an image scaled with upright to be larger than maxsize if the user preference is set to a larger-than-default value? That seems important for accessibility reasons. Pi.1415926535 (talk) 16:09, 30 May 2025 (UTC)
Yes: if upright is specified, then maxsize will scale with the user's default image size. So if maxsize=300, and the user's preferred thumbnail size is set to 300px, then the output image will be limited to be less than 300*300/220 = 409px for that user. There's no way to avoid this. — hike395 (talk) 00:39, 31 May 2025 (UTC)
Great, that is the behavior I believe it should have. Pi.1415926535 (talk) 00:45, 31 May 2025 (UTC)
To the original observation Template:Tq: this is expected behaviour, and is documented at WP:PICSIZE, inside the "Implementation details" box (direct link), last paragraph. --Redrose64 🌹 (talk) 13:39, 31 May 2025 (UTC)
Template:Ping Picking this back up. My sandbox edits do not contradict WP:PICSIZE. If a absolute size and an upright are both specified, then the absolute size is used. What I did was scale maxsize and sizedefault relative to the user preferred image size. Those two parameters are only defined in this module: WP:PICSIZE does not discuss them.
Is it ok to promote the sandbox to main? I see that since this edit, Pi.14 has removed maxsize and sizedefault from a number of infoboxes. It would be good to restore those, if I can promote sandbox to main. — hike395 (talk) 08:48, 5 August 2025 (UTC)
Template:Ping Any comments or thoughts before I propose this as an edit? Template:U just fully protected this Module, so I can no longer edit it, so even a simple support/agree would be helpful. — hike395 (talk) 14:46, 12 August 2025 (UTC)
To be clear, my full protection was completely unrelated to this dispute, which I didn't even know existed; if you look at my edits at the time I adjusted the protection level of hundreds of templates. * Pppery * it has begun... 17:35, 12 August 2025 (UTC)
If I'm understanding correctly what your edit does, I support it. I'm confused about your statement Template:Tq - to my knowledge, I haven't edited any infobox templates to remove these. Pi.1415926535 (talk) 05:12, 13 August 2025 (UTC)
Template:Ping apologies. I didn't mean to imply causation here -- I just wanted to point out that I can no longer edit the template directly.
Template:Ping more apologies. I recall seeing edits to infoboxes which removed maxsize and sizedefault, but now I cannot find them to check who did them. — hike395 (talk) 12:33, 13 August 2025 (UTC)

Edit request

Template:FPER Please copy Module:InfoboxImage/sandbox to Module:InfoboxImage

This is a change in handling the case where |upright= and either |maxsize= or |sizedefault= is specified. In this case, the sandbox version obeys |upright=, but if it exceeds maxsize/220, then it is set to maxsize/220. The current behavior is to ignore |upright= when either |maxsize= or |sizedefault= is specified, which is incorrect.

This edit does not change any behavior if |upright= is not specified. Also, if |size= and |upright= are both specified, the behavior remains unchanged: |size= is obeyed in that case.

Are you sure that this description is correct? On the testcases page, I am seeing the Mustela image with
upright=1.5|sizedefault=272|maxsize=300
. The live module renders the image at 1.5x my thumbnail size. The sandbox image is rendered at 272px. This seems to be the opposite of the description above, if I am reading it correctly. It also seems to be a fix that helps the module to match normal image rendering (px is preferred over upright). Is this what you want? – Jonesey95 (talk) 17:01, 15 August 2025 (UTC)
You may be interpreting the unit tests backward? Here are the results when main and sandbox are called with the case that you are highlighting:
{{subst:#invoke:InfoboxImage|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|sizedefault=272|maxsize=300}}

File:Mustela erminea upright.jpg

{{subst:#invoke:InfoboxImage/sandbox|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|sizedefault=272|maxsize=300}}

File:Mustela erminea upright.jpg

Here, the main module is generating a pic with size=272px, while the sandbox module is generating a pic with upright=1 (rendered at your preferred size). So the logic is correct.
The logic has not changed when both size and upright are specified. They are both emitted and MediaWiki prefers size over upright:
{{subst:#invoke:InfoboxImage|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|size=200}}

File:Mustela erminea upright.jpg

{{subst:#invoke:InfoboxImage/sandbox|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|size=200}}

File:Mustela erminea upright.jpg

hike395 (talk) 17:18, 15 August 2025 (UTC)
Indeed, I do not understand what "Expected" and "Actual" refer to on that page. I'm used to seeing the live template followed by the sandbox, with appropriate headers to match. In that case, and based on the apparent consensus above, I have no objections. It looks like this change will require an administrator, which I am not. – Jonesey95 (talk) 17:25, 15 August 2025 (UTC)
Template:Ping Do you object to this request? * Pppery * it has begun... 19:48, 15 August 2025 (UTC)
I'm not a Lua expert, and have never claimed to be. --Redrose64 🌹 (talk) 22:18, 16 August 2025 (UTC)

Template:Done * Pppery * it has begun... 04:35, 17 August 2025 (UTC)

Default maxsize to 250px

I’ve recently been coming across a lot of Infoboxes with substatially large images in their infoboxes. 300-400px in size. Can we modify this module to default to a Template:Code of 250px? If for some reason a particular infobox wants to override that, that’s another matter, but that way we can at least cut down on the number of large images? If there is no objection to this change, I’m happy to write the code in the sandbox and do a formal edit request. Zackmann (Talk to me/What I been doing) 07:37, 30 September 2025 (UTC)

A few comments:
  1. I would be extremely cautious about setting defaults in this template. It's used on 5M pages and in system messages. The probability of unintended consequences is high.
  2. Looking at the usage of |sizedefault=, I see many templates use |sizedefault=frameless. With the current code, such a default will ignore maxsize.
  3. Looking at the usage of |maxsize=, many templates set maxsize larger than 250px. The largest ones appear to be 325px. To be conservative, the default maxsize should set to a high value (e.g., 325px). I think, however, it would be safer not to have a default maxsize.
hike395 (talk) 10:11, 30 September 2025 (UTC)
We should not standardize on a pixel size, per MOS:IMGSIZE (Template:Tq). See the discussion above, which proposes to somehow default to the viewer's preferred thumbnail size, and the 2022 discussion that led to the one above. – Jonesey95 (talk) 10:44, 30 September 2025 (UTC)
Per Template:Diff, setting |maxsize= does not standardize on a pixel size. If we do set |maxsize=250, then it limits |size= to 250 and limits |upright= to 1.136. px is not forced or favored in any way.
Also -- I just cleaned up all uses of |sizedefault=frameless, so that is no longer a factor in any decision. — hike395 (talk) 13:52, 30 September 2025 (UTC)
Thanks for both of those. Based on the above discussion, which I had forgotten about because I got so mixed up, it looks like the sizedefault of frameless will override the maxsize as long as size= is not specified. I tested sizedefault=frameless|maxsize=250 in my sandbox and got a 300px image, which is the same as my thumbnail preference. If I set sizedefault=frameless|maxsize=250|size=100, I get a 100px image. Based on that, it looks like a sizedefault maxsize of 250px would prevent images from getting larger than the editor's preferred thumb size unless size= is specifically set. Caveat: I might not be testing all possible cases. – Jonesey95 (talk) 14:12, 30 September 2025 (UTC)
To clarify: the behavior with |sizedefault=frameless is a bug. Maybe I should fix the bug rather than cleaning up occurrences of |sizedefault=frameless, although fixing the bug would add 3 lines of special-purpose code for that case.
To see the correct behavior, if you try maxsize=250 you should get 250px, if you try upright=1|maxsize=250 you should get 300px, while if you try upright=1.5|maxsize=250 you should get 340px (limited by maxsize). — hike395 (talk) 14:44, 30 September 2025 (UTC)
Yeah, now I'm confused again.
  • When I set maxsize=250, I get 250px (my thumb size is 300px, and I thought sizedefault=frameless was being set by default, so I was expecting 300px).
  • When I set |upright=1|maxsize=200, I get 270px (about 137% of maxsize, so it doesn't match maxsize or the upright setting).
  • When I set |upright=1|maxsize=250, I get 300px (my thumb size preference; this seems correct).
  • When I set |upright=1|maxsize=300, I get 300px (my thumb size preference; this seems correct).
  • When I set |upright=1.5|maxsize=300, I get 412px (about 137% of maxsize and my thumb size, so it doesn't match maxsize or the upright setting).
The code I am using in a Preview window in my sandbox looks like {{subst:#invoke:InfoboxImage|InfoboxImage|image=Mustela erminea upright.jpg |upright=1|maxsize=300}}. Somebody please explain it to me like I'm not very smart. – Jonesey95 (talk) 16:22, 30 September 2025 (UTC)
The maxsize parameter is to limit the value of the size parameter. Normally in an infobox template you would have image = {{subst:#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size}}}|maxsize=300}} and then when used on an article with {{Infobox something|image=abc.jpg|image_size=500}}, the image size would be limited to 300. -- WOSlinker (talk) 18:26, 30 September 2025 (UTC)

Template:Od To understand the behavior, see the discussion above. The maximum size (in px) for InfoboxImage when upright is specified is (maxsize/220)*(your thumbnail preference).

When you set maxsize=200, you are saying that the max upright is 200/220 = 0.909, which is 272px.
When you set maxsize=250, you are saying that the max upright is 250/220 = 1.136, which is 341px. Upright=1 thus gives 300px for you.
When you set maxsize=300, you are saying that the max upright is 300/220 = 1.364, which is 409px for you. Upright=1 thus gives 300px, but upright=1.5 gets limited to 1.364 which is 409px.

The 220 comes from the default user thumbnail size. Hope this helps. — hike395 (talk) 22:37, 30 September 2025 (UTC)

Here is an example of what a default Template:Code would help prevent… - Zackmann (Talk to me/What I been doing) 01:06, 1 October 2025 (UTC)
Template:Ping sorry for the bad news, but that article uses {{Infobox royalty}} that already has |maxsize=300. Adding a default maxsize would do anything in this case. What this module produces with that input is [[File:Olu Atuwatse I Dom Domingos.jpg|300x|upright=1]]. The "300x" is a syntax error, so the Wiki image markup just displays the image at full resolution (which is 5286x4119px).
We could attempt to harden the output of the module so that junk doesn't "leak through". This is separate from maxsize. — hike395 (talk) 02:46, 1 October 2025 (UTC)
Template:Ping I added the |maxsize=300 Template:Diff as a result of finding that page. But good to know that maxsize wouldn’t have prevented it. Template:SmileyZackmann (Talk to me/What I been doing) 02:49, 1 October 2025 (UTC)
Continuing from Template talk:Infobox settlement#Max size :) My Special:Preferences#mw-prefsection-rendering-files says 250px, and I don't remember having changed this myself.
So the use of 220 in this module needs to be abstracted away into some sort of a variable, because it looks like this isn't making a lot of sense otherwise. --Joy (talk) 10:18, 17 October 2025 (UTC)
And if Wikipedia:Image use policy#Displayed image size tells editors Template:Tq, then this module should also support relative sizes as well, instead of forcing this sort of pixel-based thinking from editors. --Joy (talk) 10:20, 17 October 2025 (UTC)
The default thumbnail size used to be 220px but changed to 250px in April 2025. See Wikipedia:Tech_news/Archive_13#Tech_News:_2025-16. -- WOSlinker (talk) 17:59, 17 October 2025 (UTC)

Edit request 17 October 2025

Template:FPER Please copy the sandbox to main.

Two changes:

  1. (technical) --- factored out list of placeholder images and tracking categories into Module:InfoboxImage/data to neaten beginning of module
  2. (substantive) --- per discussion above, the systemwide default thumbnail size is now 250px. Factored this value out of existing code and turned it into constant at beginning of module. This introduces two expected "errors" into the test cases.

Template:Pinging who brought this up. — hike395 (talk) 02:28, 18 October 2025 (UTC)

Template:Done -- WOSlinker (talk) 09:46, 18 October 2025 (UTC)

UPDATE PROFILE IMAGE

Template:Edit fully-protected Please change the profile photo to the following image https://commons.wikimedia.org/wiki/File:Walter_Masterson.jpg Wikispiraling (talk) 23:54, 24 November 2025 (UTC)

Template:Ping This page is for discussions concerning use and development of the module Module:InfoboxImage. I can only assume that you are intending to ask for the image you have mentioned to be put in the article Walter Masterson; if so the request belongs in the talk page of whatever article that is, not here. JBW (talk) 00:04, 25 November 2025 (UTC)

Discussion at Template talk:MergedMap

File:Symbol watching blue lashes high contrast.svg You are invited to join the discussion at Template talk:MergedMap. -- Joy (talk) 12:48, 27 November 2025 (UTC)