Wikiphidiya nrwiki https://nr.wikipedia.org/wiki/Main_Page MediaWiki 1.47.0-wmf.5 first-letter Iinrhatjhi Khethekileko Asiqongelane Umsebenzisi Umsebenzisi asiqongelane Wikiphidiya Wikiphidiya asiqongelane Isimumathi Isimumathi asiqongelane MediaWiki MediaWiki asiqongelane Umhlahlandlelasakhiwo Umhlahlandlelasakhiwo asiqongelane Lisizo Lisizo asiqongelane Mkhakha Mkhakha asiqongelane TimedText TimedText talk Module Module talk Event Event talk I-Mkhombo Nature Reserve 0 937 6668 5688 2026-06-07T15:08:34Z Derek J Moore 148 Added 6668 wikitext text/x-wiki {{Infobox park | name = I-Mkhombo Nature Reserve | image = Mkhombodam, waadvoëls aan oewer, a.jpg | image_size = | image_alt = | image_caption = | type = | location = [[Mpumalanga]], [[South Africa]] | coordinates = {{coord|-25.114|28.825|type:forest|display=inline,title}} | area = | created = <!-- {{Start date|YYYY}} --> | operator = | visitation_num = | status = }} '''Mkhombo Nature Reserve''' yindawo evikelweko e [[Isifunda seMpumalanga|-Mpumalanga]], [[Isewula Afrika|eSewula Afrika]]. Yindawo ekulu, eyi-11,223 ha elondoloza ibhoduluko elisempumalanga ye-Kalahari eduze nedamu le-Mkhombo. Indawo yokugcina indawo inendawo ejwayelekileko yotjani ephakemeko enethiwekhi yamaxhaphozi kanye namadwala aphumako.<ref>[https://www.mpumalanga.com/our-provincial-parks/mkhombo-nature-reserve Mkhombo Nature Reserve - Mpumalanga]</ref> Indawo yokugcina imvelo yaziwa ngokuphila kwayo kweenyoni. Hlangana nemihlobo yeenlwana ezivela endaweni le kune- reed cormorant, I-African yellow-billed hornbill, I-African grey hornbill, I-white-breasted cormorant, I-little swift, I- hamerkop, I-red-winged starling, I- pectoral sandpiper, I-grey plover, I -barred wren-warble, ne- wailwarta yellow.<ref>[[:en:Southern_yellow-billed_hornbill|Southern yellow-billed hornbill - Wikipedia]]</ref> Yindawo evame ukuvakatjhelwa ziimvakatjhi ezivela ephasini loke. Imihlobo yeenlwana ezitholakala endaweni le ifakahlangana iindlovu, amabhubezi, iingwe, iindlovu, iinyathi, ubhejane, iimvubu, kanye nemihlobo eminengi yama-antelope. == Umthombolwazi == {{Reflist}} 85vrqbdqjdv8wseblu4v53wj0ozabkv 6670 6668 2026-06-07T15:19:18Z Derek J Moore 148 Added an image. Not sure what module is in vernacular 6670 wikitext text/x-wiki [[File:3-banded plover last weekend at Mkhombo Dam (36902155813).jpg|3-banded plover last weekend at Mkhombo Dam (36902155813)]] '''Mkhombo Nature Reserve''' yindawo evikelweko e [[Isifunda seMpumalanga|-Mpumalanga]], [[Isewula Afrika|eSewula Afrika]]. Yindawo ekulu, eyi-11,223 ha elondoloza ibhoduluko elisempumalanga ye-Kalahari eduze nedamu le-Mkhombo. Indawo yokugcina indawo inendawo ejwayelekileko yotjani ephakemeko enethiwekhi yamaxhaphozi kanye namadwala aphumako.<ref>[https://www.mpumalanga.com/our-provincial-parks/mkhombo-nature-reserve Mkhombo Nature Reserve - Mpumalanga]</ref> Indawo yokugcina imvelo yaziwa ngokuphila kwayo kweenyoni. Hlangana nemihlobo yeenlwana ezivela endaweni le kune- reed cormorant, I-African yellow-billed hornbill, I-African grey hornbill, I-white-breasted cormorant, I-little swift, I- hamerkop, I-red-winged starling, I- pectoral sandpiper, I-grey plover, I -barred wren-warble, ne- wailwarta yellow.<ref>[[:en:Southern_yellow-billed_hornbill|Southern yellow-billed hornbill - Wikipedia]]</ref> Yindawo evame ukuvakatjhelwa ziimvakatjhi ezivela ephasini loke. Imihlobo yeenlwana ezitholakala endaweni le ifakahlangana iindlovu, amabhubezi, iingwe, iindlovu, iinyathi, ubhejane, iimvubu, kanye nemihlobo eminengi yama-antelope. == Umthombolwazi == {{Reflist}} 4afk8xp99bem31b23n72vxj1x1lq9xv 6671 6670 2026-06-07T15:19:54Z Derek J Moore 148 Try again 6671 wikitext text/x-wiki [[File:3-banded plover last weekend at Mkhombo Dam (36902155813).jpg|thumb|3-banded plover last weekend at Mkhombo Dam (36902155813)]] '''Mkhombo Nature Reserve''' yindawo evikelweko e [[Isifunda seMpumalanga|-Mpumalanga]], [[Isewula Afrika|eSewula Afrika]]. Yindawo ekulu, eyi-11,223 ha elondoloza ibhoduluko elisempumalanga ye-Kalahari eduze nedamu le-Mkhombo. Indawo yokugcina indawo inendawo ejwayelekileko yotjani ephakemeko enethiwekhi yamaxhaphozi kanye namadwala aphumako.<ref>[https://www.mpumalanga.com/our-provincial-parks/mkhombo-nature-reserve Mkhombo Nature Reserve - Mpumalanga]</ref> Indawo yokugcina imvelo yaziwa ngokuphila kwayo kweenyoni. Hlangana nemihlobo yeenlwana ezivela endaweni le kune- reed cormorant, I-African yellow-billed hornbill, I-African grey hornbill, I-white-breasted cormorant, I-little swift, I- hamerkop, I-red-winged starling, I- pectoral sandpiper, I-grey plover, I -barred wren-warble, ne- wailwarta yellow.<ref>[[:en:Southern_yellow-billed_hornbill|Southern yellow-billed hornbill - Wikipedia]]</ref> Yindawo evame ukuvakatjhelwa ziimvakatjhi ezivela ephasini loke. Imihlobo yeenlwana ezitholakala endaweni le ifakahlangana iindlovu, amabhubezi, iingwe, iindlovu, iinyathi, ubhejane, iimvubu, kanye nemihlobo eminengi yama-antelope. == Umthombolwazi == {{Reflist}} qekt1m93mgclu7b80j5lr12gkx6kinr 6672 6671 2026-06-07T15:23:54Z Derek J Moore 148 Added 6672 wikitext text/x-wiki {{multiple image | border = infobox | perrow = 1/2/2/1 | total_width = 290 | align = center | caption_align = center |image1 = 3-banded plover last weekend at Mkhombo Dam (36902155813).jpg | caption1 = | image2 = | caption2 = |image3 = | caption3 = | image4 = | caption4 = }} '''Mkhombo Nature Reserve''' yindawo evikelweko e [[Isifunda seMpumalanga|-Mpumalanga]], [[Isewula Afrika|eSewula Afrika]]. Yindawo ekulu, eyi-11,223 ha elondoloza ibhoduluko elisempumalanga ye-Kalahari eduze nedamu le-Mkhombo. Indawo yokugcina indawo inendawo ejwayelekileko yotjani ephakemeko enethiwekhi yamaxhaphozi kanye namadwala aphumako.<ref>[https://www.mpumalanga.com/our-provincial-parks/mkhombo-nature-reserve Mkhombo Nature Reserve - Mpumalanga]</ref> Indawo yokugcina imvelo yaziwa ngokuphila kwayo kweenyoni. Hlangana nemihlobo yeenlwana ezivela endaweni le kune- reed cormorant, I-African yellow-billed hornbill, I-African grey hornbill, I-white-breasted cormorant, I-little swift, I- hamerkop, I-red-winged starling, I- pectoral sandpiper, I-grey plover, I -barred wren-warble, ne- wailwarta yellow.<ref>[[:en:Southern_yellow-billed_hornbill|Southern yellow-billed hornbill - Wikipedia]]</ref> Yindawo evame ukuvakatjhelwa ziimvakatjhi ezivela ephasini loke. Imihlobo yeenlwana ezitholakala endaweni le ifakahlangana iindlovu, amabhubezi, iingwe, iindlovu, iinyathi, ubhejane, iimvubu, kanye nemihlobo eminengi yama-antelope. == Umthombolwazi == {{Reflist}} 2fpt9t6lwr17t7ajeu0itlutmasw64u 6677 6672 2026-06-07T15:39:52Z Derek J Moore 148 6677 wikitext text/x-wiki '''Mkhombo Nature Reserve''' yindawo evikelweko e [[Isifunda seMpumalanga|-Mpumalanga]], [[Isewula Afrika|eSewula Afrika]]. Yindawo ekulu, eyi-11,223 ha elondoloza ibhoduluko elisempumalanga ye-Kalahari eduze nedamu le-Mkhombo. Indawo yokugcina indawo inendawo ejwayelekileko yotjani ephakemeko enethiwekhi yamaxhaphozi kanye namadwala aphumako.<ref>[https://www.mpumalanga.com/our-provincial-parks/mkhombo-nature-reserve Mkhombo Nature Reserve - Mpumalanga]</ref> Indawo yokugcina imvelo yaziwa ngokuphila kwayo kweenyoni. Hlangana nemihlobo yeenlwana ezivela endaweni le kune- reed cormorant, I-African yellow-billed hornbill, I-African grey hornbill, I-white-breasted cormorant, I-little swift, I- hamerkop, I-red-winged starling, I- pectoral sandpiper, I-grey plover, I -barred wren-warble, ne- wailwarta yellow.<ref>[[:en:Southern_yellow-billed_hornbill|Southern yellow-billed hornbill - Wikipedia]]</ref> Yindawo evame ukuvakatjhelwa ziimvakatjhi ezivela ephasini loke. Imihlobo yeenlwana ezitholakala endaweni le ifakahlangana iindlovu, amabhubezi, iingwe, iindlovu, iinyathi, ubhejane, iimvubu, kanye nemihlobo eminengi yama-antelope. == Umthombolwazi == {{Reflist}} gguzi4xf8urmz53njyhrapnvet6k2zz Umhlahlandlelasakhiwo:Infobox park 10 1186 6669 2026-06-07T15:11:48Z Derek J Moore 148 Opened 6669 wikitext text/x-wiki {{infobox | bodyclass = vcard | child = {{#if:{{{child|}}}{{{embed|}}}|yes}} | title = {{#if:{{{child|}}}{{{embed|}}}|{{{title|}}}}} | aboveclass = fn org | abovestyle = background-color: #abdb75; color:inherit; line-height: 140%; | above = {{if empty|{{{name|}}}|{{PAGENAMEBASE}} }} | subheaderstyle = font-size: 110% | subheader = {{{other_name|}}} | subheader2 = {{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<span class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</span>}}}} | image1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logo_size|}}}|upright={{{logo_upright|}}}|alt={{{logo_alt|}}}}} | caption1 = {{{logo_caption|}}} | image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{#switch:{{{image_size|}}} | frameless = frameless | upright = frameless | {{{image_size|}}} }}|upright={{#ifeq:{{{image_size|}}}|upright|0.75|{{{upright|}}} }}|sizedefault=250px|maxsize=325px|alt={{{image_alt|}}} }} | caption2 = {{{image_caption|}}} | image3 = {{#if:{{{map|}}} | {{Location map|{{{map}}} | border = infobox | float = center | alt = {{{map_alt|}}} | width = {{{map_size|}}} | default_width = 250 | max_width = 272 | caption = {{{map_caption|}}} | relief = {{{relief|}}} | label = {{{map_label|}}} | position = {{{map_label_position|}}} | mark = {{{mark|}}} | marksize = {{{mark_width|}}} | coordinates = {{{coordinates|}}} }} | {{#invoke:InfoboxImage|InfoboxImage|image={{{map_image|}}}|size={{{map_size|}}}|sizedefault=250px|maxsize=272px|alt={{{map_alt|}}}}} }} | caption3 = {{#if:{{{map|}}} || {{{map_caption|}}} }} | image4 = {{#invoke:Infobox mapframe | autoWithCaption | onByDefault = {{#if:{{{map|}}}{{{map_image|}}}{{{child|}}}{{{embed|}}}|no|yes}} | mapframe-marker = park | mapframe-marker-color = #abdb75 | mapframe-frame-width = 250 | mapframe-wikidata = yes | mapframe-caption = Interactive map of {{if empty|{{{name|}}}|{{PAGENAMEBASE}}}} }} | rowclass2 = category | label2 = Type | data2 = {{{type|}}} | label3 = Motto | data3 = {{{motto|}}} | rowclass4 = label | label4 = Location | data4 = {{{location|}}} | label5 = Nearest&nbsp;city | data5 = {{{nearest_city|}}} | label6 = Nearest&nbsp;town | data6 = {{{nearest_town|}}} | label7 = [[Ordnance Survey National Grid|OS grid]] | data7 = {{#if:{{{grid_ref_UK|}}}|{{gbm4ibx|{{{grid_ref_UK|}}}|name={{if empty|{{{name|}}}|{{PAGENAMEBASE}}}} }}{{{grid_ref_UK_note|}}}}} | label8 = [[Irish grid reference system|OSI/OSNI grid]] | data8 = {{#if:{{{grid_ref_Ireland|}}}|{{iem4ibx|{{{grid_ref_Ireland|}}}|name={{if empty|{{{name|}}}|{{PAGENAMEBASE}}}} }}{{{grid_ref_Ireland_note|}}}}} | label9 = Coordinates | data9 = {{#if:{{{coordinates|}}}|{{#invoke:Coordinates|coordinsert|{{{coordinates|}}}|type:landmark}}{{{coords_ref|}}}}} | rowclass10 = note | label10 = Area | data10 = {{{area|}}} | label11 = Elevation | data11 = {{{elevation|}}} | label12 = Authorized | data12 = {{{authorized|}}} | label13 = Created | data13 = {{{created|}}} | label14 = Established | data14 = {{{established|}}} | label15 = Designated | data15 = {{{designated|}}} | label16 = {{#if:{{{opening|}}}|Opening|Opened}} | data16 = {{if empty|{{{opening|}}}|{{{opened|}}}}} | label17 = Closed | data17 = {{{closed|}}} | label18 = Founder | data18 = {{{founder|}}} | label19 = Designer | data19 = {{{designer|}}} | label20 = Etymology | data20 = {{{etymology|}}} | label21 = Owner | data21 = {{{owner|}}} | label22 = Administrator | data22 = {{{administrator|}}} | label23 = Manager | data23 = {{{manager|}}} | label24 = Operator | data24 = {{{operator|}}} | label25 = Visitors | data25 = {{#if:{{{visitation_num|}}}|{{{visitation_num|}}}<!-- -->{{#if:{{{visitation_year|}}}|{{sp}}(in&nbsp;{{{visitation_year|}}})}}{{{visitation_ref|}}}}} | label26 = Open | data26 = {{{open|}}} | rowclass27 = category | label27 = Status | data27 = {{{status|}}} | label28 = Awards | data28 = {{{awards|}}} | label29 = Camp sites | data29 = {{{camp_sites|}}} | label30 = Hiking trails | data30 = {{{hiking_trails|}}} | label31 = Paths | data31 = {{{paths|}}} | label32 = Terrain | data32 = {{{terrain|}}} | label33 = Habitats | data33 = {{{habitat|}}} | label34 = Water | data34 = {{{water|}}} | label35 = Vegetation | data35 = {{{vegetation|}}} | label36 = Plants | data36 = {{{plants|}}} | label37 = Species | data37 = {{{species|}}} | label38 = Collections | data38 = {{{collections|}}} | label39 = Designation | data39 = {{{designation|}}} | label40 = Threatened&nbsp;by | data40 = {{{disturbance|}}} | label41 = Budget | data41 = {{{budget|}}} | label42 = Parking | data42 = {{{parking|}}} | label43 = {{longitem|Public transit}} | data43 = {{{public_transit|}}} | label44 = {{{free_label|}}} | class44 = note | data44 = {{{free_data|}}} | label45 = Facilities | data45 = {{{facilities|}}} | label46 = Other information | data46 = {{{other_info|}}} | label47 = Website | data47 = {{{website|}}} | data48 = {{{embedded|}}} | data49 = {{{module|}}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox park with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox park]] with unknown parameter "_VALUE_"|ignoreblank=y|mapframe_args=y| administrator | area | authorized | awards | budget | camp_sites | child | closed | collections | coordinates | coords_ref | created | designated | designation | designer | disturbance | elevation | embed | embedded | established | etymology | facilities | founder | free_data | free_label | grid_ref_Ireland | grid_ref_Ireland_note | grid_ref_UK | grid_ref_UK_note | habitat | hiking_trails | image | image_alt | image_caption | image_size | location | logo | logo_alt | logo_caption | logo_size | logo_upright | manager | map | map_alt | map_caption | map_image | map_label | map_label_position | map_size | mark | mark_width | module | motto | name | native_name | native_name_lang | nearest_city | nearest_town | open | opened | opening | operator | other_info | other_name | owner | parking | paths | plants | public_transit | relief | species | status | terrain | title | type | upright | vegetation | visitation_num | visitation_ref | visitation_year | water | website }}{{#invoke:Check for conflicting parameters|check | template = [[Template:Infobox park]] | cat = {{main other|Category:Pages using infobox park with conflicting parameters}} | opening; opened }}<noinclude> {{documentation}} </noinclude> khu1j3y32l41rzuhj5v9dxf58qo7e7u Umhlahlandlelasakhiwo:Multiple image 10 1187 6673 2026-06-07T15:26:39Z Derek J Moore 148 Added module 6673 wikitext text/x-wiki {{#invoke:Multiple image|render}} mhbfjolvpdsccetk1h3jn96slzgx5vc Module:Multiple image 828 1188 6674 2026-06-07T15:31:07Z Derek J Moore 148 Let’s try 6674 Scribunto text/plain -- implements [[template:multiple image]] local p = {} local autoscaledimages local nonautoscaledimages local function isnotempty(s) return s and s:match( '^%s*(.-)%s*$' ) ~= '' end local function removepx(s) return tostring(s or ''):match('^(.*)[Pp][Xx]%s*$') or s end local function getdimensions(s, w, h) if tonumber(w) and tonumber(h) then nonautoscaledimages = true return tonumber(w), tonumber(h) end local file = s and mw.title.new('File:' .. mw.uri.decode(mw.ustring.gsub(s,'%|.*$',''), 'WIKI')) file = file and file.file or {width = 0, height = 0} w = tonumber(file.width) or 0 h = tonumber(file.height) or 0 autoscaledimages = true return w, h end local function renderImageCell(image, width, height, link, alt, thumbtime, caption, class, textalign, istyle, border, tcolor) local root = mw.html.create('') local altstr = '' local classstr = class and ('|class=' .. class) or '' local linkstr = link and ('|link=' .. link) or '' local widthstr = '|' .. tostring(width) .. 'px' local thumbtimestr = '' if isnotempty( alt ) then altstr = '|alt=' .. alt end if widthstr == '|-nanpx' then widthstr = '' end if isnotempty( thumbtime ) then thumbtimestr = '|thumbtime=' .. thumbtime end local imagediv = root:tag('div') imagediv:addClass((border ~= 'infobox') and 'thumbimage' or nil) imagediv:cssText(istyle) if( height ) then imagediv:css('height', tostring(height) .. 'px') imagediv:css('overflow', 'hidden') end imagediv:wikitext('[[file:' .. image .. classstr .. widthstr .. linkstr .. altstr .. thumbtimestr .. ']]') if isnotempty(caption) then local captiondiv = root:tag('div') captiondiv:addClass((border ~= 'infobox') and 'thumbcaption' or nil) if isnotempty(textalign) then captiondiv:addClass('text-align-' .. textalign) end if( tcolor ~= '' ) then captiondiv:css('color', tcolor) end captiondiv:wikitext(caption) end return tostring(root) end local function getWidth(w1, w2) local w if isnotempty(w1) then w = tonumber(w1) elseif isnotempty(w2) then w = tonumber(w2) end return w or 200 end local function getPerRow(pstr, ic) -- split string into array using any non-digit as a dilimiter local pr = mw.text.split(pstr or '', '[^%d][^%d]*') -- if split failed, assume a single row if (#pr < 1) then pr = {tostring(ic)} end -- convert the array of strings to an array of numbers, -- adding any implied/missing numbers at the end of the array local r = 1 local thisrow = tonumber(pr[1] or ic) or ic local prownum = {} while( ic > 0 ) do prownum[r] = thisrow ic = ic - thisrow r = r + 1 -- use the previous if the next is missing and -- make sure we don't overstep the number of images thisrow = math.min(tonumber(pr[r] or thisrow) or ic, ic) end return prownum end local function renderMultipleImages(frame) local pargs = frame:getParent().args local args = frame.args local width = removepx(pargs['width'] or '') local dir = pargs['direction'] or '' local border = pargs['border'] or args['border'] or '' local align = pargs['align'] or args['align'] or (border == 'infobox' and 'center' or '') local capalign = pargs['caption_align'] or args['caption_align'] or '' local totalwidth = removepx(pargs['total_width'] or args['total_width'] or '') local imgstyle = pargs['image_style'] or args['image_style'] local header = pargs['header'] or pargs['title'] or '' local footer = pargs['footer'] or '' local imagegap = tonumber(pargs['image_gap'] or '1') or 1 local perrow = nil local thumbclass = { ["left"] = 'floatleft', ["none"] = 'tnone', ["center"] = 'tnone', ["centre"] = 'tnone', ["right"] = 'floatright' } -- find all the nonempty images local imagenumbers = {} local imagecount = 0 for k, v in pairs( pargs ) do local i = tonumber(tostring(k):match( '^%s*image([%d]+)%s*$' ) or '0') if( i > 0 and isnotempty(v) ) then table.insert( imagenumbers, i) imagecount = imagecount + 1 end end -- sort the imagenumbers table.sort(imagenumbers) -- create an array with the number of images per row perrow = getPerRow(dir == 'vertical' and '1' or pargs['perrow'], imagecount) -- compute the number of rows local rowcount = #perrow -- store the image widths and compute row widths and maximum row width local heights = {} local widths = {} local widthmax = 0 local widthsum = {} local k = 0 for r=1,rowcount do widthsum[r] = 0 for c=1,perrow[r] do k = k + 1 if( k <= imagecount ) then local i = imagenumbers[k] if( isnotempty(totalwidth) ) then widths[k], heights[k] = getdimensions(pargs['image' .. i], pargs['width' .. i], pargs['height' .. i]) else widths[k] = getWidth(width, pargs['width' .. i]) end widthsum[r] = widthsum[r] + widths[k] end end widthmax = math.max(widthmax, widthsum[r]) end -- make sure the gap is non-negative if imagegap < 0 then imagegap = 0 end -- if total_width has been specified, rescale the image widths if( isnotempty(totalwidth) ) then totalwidth = tonumber(totalwidth) widthmax = 0 local k = 0 for r=1,rowcount do local koffset = k local tw = totalwidth - (3 + imagegap) * (perrow[r] - 1) - 12 local ar = {} local arsum = 0 for j=1,perrow[r] do k = k + 1 if( k<= imagecount ) then local i = imagenumbers[k] local h = heights[k] or 0 if (h > 0) then ar[j] = widths[k]/h heights[k] = h else ar[j] = widths[k]/100 end arsum = arsum + ar[j] end end local ht = tw/arsum local ws = 0 k = koffset for j=1,perrow[r] do k = k + 1 if( k<= imagecount ) then local i = imagenumbers[k] widths[k] = math.floor(ar[j]*ht + 0.5) ws = ws + widths[k] if heights[k] then heights[k] = math.floor(ht) end end end widthsum[r] = ws widthmax = math.max(widthmax, widthsum[r]) end end -- start building the array of images, if there are images if( imagecount > 0 ) then -- compute width of outer div local bodywidth = 0 for r=1,rowcount do if( widthmax == widthsum[r] ) then bodywidth = widthmax + (3 + imagegap) * (perrow[r] - 1) + 12 end end -- The body has a min-width of 100, which needs to be taken into account on specific widths bodywidth = math.max( 100, bodywidth - 8); local tc = pargs['color'] or pargs['text_color'] or '' local bg = pargs['bg_color'] or pargs['background_color'] or pargs['background color'] or '' -- create the array of images local root = mw.html.create('div') root:addClass('thumb') root:addClass('tmulti') -- root:addClass('tmulti-sandbox') root:addClass(thumbclass[align] or 'floatright') if( align == 'center' or align == 'centre' ) then root:addClass('center') end if( tc ~= '' ) then root:css('color', tc) end local div = root:tag('div') div:addClass((border ~= 'infobox') and 'thumbinner multiimageinner' or 'multiimageinner') div:css('width', tostring(bodywidth) .. 'px') :css('max-width', tostring(bodywidth) .. 'px') if( bg ~= '' ) then div:css('background-color', bg) end if( tc ~= '' ) then div:css('color', tc) end if( border == 'infobox' or border == 'none') then div:css('border', 'none') end -- add the header if( isnotempty(header) ) then div:tag('div') :addClass('trow') :tag('div') :addClass('theader') :css('text-align', pargs['header_align']) :css('background-color', (pargs['header_background'] ~= '') and pargs['header_background'] or nil) :wikitext(header) end -- loop through the images local k = 0 for r=1,rowcount do local rowdiv = div:tag('div'):addClass('trow'); for j=1,perrow[r] do k = k + 1 if( k <= imagecount ) then local imagediv = rowdiv:tag('div') imagediv:addClass('tsingle') if bg ~= '' then imagediv:css('background-color', bg); end if imagegap > 1 and k < imagecount then if dir == 'vertical' then imagediv:css('margin-bottom', tostring(imagegap) .. 'px') elseif j < perrow[r] then imagediv:css('margin-right', tostring(imagegap) .. 'px') end end local i = imagenumbers[k] local img = pargs['image' .. i] local w = widths[k] imagediv:css('width', tostring(2 + w) .. 'px') :css('max-width', tostring(2 + w) .. 'px') imagediv:wikitext(renderImageCell(img, w, heights[k], pargs['link' .. i], pargs['alt' .. i], pargs['thumbtime' .. i], pargs['caption' .. i], pargs['class' .. i], capalign, imgstyle, border, tc)) end end end -- add the footer if( isnotempty(footer) ) then local falign = string.lower(pargs['footer_align'] or args['footer_align'] or '') falign = (falign == 'centre') and 'center' or falign div:tag('div') :addClass('trow') :css('display', (falign ~= '') and 'flow-root' or 'flex') :tag('div') :addClass((border ~= 'infobox') and 'thumbcaption' or nil) :css('text-align', (falign ~= '') and falign or nil) :css('background-color', (pargs['footer_background'] ~= '') and pargs['footer_background'] or nil) :css('color', (tc ~= '') and tc or nil) :wikitext(footer) end return tostring(root) end return '' end function p.render( frame ) autoscaledimages = false nonautoscaledimages = false local check = require('Module:Check for unknown parameters')._check local tracking = check({ ['unknown'] = frame:expandTemplate{ title = 'main other', args = {'[[Category:Pages using multiple image with unknown parameters|_VALUE_ ]]'} }, ['preview'] = 'Page using [[Template:Multiple image]] with unknown parameter "_VALUE_"', ['ignoreblank'] = 'y', regexp1 = 'image%d+', regexp2 = 'width%d+', regexp3 = 'height%d+', regexp4 = 'class%d+', regexp5 = 'alt%d+', regexp6 = 'link%d+', regexp7 = 'thumbtime%d+', regexp8 = 'caption%d+', 'align', 'direction', 'header_background', 'header_align', 'header', 'width', 'total_width', 'caption_align', 'footer_background', 'footer_align', 'footer', 'perrow', 'title', 'image_gap', 'border', 'image_style', 'color', 'text_color', 'bg_color', 'background_color', 'background color' }, frame:getParent().args) return frame:extensionTag {name = 'templatestyles', args = {src = 'Multiple image/styles.css', wrapper = ".tmulti"}} .. renderMultipleImages( frame ) .. (autoscaledimages and '[[Category:Pages using multiple image with auto scaled images]]' or '') .. (nonautoscaledimages and '[[Category:Pages using multiple image with manual scaled images]]' or '') .. tracking end p[''] = function( frame ) return p.render( frame:newChild{title = frame:getTitle()} ) end return p 87jm8kwseugqlivazd2az7lublu53wp Module:Check for unknown parameters 828 1189 6675 2026-06-07T15:35:36Z Derek J Moore 148 Created page with "-- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list require ('strict'); local p = {} local mapframe_params = { 'coord', 'coordinates', 'id', 'qid', 'mapframe', 'mapframe-area_km2', 'mapframe-area_mi2', 'mapframe-caption', 'mapframe-coord', 'mapframe-coordinates', 'mapframe-custom', 'mapframe-frame-coord', 'mapframe-frame-coordinates', 'mapf..." 6675 Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list require ('strict'); local p = {} local mapframe_params = { 'coord', 'coordinates', 'id', 'qid', 'mapframe', 'mapframe-area_km2', 'mapframe-area_mi2', 'mapframe-caption', 'mapframe-coord', 'mapframe-coordinates', 'mapframe-custom', 'mapframe-frame-coord', 'mapframe-frame-coordinates', 'mapframe-frame-height', 'mapframe-frame-width', 'mapframe-geomask', 'mapframe-geomask-fill', 'mapframe-geomask-fill-opacity', 'mapframe-geomask-stroke-color', 'mapframe-geomask-stroke-colour', 'mapframe-geomask-stroke-width', 'mapframe-height', 'mapframe-id', 'mapframe-length_km', 'mapframe-length_mi', 'mapframe-line', 'mapframe-line-stroke-color', 'mapframe-line-stroke-colour', 'mapframe-marker', 'mapframe-marker-color', 'mapframe-marker-colour', 'mapframe-point', 'mapframe-population', 'mapframe-shape', 'mapframe-shape-fill', 'mapframe-shape-fill-opacity', 'mapframe-shape-stroke-color', 'mapframe-shape-stroke-colour', 'mapframe-stroke-color', 'mapframe-stroke-colour', 'mapframe-stroke-width', 'mapframe-switcher', 'mapframe-type', 'mapframe-width', 'mapframe-wikidata', 'mapframe-zoom' } local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end -- create the list of known args, regular expressions, and the return string local knownargs = {} if isnotempty(args['mapframe_args']) then for _, v in ipairs(mapframe_params) do knownargs[v] = 1 end end local regexps = {} for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end -- loop over the parent args, and make sure they are on the list local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local values = {} for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(tostring(k), regexp) then knownflag = true break end end if not knownflag and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end end -- add results to the output tables local res = {} if #values > 0 then local unknown_text = args['unknown'] or 'Found _VALUE_, ' if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then local preview_text = args['preview'] if isnotempty(preview_text) then preview_text = require('Module:If preview')._warning({preview_text}) elseif preview_text == nil then preview_text = unknown_text end unknown_text = preview_text end for _, v in pairs(values) do -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links if v == '' then v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p mf5u017ry3j5wcsi9ctzrqfash3oih5 Umhlahlandlelasakhiwo:Main other 10 1190 6676 2026-06-07T15:38:25Z Derek J Moore 148 Phew 6676 wikitext text/x-wiki {{safesubst:<noinclude/>#switch: <noinclude><!-- If no or empty "demospace" parameter then detect namespace --></noinclude> {{safesubst:<noinclude/>#if:{{{demospace|}}} | {{safesubst:<noinclude/>lc: {{{demospace}}} }} <noinclude><!-- Use lower case "demospace" --></noinclude> | {{safesubst:<noinclude/>#ifeq:{{safesubst:<noinclude/>NAMESPACE}}|{{safesubst:<noinclude/>ns:0}} | main | other }} }} | main = {{{1|}}} | other | #default = {{{2|}}} }} 9qaali5a3s60e5op8c0mnzbf3if9hmf Asiqongelane:I-Mkhombo Nature Reserve 1 1191 6678 2026-06-07T15:40:45Z Derek J Moore 148 /* Tried to add an image template */ new section 6678 wikitext text/x-wiki == Tried to add an image template == {{multiple image | border = infobox | perrow = 1/2/2/1 | total_width = 290 | align = center | caption_align = center |image1 = 3-banded plover last weekend at Mkhombo Dam (36902155813).jpg | caption1 = | image2 = | caption2 = |image3 = | caption3 = | image4 = | caption4 = }} [[Umsebenzisi:Derek J Moore|Derek J Moore]] ([[Umsebenzisi asiqongelane:Derek J Moore|talk]]) 17:40, 7 Nhlangula 2026 (SAST) ntzu2ttcrj8ninu2wd8vddek711m8iu