Перейти к содержанию

Модуль:Mbox

Материал из PublicEvo Wiki

Этот модуль используется для шаблона {{{{#if:|{{{prefix}}}:}}Информационный{{#if:||<{{{2}}}>}}{{#if:||<{{{3}}}>}}{{#if:||<{{{4}}}>}}{{#if:||<{{{5}}}>}}{{#if:||<{{{6}}}>}}{{#if:||<{{{7}}}>}}{{#if:||<{{{8}}}>}}{{#if:||<{{{9}}}>}}{{#if:||<{{{10}}}>}}{{#if:||<{{{11}}}>}}{{#if:||<{{{12}}}>}}{{#if:||<{{{13}}}>}}{{#if:||<{{{14}}}>}}{{#if:||<{{{15}}}>}}{{#if:||<{{{16}}}>}}{{#if:||<{{{17}}}>}}{{#if:||<{{{18}}}>}}{{#if:||<{{{19}}}>}}{{#if:||<{{{20}}}>}}{{#if:||<{{{21}}}>}}}}, который в свою очередь используется для других информационных шаблонов.


-- <nowiki>
local Mbox = {}
local getArgs = require('Dev:Arguments').getArgs
local i18n = require('Dev:I18n').loadMessages('Mbox')
local localCSS = mw.loadData('Module:Mbox/data').localStyle

function Mbox.main(frame)
	local args = getArgs(frame)
	-- styles
	local styles = {}
	styles['border-left-color'] = i18n:parameter('bordercolor', args)
	styles['background-color'] = i18n:parameter('bgcolor', args)
	-- images
	local image = i18n:parameter('image', args) or ''
	local imagewidth = i18n:parameter('imagewidth', args) or '80px'
	local imagelink = '|link='
	local imagelinkarg = i18n:parameter('imagelink', args)
	if imagelinkarg then
		imagelink = imagelink .. imagelinkarg
	end
	local imagewikitext = ('%sFile:%s|%s%s' .. ']]'):format('[[', image, imagewidth, imagelink)
	-- id for closure
	local id = i18n:parameter('id', args) or 'mbox'
	local typeclass = i18n:parameter('type', args)
	local container = mw.html.create('div')
		:addClass('mbox')
		:addClass(typeclass and ('mbox-type-' .. typeclass))
		:addClass(i18n:parameter('class', args))
		:css(localCSS['mbox'])
		:css(styles)
		:cssText(i18n:parameter('style', args))
	local content = container:tag('div')
		:addClass('mbox__content')
		:css(localCSS['mbox__content'])
	local collapsed = i18n:parameter('collapsed', args)
	if image ~= '' then
		local image = content:tag('div')
			:addClass('mbox__content__image')
			:addClass('mw-collapsible')
			:attr('id', 'mw-customcollapsible-' .. id)
			:css(localCSS['mbox__content__image'])
			:wikitext(imagewikitext)
		if collapsed then
			image:addClass('mw-collapsed')
		end
	end
	local contentwrapper = content:tag('div')
		:addClass('mbox__content__wrapper')
		:css(localCSS['mbox__content__wrapper'])
	local header = i18n:parameter('header', args)
	if header then
		contentwrapper:tag('div')
			:addClass('mbox__content__header')
			:css(localCSS['mbox__content__header'])
			:wikitext(header)
	end
	local textarg = i18n:parameter('text', args)
	if textarg then
		local text = contentwrapper:tag('div')
			:addClass('mbox__content__text')
			:css(localCSS['mbox__content__text'])
			:addClass('mw-collapsible')
			:attr('id', 'mw-customcollapsible-' .. id)
			:wikitext(textarg)
		if collapsed then
			text:addClass('mw-collapsed')
		end
		local comment = i18n:parameter('comment', args)
		if comment then
			text:tag('div')
				:addClass('mbox__content__text__comment')
				:css(localCSS['mbox__content__text__comment'])
				:wikitext(comment)
		end
	end
	contentwrapper:tag('span')
		:addClass('mbox__close')
		:addClass('mw-customtoggle-' .. id)
		:css(localCSS['mbox__close'])
		:attr('title', i18n:msg('dismiss'))
	local asidearg = i18n:parameter('aside', args)
	if asidearg then
		local aside = content:tag('div')
			:addClass('mbox__content__aside')
			:addClass('mw-collapsible')
			:attr('id', 'mw-customcollapsible-' .. id)
			:css(localCSS['mbox__content__aside'])
			:wikitext(asidearg)
		if collapsed then
			aside:addClass('mw-collapsed')
		end
	end
	return container
end

return Mbox