خانه
تصادفی
ورود
تنظیمات
دربارهٔ ویکیهزاره
تکذیبنامهها
ویکیهزاره
جستجو
در حال ویرایش
پودمان:Infobox military conflict
هشدار:
شما وارد نشدهاید. نشانی آیپی شما برای عموم قابل مشاهده خواهد بود اگر هر تغییری ایجاد کنید. اگر
وارد شوید
یا
یک حساب کاربری بسازید
، ویرایشهایتان به نام کاربریتان نسبت داده خواهد شد، همراه با مزایای دیگر.
بررسی ضدهرزنگاری. این قسمت را پر
نکنید
!
require('strict') local infoboxStyle = mw.loadData('Module:WPMILHIST Infobox style') local templatestyles = 'Module:Infobox military conflict/styles.css' local IMC = {} IMC.__index = IMC function IMC:renderPerCombatant(builder, headerText, prefix, suffix) prefix = prefix or '' suffix = suffix or '' local colspans = {} -- This may result in colspans[1] getting set twice, but -- this is no big deal. The second set will be correct. local lastCombatant = 1 for i = 1,self.combatants do if self.args[prefix .. i .. suffix] then colspans[lastCombatant] = i - lastCombatant lastCombatant = i end end local jointText = self.args[prefix .. (self.combatants + 1) .. suffix] if headerText and (colspans[1] or jointText) then builder:tag('tr') :tag('th') :attr('colspan', self.combatants) :cssText(infoboxStyle.header_raw) :wikitext(headerText) end -- The only time colspans[1] wouldn't be set is if no -- combatant has a field with the given prefix and suffix. if colspans[1] then -- Since each found argument set the colspan for the previous -- one, the final one wasn't set above, so set it now. colspans[lastCombatant] = self.combatants - lastCombatant + 1 builder = builder:tag('tr') for i = 1,self.combatants do -- At this point, colspans[i] will be set for i=1 unconditionally, and for -- any other value of i where self.args[prefix .. i .. suffix] is set. if colspans[i] then builder:tag('td') -- don't bother emitting colspan="1" :attr('colspan', colspans[i] ~= 1 and colspans[i] or nil) :css('width', math.floor(100 / self.combatants * colspans[i] + 0.5) .. '%') -- no border on the right of the rightmost column :css('border-left', i ~= lastCombatant and infoboxStyle.internal_border or nil) -- no padding on the left of the leftmost column :css('padding-right', i ~= 1 and '0.25em' or nil) -- don't show the border if we're directly under a header :css('border-top', not headerText and infoboxStyle.internal_border or nil) :newline() :wikitext(self.args[prefix .. i .. suffix]) end end end if jointText then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :css('text-align', 'center') -- don't show the border if we're directly under a header :css('border-top', (not headerText or colspans[1]) and infoboxStyle.internal_border or nil) :newline() :wikitext(jointText) end end function IMC:renderHeaderTable(builder) builder = builder:tag('table') :css('width', '100%') :css('margin', 0) :css('padding', 0) :css('border', 0) :css('display', 'inline-table') if self.args.date then builder:tag('tr') :tag('th') :css('padding-left', '1em') :wikitext('تاریخ') :done() :tag('td') :wikitext(self.args.date) end builder = builder:tag('tr') :tag('th') :css('padding-left', '1em') :wikitext('موقعیت') :done() :tag('td') :tag('div') :addClass('location') :wikitext(self.args.place or '{{{place}}}') -- hack so that people who don't know Lua know that this parameter is required :done() if self.args.coordinates then builder:wikitext(self.args.coordinates) end builder = builder:done():done() -- only for "Putsch" if self.args.action then builder:tag('tr') :tag('th') :css('padding-left', '1em') :wikitext(self.args.action and 'عمل') :done() :tag('td') :wikitext(self.args.action) end if self.args.status or self.args.result then builder:tag('tr') :tag('th') :css('padding-left', '1em') :wikitext(self.args.status and 'وضعیت' or 'نتایج') :done() :tag('td') :addClass('status') :newline() :wikitext(self.args.status or self.args.result) end if self.args.territory then builder:tag('tr') :tag('th') :css('padding-left', '1em') :wikitext('تغییرات<br />قلمرو') :done() :tag('td') :newline() :wikitext(self.args.territory) end end function IMC:render() local builder = mw.html.create() if self.args.campaignbox then -- this should be the same as using {{stack|clear=right|...}} builder:wikitext(self.frame:expandTemplate{ title = 'stack begin', args = { clear='true'} }) end builder = builder:tag('table') :addClass('infobox vevent') :cssText(infoboxStyle.main_box_raw) :css('width', self.args.width or nil) builder:tag('tr') :tag('th') :addClass('summary') :attr('colspan', self.combatants) :cssText(infoboxStyle.header_raw) :wikitext(self.args.conflict or mw.title.getCurrentTitle().text) if self.args.partof then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :cssText(infoboxStyle.sub_header_raw) :wikitext('بخشی از ' .. self.args.partof) end if self.args.image then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :cssText(infoboxStyle.image_box_raw) :wikitext(string.format('%s%s%s', require('Module:InfoboxImage').InfoboxImage{args = { image = self.args.image, size = self.args.image_size, sizedefault = 'frameless', upright = 1, alt = self.args.alt }}, self.args.caption and '<br />' or '', self.args.caption or '' )) end self:renderHeaderTable(builder:tag('tr'):tag('td'):attr('colspan', self.combatants)) self:renderPerCombatant(builder, self.args.combatants_header or 'طرفهای درگیر', 'combatant') -- can be un-hardcoded once gerrit:165108 is merged for _,v in ipairs{'a','b','c','d'} do self:renderPerCombatant(builder, nil, 'combatant', v) end self:renderPerCombatant(builder, self.args.commanders_header or 'فرماندهان و رهبران', 'commander') for _,v in ipairs{'a','b','c','d'} do self:renderPerCombatant(builder, nil, 'commander', v) end self:renderPerCombatant(builder, self.args.units_header or 'واحدهای درگیر', 'units') self:renderPerCombatant(builder, self.args.strengths_header or 'قوا', 'strength') self:renderPerCombatant(builder, self.args.polstrengths_header or 'پشتیبانی سیاسی', 'polstrength') self:renderPerCombatant(builder, self.args.milstrengths_header or 'پشتیبانی نظامی', 'milstrength') self:renderPerCombatant(builder, self.args.casualties_header or 'تلفات و خسارات', 'casualties') if self.args.notes then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :css('border-top', infoboxStyle.section_border) :newline() :wikitext(self.args.notes) end if self.args.map_type then builder:tag('tr') :tag('td') :attr('colspan', self.combatants) :css('border-top', infoboxStyle.internal_border) :node(require('Module:Location map').main(self.frame, { self.args.map_type, relief = self.args.map_relief, coordinates = self.args.coordinates, width = self.args.map_size or 220, float = 'center', border = 'none', mark = self.args.map_mark, marksize = self.args.map_marksize or 8, label = self.args.map_label, alt = self.args.map_alt, caption = self.args.map_caption or ('موقعیت در ' .. (require('Module:Location map').data(self.frame, {self.args.map_type, 'name'}))) })) end builder = builder:done() if self.args.campaignbox then builder = builder:done() builder:wikitext(self.args.campaignbox .. self.frame:expandTemplate{ title = 'stack end'}) end return builder end function IMC.new(frame, args) if not args then args = require('Module:Arguments').getArgs(frame, {wrappers = { 'الگو:Infobox military conflict', 'الگو:جعبه اطلاعات درگیری نظامی' } }) if args['اندازه تصویر'] then args.image_size = args['اندازه تصویر'] end if args['اندازه نشانگر نقشه'] then args.map_marksize = args['اندازه نشانگر نقشه'] end if args['اندازه نقشه'] then args.map_size = args['اندازه نقشه'] end if args['بخشی از'] then args.partof = args['بخشی از'] end if args['برچسب نقشه'] then args.map_label = args['برچسب نقشه'] end if args['پانویس'] then args.notes = args['پانویس'] end if args['تاریخ'] then args.date = args['تاریخ'] end if args['تصویر'] then args.image = args['تصویر'] end if args['توضیح تصویر'] then args.caption = args['توضیح تصویر'] end if args['توضیح نقشه'] then args.map_caption = args['توضیح نقشه'] end if args['جایگزین'] then args.alt = args['جایگزین'] end if args['جعبه لشکرکشی'] then args.campaignbox = args['جعبه لشکرکشی'] end if args['درگیری'] then args.conflict = args['درگیری'] end if args['سرآیند طرفین درگیر'] then args.combatants_header = args['سرآیند طرفین درگیر'] end if args['عرض'] then args.width = args['عرض'] end if args['عمل'] then args.action = args['عمل'] end if args['قلمرو'] then args.territory = args['قلمرو'] end if args['مختصات'] then args.coordinates = args['مختصات'] end if args['مکان'] then args.place = args['مکان'] end if args['نتیجه'] then args.result = args['نتیجه'] end if args['نشانگر نقشه'] then args.map_mark = args['نشانگر نقشه'] end if args['نقشه'] then args.map_type = args['نقشه'] end if args['نقشه برجسته'] then args.map_relief = args['نقشه برجسته'] end if args['وضعیت'] then args.status = args['وضعیت'] end -- "combatant[i][v] Persian parameters; this can be shortened by modifying the loop at L-274 if args['درگیر۱'] then args.combatant1 = args['درگیر۱'] end if args['درگیر۲'] then args.combatant2 = args['درگیر۲'] end if args['درگیر۳'] then args.combatant3 = args['درگیر۳'] end if args['درگیر۱الف'] then args.combatant1a = args['درگیر۱الف'] end if args['درگیر۲الف'] then args.combatant2a = args['درگیر۲الف'] end if args['درگیر۳الف'] then args.combatant3a = args['درگیر۳الف'] end if args['درگیر۱ب'] then args.combatant1b = args['درگیر۱ب'] end if args['درگیر۲ب'] then args.combatant2b = args['درگیر۲ب'] end if args['درگیر۳ب'] then args.combatant3b = args['درگیر۳ب'] end if args['درگیر۱ج'] then args.combatant1c = args['درگیر۱ج'] end if args['درگیر۲ج'] then args.combatant2c = args['درگیر۲ج'] end if args['درگیر۳ج'] then args.combatant3c = args['درگیر۳ج'] end if args['درگیر۱د'] then args.combatant1d = args['درگیر۱د'] end if args['درگیر۲د'] then args.combatant2d = args['درگیر۲د'] end if args['درگیر۳د'] then args.combatant3d = args['درگیر۳د'] end if args['فرمانده۱'] then args.commander1 = args['فرمانده۱'] end if args['فرمانده۲'] then args.commander2 = args['فرمانده۲'] end if args['فرمانده۳'] then args.commander3 = args['فرمانده۳'] end if args['واحدها۱'] then args.units1 = args['واحدها۱'] end if args['واحدها۲'] then args.units2 = args['واحدها۲'] end if args['واحدها۳'] then args.units3 = args['واحدها۳'] end if args['قوا۱'] then args.strength1 = args['قوا۱'] end if args['قوا۲'] then args.strength2 = args['قوا۲'] end if args['قوا۳'] then args.strength3 = args['قوا۳'] end if args['تلفات۱'] then args.casualties1 = args['تلفات۱'] end if args['تلفات۲'] then args.casualties2 = args['تلفات۲'] end if args['تلفات۳'] then args.casualties3 = args['تلفات۳'] end end local obj = { frame = frame, args = args } -- until gerrit:165108 is merged, there's still a cap on combatants, but as soon as it merges, we can update this little bit of code to uncap it -- also, don't try to make this more efficient, or references could be in the wrong order obj.combatants = 2 for _,v in ipairs{'', 'a', 'b', 'c', 'd'} do for i = 1,5 do if args['combatant' .. i .. v] then obj.combatants = math.max(obj.combatants, i) end end end return setmetatable(obj, IMC) end local p = {} function p.main(frame) return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(IMC.new(frame):render()) end return p
خلاصه:
لطفاً توجه داشته باشید که همهٔ مشارکتها در ویکیهزاره ممکن است توسط دیگر مشارکتکنندگان تغییر یابند، ویرایش یا حذف شوند. اگر نمیخواهید نوشتههایتان بیرحمانه ویرایش شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد میکنید که خودتان این را نوشتهاید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشتهاید (
ویکیهزاره:حق تکثیر
را برای جزئیات بیشتر ببینید).
کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو
راهنمای ویرایش
(در پنجرهٔ تازه باز میشود)
صفحهٔ گنحاندهشده در این صفحه:
پودمان:Infobox military conflict/توضیحات
(
ویرایش
)