Module:Load WikiProject Modules explained

local p =

local function standardicon(modulename) -- Take modulename as input, returns corresponding icon filename -- Returns default icon if no icon is defined -- Grow the library! Add default icons as needed by adding this line below: -- ['MODULENAME'] = 'FILE NAME.ext', local index = for t, fn in pairs(index) do if t

modulename then return fn end end return index['default']end

local function editlinktest(modulename) local no_edit_links = -- no edit link for these standard modules for _, l in pairs(no_edit_links) do if l

modulename then return 'no' end end return 'yes'end

function p.build(frame) local title = local intro = local image = local color = '#6af' -- default value local displaymode = 'normal' -- default value local modules = local id for key, value in pairs(frame:getParent.args) do -- iterate through arguments, pick out values if key

'title' then title = value elseif key

'intro' then intro = value elseif key

'image' then image = value elseif key

'color' then color = value elseif key

'displaymode' then displaymode = value elseif string.find(key, 'module') ~= nil then -- matches module1, module2, etc. id = string.gsub(key, 'module', ) id = tonumber(id) modules[id] = value end end

-- Rendering table of contents and body local toc_args = -- passed into Image Array module local body = "" -- Load a Table of Contents entry, transclude module, for each named module local counter = 0 local moduletitle local moduletitle_encoded for _, module in pairs(modules) do counter = counter + 1 toc_args['image' .. counter] = standardicon(module) toc_args['alt' .. counter] = module if displaymode

"womeninred" then if module

"Metrics" or module

"Showcase" or module

"About us" or module

"Press" or module

"Research" or module

"External links" then toc_args['link' .. counter] = "Wikipedia:WikiProject Women in Red/" .. module else toc_args['link' .. counter] = "#" .. module end else toc_args['link' .. counter] = "#" .. module end toc_args['caption' .. counter] = "" .. module .. "" if module

"Related WikiProjects" then -- Load the appropriate subpage of moduletitle = 'Related WikiProjects' .. '/' .. title moduletitle_encoded = string.gsub('Wikipedia:' .. moduletitle, ' ', '_') body = body .. "\n" .. frame:expandTemplate body = body .. "\n" .. frame:expandTemplate else if displaymode

"normal" or (displaymode

"womeninred" and module ~= "Metrics" and module ~= "Showcase" and module ~= "About us" and module ~= "Press" and module ~= "Research" and module ~= "External links") then moduletitle = title .. '/' .. module moduletitle_encoded = string.gsub('Wikipedia:' .. moduletitle, ' ', '_') body = body .. "\n" .. frame:expandTemplate if mw.title.makeTitle('Wikipedia', moduletitle).exists

true then body = body .. "\n" .. frame:expandTemplate .. "\n

" else -- Is module in question a Standard Module? If so, load the template with corresponding editintro if mw.title.makeTitle('Template', 'WPX module/' .. module).exists

true then preload = '&preload=Template:WPX_module/' .. string.gsub(module, ' ', '_') editintro = '&editintro=Template:WPX_editintro/' .. string.gsub(module, ' ', '_') else preload = -- no preload editintro = '&editintro=Template:WPX_editintro/Generic' -- generic editintro end -- Create notice create_url = 'https://en.wikipedia.org/wiki/Wikipedia:' .. string.gsub(moduletitle, ' ', '_') .. '?action=edit' .. preload .. editintro create_button = frame:expandTemplate body = body .. ' does not exist. ' .. create_button end end end end toc_args['perrow'] = counter -- sets length of image array to the number of icons local toc = "

" .. require('Module:Image array')._imagearray(toc_args) .. "

"

-- Adding header local header = "\n

" -- top container if displaymode

"womeninred" then header = header .. "

" -- intro else header = header .. "

" -- intro end -- Adding project icon header = header .. "

" header = header .. image .. "

" -- Adding project title header = header .. "

" -- header header = header .. "

" .. title .. "

" if displaymode

"womeninred" then header = header .. toc end -- Adding intro blurb header = header .. "

" header = header .. intro .. "

" -- Adding announcement section if mw.title.makeTitle('Wikipedia', title .. "/" .. "Announcements").exists

true then header = header .. frame:expandTemplate end header = header .. "

" -- Adding member box header = header .. "

" header = header .. frame:expandTemplate header = header .. "

" -- Closing off header header = header .. "

"

-- Assembling parts local contents if displaymode

"womeninred" then contents = header .. body else contents = header .. toc .. body end return contentsend

function p.invoke(frame) return p.build(frame:newChild)end

return p