<link href="../fonts/font.css" rel="stylesheet" type="text/css">

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
		<id>https://wiki.imaroof.ir/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3AInfobox_military_conflict%2Fsandbox</id>
		<title>پودمان:Infobox military conflict/sandbox - تاریخچهٔ ویرایش‌ها</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.imaroof.ir/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3AInfobox_military_conflict%2Fsandbox"/>
		<link rel="alternate" type="text/html" href="https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_military_conflict/sandbox&amp;action=history"/>
		<updated>2026-08-07T18:50:37Z</updated>
		<subtitle>تاریخچهٔ ویرایش‌های این صفحه در ویکی</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_military_conflict/sandbox&amp;diff=925&amp;oldid=prev</id>
		<title>Admin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_military_conflict/sandbox&amp;diff=925&amp;oldid=prev"/>
				<updated>2016-03-03T11:25:19Z</updated>
		
		<summary type="html">&lt;p&gt;۱ نسخه واردشده&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;tr style='vertical-align: top;' lang='fa'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;نسخهٔ ‏۱۳ اسفند ۱۳۹۴، ساعت ۱۱:۲۵&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;' lang='fa'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(بدون تفاوت)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_military_conflict/sandbox&amp;diff=924&amp;oldid=prev</id>
		<title>Jackmcbarn: prevent duplication of first row</title>
		<link rel="alternate" type="text/html" href="https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_military_conflict/sandbox&amp;diff=924&amp;oldid=prev"/>
				<updated>2015-05-24T15:29:10Z</updated>
		
		<summary type="html">&lt;p&gt;prevent duplication of first row&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require('Module:No globals')&lt;br /&gt;
&lt;br /&gt;
local infoboxStyle = mw.loadData('Module:WPMILHIST Infobox style')&lt;br /&gt;
&lt;br /&gt;
local IMC = {}&lt;br /&gt;
IMC.__index = IMC&lt;br /&gt;
&lt;br /&gt;
function IMC:renderPerCombatant(builder, headerText, prefix, suffix)&lt;br /&gt;
	prefix = prefix or ''&lt;br /&gt;
	suffix = suffix or ''&lt;br /&gt;
	local colspans = {}&lt;br /&gt;
	&lt;br /&gt;
	-- This may result in colspans[1] getting set twice, but&lt;br /&gt;
	-- this is no big deal. The second set will be correct.&lt;br /&gt;
	local lastCombatant = 1&lt;br /&gt;
	&lt;br /&gt;
	for i = 1,self.combatants do&lt;br /&gt;
		if self.args[prefix .. i .. suffix] then&lt;br /&gt;
			colspans[lastCombatant] = i - lastCombatant&lt;br /&gt;
			lastCombatant = i&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local jointText = self.args[prefix .. (self.combatants + 1) .. suffix]&lt;br /&gt;
	&lt;br /&gt;
	if headerText and (colspans[1] or jointText) then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('th')&lt;br /&gt;
				:attr('colspan', self.combatants)&lt;br /&gt;
				:cssText(infoboxStyle.header_raw)&lt;br /&gt;
				:wikitext(headerText)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- The only time colspans[1] wouldn't be set is if no&lt;br /&gt;
	-- combatant has a field with the given prefix and suffix.&lt;br /&gt;
	if colspans[1] then&lt;br /&gt;
		-- Since each found argument set the colspan for the previous&lt;br /&gt;
		-- one, the final one wasn't set above, so set it now.&lt;br /&gt;
		colspans[lastCombatant] = self.combatants - lastCombatant + 1&lt;br /&gt;
		builder = builder:tag('tr')&lt;br /&gt;
		for i = 1,self.combatants do&lt;br /&gt;
			-- At this point, colspans[i] will be set for i=1 unconditionally, and for&lt;br /&gt;
			-- any other value of i where self.args[prefix .. i .. suffix] is set.&lt;br /&gt;
			if colspans[i] then&lt;br /&gt;
				builder:tag('td')&lt;br /&gt;
					-- don't bother emitting colspan=&amp;quot;1&amp;quot;&lt;br /&gt;
					:attr('colspan', colspans[i] ~= 1 and colspans[i] or nil)&lt;br /&gt;
					:css('width', math.floor(100 / self.combatants * colspans[i] + 0.5) .. '%')&lt;br /&gt;
					-- no border on the right of the rightmost column&lt;br /&gt;
					:css('border-right', i ~= lastCombatant and infoboxStyle.internal_border or nil)&lt;br /&gt;
					-- no padding on the left of the leftmost column&lt;br /&gt;
					:css('padding-left', i ~= 1 and '0.25em' or nil)&lt;br /&gt;
					-- don't show the border if we're directly under a header&lt;br /&gt;
					:css('border-top', not headerText and infoboxStyle.internal_border or nil)&lt;br /&gt;
					:newline()&lt;br /&gt;
					:wikitext(self.args[prefix .. i .. suffix])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if jointText then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:attr('colspan', self.combatants)&lt;br /&gt;
				:css('text-align', 'center')&lt;br /&gt;
				-- don't show the border if we're directly under a header&lt;br /&gt;
				:css('border-top', (not headerText or colspans[1]) and infoboxStyle.internal_border or nil)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(jointText)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function IMC:renderHeaderTable(builder)&lt;br /&gt;
	builder = builder:tag('table')&lt;br /&gt;
		:css('width', '100%')&lt;br /&gt;
		:css('margin', 0)&lt;br /&gt;
		:css('padding', 0)&lt;br /&gt;
		:css('border', 0)&lt;br /&gt;
&lt;br /&gt;
	if self.args.date then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('th')&lt;br /&gt;
				:css('padding-right', '1em')&lt;br /&gt;
				:wikitext('Date')&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:wikitext(self.args.date)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	builder = builder:tag('tr')&lt;br /&gt;
		:tag('th')&lt;br /&gt;
			:css('padding-right', '1em')&lt;br /&gt;
			:wikitext('Location')&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag('td')&lt;br /&gt;
			:tag('span')&lt;br /&gt;
				:addClass('location')&lt;br /&gt;
				:wikitext(self.args.place or '{&amp;amp;#123;{place}&amp;amp;#125;}') -- hack so that people who don't know Lua know that this parameter is required&lt;br /&gt;
			:done()&lt;br /&gt;
	if self.args.coordinates then&lt;br /&gt;
		builder:wikitext('&amp;lt;br /&amp;gt;' .. self.args.coordinates)&lt;br /&gt;
	end&lt;br /&gt;
	builder = builder:done():done()&lt;br /&gt;
&lt;br /&gt;
	-- only for &amp;quot;Putsch&amp;quot;&lt;br /&gt;
    if self.args.action then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('th')&lt;br /&gt;
				:css('padding-right', '1em')&lt;br /&gt;
				:wikitext(self.args.action and 'Action')&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:wikitext(self.args.action)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.args.status or self.args.result then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('th')&lt;br /&gt;
				:css('padding-right', '1em')&lt;br /&gt;
				:wikitext(self.args.status and 'Status' or 'Result')&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(self.args.status or self.args.result)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.args.territory then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('th')&lt;br /&gt;
				:css('padding-right', '1em')&lt;br /&gt;
				:wikitext('Territorial&amp;lt;br /&amp;gt;changes')&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(self.args.territory)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function IMC:render()&lt;br /&gt;
	local builder = mw.html.create()&lt;br /&gt;
	if self.args.campaignbox then&lt;br /&gt;
		builder = builder:tag('table')&lt;br /&gt;
			:css('float', 'right')&lt;br /&gt;
			:css('clear', 'right')&lt;br /&gt;
			:css('background', 'transparent')&lt;br /&gt;
			:css('margin', 0)&lt;br /&gt;
			:css('padding', 0)&lt;br /&gt;
			:tag('tr'):tag('td')&lt;br /&gt;
	end&lt;br /&gt;
	builder = builder:tag('table')&lt;br /&gt;
		:addClass('infobox vevent')&lt;br /&gt;
		:cssText(infoboxStyle.main_box_raw_auto_width)&lt;br /&gt;
		:css('width', self.args.width or '315px')&lt;br /&gt;
&lt;br /&gt;
	builder:tag('tr')&lt;br /&gt;
		:tag('th')&lt;br /&gt;
			:addClass('summary')&lt;br /&gt;
			:attr('colspan', self.combatants)&lt;br /&gt;
			:cssText(infoboxStyle.header_raw)&lt;br /&gt;
			:wikitext(self.args.conflict or mw.title.getCurrentTitle().text)&lt;br /&gt;
	if self.args.partof then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:attr('colspan', self.combatants)&lt;br /&gt;
				:cssText(infoboxStyle.sub_header_raw)&lt;br /&gt;
				:wikitext('Part of ' .. self.args.partof)&lt;br /&gt;
	end&lt;br /&gt;
	if self.args.image then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:attr('colspan', self.combatants)&lt;br /&gt;
				:cssText(infoboxStyle.image_box_raw)&lt;br /&gt;
				:wikitext(string.format('%s%s%s',&lt;br /&gt;
					require('Module:InfoboxImage').InfoboxImage{args = {&lt;br /&gt;
						image = self.args.image,&lt;br /&gt;
						size = self.args.image_size,&lt;br /&gt;
						sizedefault = 'frameless',&lt;br /&gt;
						upright = 1,&lt;br /&gt;
						alt = self.args.alt&lt;br /&gt;
					}},&lt;br /&gt;
					self.args.caption and '&amp;lt;br /&amp;gt;' or '',&lt;br /&gt;
					self.args.caption or ''&lt;br /&gt;
				))&lt;br /&gt;
	end&lt;br /&gt;
	self:renderHeaderTable(builder:tag('tr'):tag('td'):attr('colspan', self.combatants))&lt;br /&gt;
	self:renderPerCombatant(builder, self.args.combatants_header or 'Belligerents', 'combatant')&lt;br /&gt;
	for _,v in ipairs(self.fields) do&lt;br /&gt;
		self:renderPerCombatant(builder, nil, 'combatant', v)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	self:renderPerCombatant(builder, 'Commanders and leaders', 'commander')&lt;br /&gt;
	self:renderPerCombatant(builder, 'Units involved', 'units')&lt;br /&gt;
	self:renderPerCombatant(builder, 'Strength', 'strength')&lt;br /&gt;
	self:renderPerCombatant(builder, 'Political support', 'polstrength')&lt;br /&gt;
	self:renderPerCombatant(builder, 'Military support', 'milstrength')&lt;br /&gt;
	self:renderPerCombatant(builder, 'Casualties and losses', 'casualties')&lt;br /&gt;
&lt;br /&gt;
	if self.args.notes then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:attr('colspan', self.combatants)&lt;br /&gt;
				:css('font-size', '90%')&lt;br /&gt;
				:css('border-top', infoboxStyle.section_border)&lt;br /&gt;
				:wikitext(self.args.notes)&lt;br /&gt;
	end&lt;br /&gt;
	if self.args.map_type then&lt;br /&gt;
		builder:tag('tr')&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:attr('colspan', self.combatants)&lt;br /&gt;
				:css('border-top', infoboxStyle.internal_border)&lt;br /&gt;
				:tag('center')&lt;br /&gt;
					:node(require('Module:Location map').main(self.frame, {&lt;br /&gt;
						self.args.map_type,&lt;br /&gt;
						relief = self.args.map_relief,&lt;br /&gt;
						lat = self.args.latitude,&lt;br /&gt;
						long = self.args.longitude,&lt;br /&gt;
						width = self.args.map_size or 220,&lt;br /&gt;
						float = 'center',&lt;br /&gt;
						border = 'none',&lt;br /&gt;
						mark = self.args.map_mark,&lt;br /&gt;
						marksize = self.args.map_marksize or 8,&lt;br /&gt;
						label = self.args.map_label,&lt;br /&gt;
						alt = self.args.map_alt,&lt;br /&gt;
						caption = self.args.map_caption or ('Location within ' .. self.args.map_type)&lt;br /&gt;
					}))&lt;br /&gt;
	end&lt;br /&gt;
	builder = builder:done()&lt;br /&gt;
	if self.args.campaignbox then&lt;br /&gt;
		builder = builder:done():done():tag('tr')&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:wikitext(self.args.campaignbox)&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
	end&lt;br /&gt;
	return builder&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function IMC.new(frame, args)&lt;br /&gt;
	if not args then&lt;br /&gt;
		args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Infobox military conflict'})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local obj = {&lt;br /&gt;
		frame = frame,&lt;br /&gt;
		args = args,&lt;br /&gt;
		combatants = 0,&lt;br /&gt;
		fields = {}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local fieldsAsKeys = {}&lt;br /&gt;
	for k,v in pairs(args) do&lt;br /&gt;
		local n, f = k:match('^combatant(%d+)(%D-)$')&lt;br /&gt;
		if n then&lt;br /&gt;
			obj.combatants = math.max(obj.combatants, n)&lt;br /&gt;
			if f ~= '' then&lt;br /&gt;
				fieldsAsKeys[f] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for k in pairs(fieldsAsKeys) do&lt;br /&gt;
		table.insert(obj.fields, k)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(obj.fields)&lt;br /&gt;
&lt;br /&gt;
	return setmetatable(obj, IMC)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	return IMC.new(frame):render()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jackmcbarn</name></author>	</entry>

	</feed>