มอดูล:Load WikiProject Modules

local p = {}
function standardicon(modulename)
	index = {}
	-- 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:
	-- index'MODULENAME' = 'FILE NAME.ext'
	index'เกี่ยวกับ' = 'Information Noun 176431.svg'
	index'เกี่ยวกับเรา' = 'Information Noun 176431.svg'
	index'การแจ้งเตือน' = 'Bell icon.svg'
	index'การแจ้งเตือนบทความ' = 'Bell icon.svg'
	index'การแจ้งเตือนบทความ' = 'Bell icon.svg'
	index'พาร์ทเนอร์' = 'Handshake noun.svg'
	index'ความร่วมมือ' = 'Handshake noun.svg'
	index'อภิปราย' = 'Speechbubbles icon.svg'
	index'อีเวนต์' = 'Simpleicons Business calendar-with-a-clock-time-tools.svg' -- Is this PD-shapes?
	index'แหล่งข้อมูลอื่น' = 'Link icon.svg'
	index'แหล่งข้อมูลอื่น' = 'Link icon.svg'
	index'ลิงก์' = 'Link icon.svg'
	index'แผนที่' = 'MapPin.svg'
	index'ตัวชี้วัด' = 'ArticleCheck.svg'
	index'ข่าว' = 'Calendar icon 2.svg'
	index'แอปออฟไลน์' = 'Offline logo.svg'
	index'สื่อข่าวสาร' = 'Cite newspaper.svg'
	index'ปรับปรุงล่าสุด' = 'Clock icon.svg'
	index'ปรับปรุงล่าสุด' = 'Clock icon.svg'
	index'เนื้อหาที่ได้รับการยอมรับ' = 'RibbonPrize.svg'
	index'เนื้อหาที่ได้รับการยอมรับ' = 'RibbonPrize.svg'
	index'โครงการวิกิที่เกี่ยวข้อง' = 'Contributions icon.svg' -- Not for use for the update bot, special use case, that expands the page	
	index'โครงการวิกิที่เกี่ยวข้อง' = 'Contributions icon.svg'
	index'การร้องขอ' = 'Quotes icon.svg'
	index'การวิจัย' = 'Microscope icon (black OCL).svg'
	index'แหล่งที่มา' = 'Cite book.svg'
	index'แสดงผลงาน' = 'RibbonPrize.svg'
	index'ภารกิจ' = 'ListBullet.svg'
	index'เครื่องมือ' = 'Octicons-tools-minor.svg'
	index'การแปล' = 'Translation icon.svg'
	index'รายการเฝ้าดู' = 'OpenEye icon.svg'
	index'รายการงาน' = 'ListBullet.svg'
	for t, fn in pairs(index) do
		if t == modulename then
			return fn
		end
	end
	return 'Beta icon.svg' -- default if nothing matches
end
function editlinktest(modulename)
	no_edit_links = {'Discussions', 'Alerts', 'Showcase', 'Related WikiProjects'} -- 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)
	title = 
	intro = 
	image = 
	color = '#6af' -- default value
	displaymode = 'normal' -- default value
	modules = {}
	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)
		modulesid = value
		end
	end
	-- Rendering table of contents and body
	toc_args = {width = 80, height = 55} -- passed into Image Array module
	toc_args'font-size' = '100%'
	toc_args'margin' = 0
	body = ""
	
	-- Load a Table of Contents entry, transclude module, for each named module
	counter = 0
	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 = "" .. toc_args'link' .. counter .. "|" .. module .. ""
		if module == "Related WikiProjects" then
			-- Load the appropriate subpage of Wikipedia:Related WikiProjects
			moduletitle = 'Related WikiProjects' .. '/' .. title
			moduletitle_encoded = string.gsub('Wikipedia:' .. moduletitle, ' ', '_')
			body = body .. "\n" .. frame:expandTemplate{ title = 'WPX header', args = { module, color = color, modulename = moduletitle_encoded, editlink = editlinktest(module) } }
			body = body .. "\n" .. frame:expandTemplate{ title = "Wikipedia:Related WikiProjects/" .. title, args = {color} }
		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{ title = 'WPX header', args = { module, color = color, modulename = moduletitle_encoded, editlink = editlinktest(module) } }
				if mw.title.makeTitle('Wikipedia', moduletitle).exists == true then
					body = body .. "\n" .. frame:expandTemplate{ title = 'Wikipedia:' .. moduletitle, args = {color} } .. "\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 = '//en.wikipedia.org/wiki/Wikipedia:' .. string.gsub(moduletitle, ' ', '_') .. '?action=edit' .. preload .. editintro
					create_button = frame:expandTemplate{ title = 'Template:Clickable button 2', args = {'Create Module', url = create_url, class = 'mw-ui-progressive' } }
					body = body .. 'Wikipedia:' .. moduletitle .. ' does not exist. ' .. create_button
				end
			end
		end
		
	end
	
	toc_args'perrow' = counter -- sets length of image array to the number of icons
	toc = "" .. frame:expandTemplate{ title='Image array', args = toc_args } .. ""
	-- Adding header
	header = "__NOTOC__\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{ title = 'Wikipedia:' .. title .. "/" .. "Announcements", args = { } }
	end
	header = header .. ""
	-- Adding member box
	header = header .. ""
	header = header .. frame:expandTemplate{ title = 'WPX member box', args = { } }
	header = header .. ""
	-- Closing off header
	header = header .. ""
	-- Assembling parts
	if displaymode == "womeninred" then
		contents = header .. body
	else
		contents = header .. toc .. body
	end
	return contents
end
return p