مسابقه سال اسلامیکال
همزمان با آغاز ماه رمضان، مسابقه سال اسلامیکال با هدف معرفی اسلامیکال و توسعه مقالات در زمینه اسلامی آغاز شده‌است. علاقه‌مندان به شرکت در این مسابقه می‌توانند تا پایان ماه رمضان ۱۴۴۶ قمری برای آن نام‌نویسی کنند. فهرستی از مقالات پیشنهادی جهت ایجاد در اینجا وجود دارد

پودمان:Wide image

از اسلامیکال
پرش به ناوبری پرش به جستجو

توضیحات این پودمان می‌تواند در پودمان:Wide image/توضیحات قرار گیرد.

-- This module implements [[template:wide image]] and [[template:panorama]]
local p = {}

local function getfilename(s)
	s = mw.ustring.gsub(s or '', '^%s*[Ff][Ii][Ll][Ee]%s*:%s*', '')
	s = mw.ustring.gsub(s or '', '^%s*[Ii][Mm][Aa][Gg][Ee]%s*:%s*', '')
	s = mw.ustring.gsub(s or '', '^%s*پرونده%s*:%s*', '')
	return s
end

local function getwidth(s, w, h)
	w = mw.ustring.gsub(w or '0', '^%s*(%d+)%s*[Pp][Xx]*%s*$', '%1')
	h = mw.ustring.gsub(h or '0', '^%s*(%d+)%s*[Pp][Xx]*%s*$', '%1')
	w = tonumber(w) or 0
	h = tonumber(h) or 0
	if w > 0 then
		return w
	end
	
	local file = s and mw.title.new('پرونده:' .. mw.uri.decode(mw.ustring.gsub(s,'%|.*$',''), 'WIKI'))
	file = file and file.file or {width = 0, height = 0}

	if h > 0 then
		w = math.floor(h * (tonumber(file.width) or 0)/(tonumber(file.height) or 1) + 0.5)
		if w > 0 then
			return w
		end
	end
	
	w = tonumber(file.width) or 0
	return w
end

local function getimage(s, w, a, c, ltr)
	if c == 'thumb' or c == 'thumbnail' or c == 'frame' or c == 'border' or c == 'انگشتی' or c == 'بندانگشتی' or c == 'قاب' then
		c = s
	elseif ltr and c ~= '' then
		c = '‪' .. c .. '‬'
	end
	return '[[پرونده:' .. (s or '') .. '|' .. (w or '') .. '|alt=' .. (a or '') 
		.. '|' .. mw.text.unstrip(c or '') .. ']]'
end

local function getcontainers(noborder, float, width, maxwidth)
	local r = mw.html.create('div')
	if noborder then
		if float == 'right' then
			r:addClass('floatright')
		elseif float == 'left' then
			r:addClass('floatleft')
		elseif float == 'none' then
			r:addClass('floatnone')
		else -- center is default
			r:addClass('floatnone')
			r:css('margin-left', 'auto')
			r:css('margin-right', 'auto')
			r:css('overflow', 'hidden')
		end
	else
		r:addClass('thumb')
		if float == 'left' then
			r:addClass('tleft')
		elseif float == 'right' then
			r:addClass('tright')
		elseif float == 'none' then
			r:addClass('tnone')
		else -- center is default
			r:addClass('tnone')
			r:css('margin-left', 'auto')
			r:css('margin-right', 'auto')
			r:css('overflow', 'hidden')
		end
	end
	r:css('width', width)
	r:css('max-width', maxwidth)
	local d = noborder and r or r:tag('div'):addClass('thumbinner')
	
	return r,d
end
	
function wideimage(image, width, height, caption, boxwidth, float, alt, border, capalign, dir)
	if image then
		image = getfilename(image)
		local iwidth = getwidth(image, width or '0', height or '0')
		if width == nil then
			width = iwidth .. 'px'
		end
		local ltr = dir and dir == 'ltr' or nil
		local noborder = border and border == 'no' or nil
		
		local maxwidth = noborder and (iwidth .. 'px') or ((iwidth + 8) .. 'px')
		
		local r,d = getcontainers(noborder, float or '', boxwidth or 'auto', maxwidth)
		
		--to convert وسط, چپ and راست to friendly align values for MediaWiki software
		
		if capalign then
			if capalign == 'وسط' then
				capalign = 'center'
			elseif capalign == 'چپ' then
				capalign = 'left'
			elseif capalign == 'راست' then
				capalign = 'right'
			end
		end
		
		if tonumber(width) then
			width = width .. 'px'
		end
		
		d:tag('div')
			:addClass('noresize')
			:css('overflow', 'auto')
			:css('direction', ltr and 'ltr' or nil)
			:wikitext(getimage(image,width,alt,caption or '',ltr))
		if caption then
			d = d:tag('div')
					:addClass('thumbcaption')
					:css('text-align', capalign)
			if noborder == nil then
				d:tag('div')
					:addClass('magnify')
					:wikitext('[[:پرونده:' .. image .. '| ]]')
			end
			d:wikitext(caption)
		end
		return tostring(r)
	end
	return ''
end

function p.main(frame)
	local getArgs = require('Module:Arguments').getArgs
	local args = getArgs(frame)
	return wideimage(
			args['image'] or args['تصویر'] or args[1], args[2] or nil, -- width
			args['height'] or args['ارتفاع'] or nil, args['caption'] or args['زیرنویس'] or args['توضیح'] or args[3], 
			args['width'] or args['پهنا'] or args['عرض'] or args[4], args['align'] or args['تراز'] or args[5], 
			args['alt'] or args['جایگزین'], args['border'] or args['قاب'], args['align-cap'] or args['تراز زیرنویس'] or args['تراز توضیح'], args['dir'] or args['جهت']
			)
end

return p