Jump to content

Module:Portal image banner/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by FR30799386 (talk | contribs) at 16:01, 8 September 2018 (Create sandbox version of Module:Portal image banner....will do rest tmrw). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
local p = {}
local randomModule = require('Module:Random')

p.main = function(frame)
	local parent = frame.getParent(frame)
	local parentArgs = parent.args
	local args = cleanupArgs(parentArgs)
	local output = p._main(args)
	return frame:preprocess(output)
end

function cleanupArgs(argsTable)
	local cleanArgs = {}
	for key, val in pairs(argsTable) do
		if type(val) == 'string' then
			val = val:match('^%s*(.-)%s*$')
			if val ~= '' then
				cleanArgs[key] = val
			end
		else
			cleanArgs[key] = val
		end
	end
	return cleanArgs
end

p._main = function(args)
	if not args[1] then
		return error(linked and 'No page specified' or 'No page specified', 0)
	end
	local lines=makeGalleryLinesTable(args)
	return makeOutput(lines, args.overflow, args.maxheight)
end

function makeGalleryLine(file, caption, link)
	local title = mw.title.new(file, "File" )
	local linktext = ( link and '{{!}}link=' .. link  or '' )
	return '[[' .. title.prefixedText ..(caption and'{{!}}'..caption or '').. linktext ..']]' .. (caption and '<div style="text-align:center;">' .. caption ..'</div>' or '') 
end

function makeGalleryLine(file, caption, link)
	local title = mw.title.new(file, "File" )
	local linktext = ( link and '{{!}}link=' .. link  or '' )
	return title.prefixedText .. '{{!}}' .. ( caption or '' )
end

function makeGalleryLinesTable(args)
	local galleryLinesTable = {}
	local i = 1
	while args[i] do
		if args.mode==nil then 
		table.insert(galleryLinesTable, makeGalleryLine(args[i], args[i+1],args.link))
		else if args.mode=='slideshow' then
			table.insert(galleryLinesTable, makeGalleryLineSlideshow(args[i], args[i+1], args.link))
		else 
			error('Mode not supported')
			end
		i = i + 2
	end
	return galleryLinesTable 
end
function makeOutput(imageLines,overflow,maxHeight)
	local randomiseArgs = {	['t'] = imageLines }
	local randomisedLines = randomModule.main('array', randomiseArgs )
	local galleryContent = table.concat(randomisedLines, '\n',1,1) 
	local output
	if mode==nil then
	output = '<div class="portal-banner-image" style="max-height:' .. (maxHeight or 'intial') .. '; overflow:'..(overflow or 'auto')..';">'..galleryContent..'</div>'
	else if mode=='slideshow' then
	output='<div class="portal-banner-image-slideshow" style="max-height:' .. (maxHeight or 'intial') .. '; overflow:'..(overflow or 'auto')..';">'..'{{#tag:gallery|'..galleryContent..'|mode=slideshow}}'..'</div>'
	end
	end
	end
	return output
	end

return p