杭州都有什么区| 营养师属于什么专业| 左胸口疼是什么原因| 高字是什么结构| 业力是什么意思| 什么牌子的麦克风好用| 儿童早餐吃什么有营养还能长高| 高育良什么级别| 整天犯困没精神想睡觉是什么原因| 建议MRI检查是什么意思| 梦见自己死了又活了是什么意思| 部分导联st段改变是什么意思| 乌鸡汤放什么补气补血| 一黑一白是什么蛇| 没什么好怕| 纳差什么意思| 为什么吃火龙果会拉肚子| 孕妇适合喝什么牛奶| 明天什么日子| 碱性磷酸酶高是什么病| 穿刺是检查什么的| 颈椎病去医院挂什么科| 乌龟和鳖有什么区别| 升结肠憩室是什么意思| 东盟是什么意思| 结石什么原因引起的| 眼睛视物模糊是什么原因| 办理港澳通行证需要什么证件| 山东登州府现在叫什么| 血离子是检查什么的| 子宫偏小有什么影响| 冠状沟溃疡是什么病| 左眼一直跳是什么原因| 凉面配什么菜好吃| 自缚是什么意思| o型血和ab型血生的孩子是什么血型| 红肉指的是什么肉| 老鼠爱吃什么| 白细胞和淋巴细胞偏高是什么原因| gy是什么意思| 指甲发紫是什么原因| 中性是什么意思| 百合花什么时候种植| 学生吃什么补脑子增强记忆力最快| 樵夫是什么意思| 李自成为什么会失败| 蓝什么什么| 十岁女孩喜欢什么礼物| 执子之手与子偕老什么意思| 蚂蚁为什么要搬家| 做月子吃什么菜| 手指红肿是什么原因| 魂牵梦绕是什么意思| ab是什么意思| 夏天适合种什么菜| 红配什么颜色最好看| 四季花是什么花| 全身体检挂什么科| 柠檬泡水喝有什么好处| 淋巴癌有什么症状| 副肾是什么药名| 9月10日什么星座| 痂是什么意思| 十一月十九是什么星座| 日加华读什么| 螺蛳粉为什么臭| 鸡痘用什么药效果好| 肠憩室是什么意思| 霉菌是什么菌| 守护者是什么意思| 阴道炎有什么症状| 一竖一点念什么| 狗头是什么意思| 为什么新生儿会有黄疸| 缺铁性贫血吃什么好| 黄瓜不能和什么一起吃| 吾矛之利的利什么意思| 一天什么时候最热| 月经推迟是什么原因导致的| 市场部是做什么的| 什么的教导| 谢邀什么意思| 脚脖子粗是什么原因| 黄体功能不足吃什么药| 兔子拉稀是什么原因| 孔子名叫什么| 昱读什么| 袖珍人是什么| 长期服用优甲乐有什么副作用| 酱油什么时候发明的| 盐是什么| 外婆菜是什么菜做的| 眉毛上长痣代表什么| 爸爸的爸爸叫什么儿歌| 甲骨文是写在什么上面的| 子宫肌瘤是什么症状| 澳门为什么叫澳门| 拉肚子可以喝什么饮料| 化验肝功挂什么科| 手机充电发烫是什么原因| 先天性心脏病是什么原因造成的| miffy是什么意思| 头发属于什么组织| 胃底腺息肉是什么意思| 甲状腺三项检查什么| 眼睛模糊用什么药| 尿管型偏高是什么原因| 幽门杆菌是什么意思| 唐氏筛查是检查什么| 什么app可以买烟| 媒婆是什么意思| 秦五行属什么| 健脾吃什么食物| 三岁看小七岁看老是什么意思| 嫔妃是什么意思| 牙疼吃什么消炎药最好| 腹泻不能吃什么食物| 猫咪踩奶是什么意思| 淼读什么字| 什么药通便最快| 黄芪不适合什么人吃| 什么东西可以止痒| 眉毛长白毛是什么征兆| 扁桃体炎吃什么药最好| 手臂突然疼痛什么原因| 黄精什么味道| 猪肝跟什么相克| poison是什么意思| 副主任科员是什么级别| 五代十国是什么意思| 男人跑马是什么原因| 早上起来心慌是什么原因| 公积金缴存基数是什么| 五福临门是什么意思| 天麻有什么作用| 腺苷钴胺片治什么病| 洞房花烛是什么生肖| 骨折后吃什么好| 刺身是什么鱼| 三个毛念什么| 头发的主要成分是什么| 怀孕为什么会引起甲亢| 雀舌属于什么茶| 岳飞属什么生肖| 角的大小和什么有关| 低密度脂蛋白偏高是什么意思| mh是什么意思| 失败是成功之母是什么意思| 肛门下坠感是什么原因| 吃茄子有什么坏处| 什么是便秘| o型血为什么叫贵族血| bonnie是什么意思| 人湿气重有什么症状| 外公的妈妈叫什么| 什么都不做| 朝秦暮楚是什么意思| 机油用什么能洗掉| 造影手术是什么意思| 什么算熬夜| 糖类抗原ca199偏高是什么原因| 厚颜无耻是什么生肖| 纯字五行属什么| 谷维素是治疗什么的| 黑白颠倒是什么意思| 阑尾炎挂号挂什么科| 什么是传染性软疣| 俄罗斯是什么人种| 口苦挂什么科最好| dht是什么意思| 颈椎病应该挂什么科| 考研复试考什么| 喉咙发炎吃什么消炎药| 93年属鸡的是什么命| 乂是什么意思| 脚老抽筋是什么原因| 高血压和高血脂有什么区别| 什么时候不容易怀孕| 肝郁吃什么药| 膂力是什么意思| 什么颜色属火| 精益求精的意思是什么| 梦遗是什么意思| nba打铁是什么意思| 局气什么意思| 脑ct挂什么科| 一个大一个多念什么| 喉咙有烧灼感吃什么药| 白泽是什么神兽| 跳闸是什么原因| 什么不什么干| 什么叫同房| 年少轻狂下一句是什么| 龋齿是什么意思| 塔罗牌是什么| 1.23是什么星座| 肠道紊乱有什么症状| 三天没有大便是什么原因| lgg什么意思| 坐月子不能吃什么| 智多星是什么意思| 吃什么对心脏最好| 内分泌失调是什么| 乔迁对联什么时候贴| acer是什么牌子的电脑| 三醋酯纤维是什么面料| 左眼皮肿是什么原因引起的| 出虚恭什么意思| 孕妇梦见很多蛇是什么意思| 参军意愿选什么比较好| 菱形脸适合什么刘海| original是什么牌子| 推手是什么意思| 女大七岁有什么说法| 梳子什么材质的好| 尿多是什么原因引起的| 什么时候进伏| 脂血是什么意思| 什么都值得买| 8.1是什么星座| 伤情鉴定需要什么材料| 转氨酶高是什么原因造成的| 摩纳哥为什么这么富| 为什么会得脂溢性皮炎| 完璧归赵发生在什么时期| 肠胃炎看什么科| 黄痰黄鼻涕吃什么药| 上海副市长什么级别| 腊猪脚炖什么好吃| 嗓子痛什么原因| 正月初十是什么星座| head是什么牌子| 反馈是什么意思| 警惕是什么意思| 金骏眉茶是什么茶| 诚不我欺什么意思| 夏天流鼻血是什么原因| 胸上长痘痘是什么原因| 收悉是什么意思| 鲷鱼是什么鱼| 女生不来大姨妈是什么原因| 豆皮炒什么好吃| 喝枸杞子泡水有什么好处和坏处| 报单什么意思| 霉菌阴道炎用什么药| 流金岁月什么意思| 肾虚用什么补最好| 流产用什么药最快| 回甘是什么意思| 量是什么意思| 11月18号是什么星座的| 1月4日是什么星座| 左后背发麻是什么原因| 子宫形态不规则是什么意思| 阿飞是什么意思| 窦性心律不齐是什么| 罹患是什么意思| 什么是智齿牙| 大便秘结是什么意思| 宫外孕有什么危害| 什么补钙效果最好| 老人尿失禁吃什么药最好| 宫颈纳氏囊肿是什么意思| 充电宝什么品牌最好| 百度??eri?e atla

土耳其一架战机坠毁致一人死亡

Vikipedi, ?zgür ansiklopedi
Modül belgelemesi[g?r] [de?i?tir] [ge?mi?] [temizle]
百度 赛事规模30000人,其中马拉松项目20000人,半程马拉松项目7000人,迷你马拉松项目3000人。

Bu modül {{bikutu}}, {{?ikutu}}, {{dikutu}}, {{kikutu}}, {{mikutu}}, {{sikutu}} ve {{tikutu}} ?ablonlar?n?n yürütülmesinde kullan?lmaktad?r. Direkt olarak sayfalarda kullan?lmak i?in tasarlanmayan bu üst modülün i?levlerinden yararlanmak i?in s?ralanan ileti ?ablonlar? kullan?lmal?d?r.

Kullan?m?

[kayna?? de?i?tir]

Bu modülü ba?ka bir Lua modülünde kullanmak i?in ?ncelikle s?z konusu modüle ?a?r?lmas? gerekir:

local messageBox = require('Modül:?leti kutusu')

?leti kutusu olu?turmak i?in main i?levi kullan?lmal?d?r. B?ylece kutu türü (dizgi olarak) ve ileti kutusunda kullan?lacak olarak parametreler ?a?r?lm?? olur.

local box = messageBox.main( boxType, {
    param1 = param1,
    param2 = param2,
    -- Daha fazla parametre...
})

Kullan?labilir yedi kutu türü bulunmaktad?r:

Kutu kodu ?ablon Kapsam
fmbox {{bikutu}} Ba?l?k ve altl?k ileti kutular? i?in
mbox {{?ikutu}} Birden fazla ad alan?nda kullan?lacak ileti kutular? i?in
imbox {{dikutu}} Dosya ad alan?nda kullan?lacak ileti kutular? i?in
cmbox {{kikutu}} Kategori ad alan?nda kullan?lacak ileti kutular? i?in
ambox {{mikutu}} Madde ad alan?nda kullan?lacak ileti kutular? i?in
tmbox {{tikutu}} Tart??ma ad alan?nda kullan?lacak ileti kutular? i?in
ombox {{sikutu}} Di?er ad alanlar?nda kullan?lacak ileti kutular? i?in

Kutulara tan?ml? parametreler i?in ?ablon belgelemesine bak?labilir.

#invoke ile kullan?m

[kayna?? de?i?tir]

Ana (main) i?levin yan? s?ra her kutu türü i?in ayr? i?levler de tan?ml? bulunmaktad?r. Bu i?levlere {{#invoke:?leti kutusu|mbox|...}}, {{#invoke:?leti kutusu|ambox|...}} ?eklinde kutu kodlar?n? tan?mlayarak eri?im sa?lanabilir. Bu i?levler di?er modüllerden ?a?r?ld?klar?nda ?al??acakt?r ancak yaln?zca #invoke ?a?r?s? ile iletilen de?i?kenleri i?lemek i?in kullan?lan kodlara eri?ebileceklerinden main i?levini ?a??rmak verimli bir kullan?m bi?imi olacakt?r.

Teknik detaylar

[kayna?? de?i?tir]

Bu modül yukar?da listelenen her kutu türü i?in ayn? temel kodu kullansa da yap?land?rma verilerindeki farkl?l?klar kutular? birbirlerinden ay?rmaktad?r. Yap?land?rma komutlar? ve ne anlama geldikleri a?a??da a??klanm??t?r:

  • types - ileti kutusunun tür parametresi taraf?ndan kullan?lan verileri i?eren tablodur. Tablo anahtarlar?, tür parametresine iletilebilecek de?erlerden müte?ekkil olup bu tablo de?erleri türler taraf?ndan kullan?lan s?n?flar? ve resimleri saklamaktad?rlar.
  • default - tür parametresine hi?bir de?er girilmezse veya ge?ersiz bir de?er belirtilmi?se kullan?lacak olan varsay?lan tür ayar?.
  • showInvalidTypeError - tür parametresine girilen de?er ge?ersizse hata g?sterilip g?sterilmeyece?ine dair ayar.
  • allowBlankParams - bo? de?erler modüle iletilen parametrelerden ??kar?l?r. Ancak allowBlankParams tablosunda yer alan parametrelere girilen bo?luk karakteri korunur.
  • allowSmall - ileti kutusunun "kü?ük=evet" komutu ile daha kü?ük boyutta bir sürümünün olu?turulmas?na dair ayar.
  • smallParam - kü?ük parametresine girilecek ?zelle?tirilebilir de?er. ?rne?in "left" ?eklinde ayarlanm??sa "kü?ük=left" komutu ile kü?ük boyutta bir mesaj kutusu olu?turulabilir.
  • smallClass - kü?ük ileti kutusu i?in kullan?lacak s?n?f.
  • substCheck - yk ([y]erine [k]oyma) denetiminin yap?l?p yap?lmayaca??na dair ayar.
  • classes - ileti kutusunda kullan?lacak s?n?f dizisi.
  • imageEmptyCell - resim belirtilmemi?se bo? <td>...</td> hücresinin kullan?l?p kullan?lmayaca??na dair ayar. Ekran?n tamam?na yay?lmayan ileti kutular?n?n boyut aral?klar?n? korumak i?in kullan?l?r.
  • imageEmptyCellStyle - bo? resim hücrelerinin bi?imlendirilip bi?imlendirilmeyece?ine dair ayar.
  • imageCheckBlank - "resim=blank" komutu hi?bir resmin g?rüntülenmemesini sa?lar.
  • imageSmallSize - kü?ük ileti kutular?nda kullan?lan resimler otomatik olarak 30x30 piksel olarak ayarlan?r. Bu ayar ile ?zel boyut belirlenebilir.
  • imageCellDiv - resmin <div>...</div> i?ine al?n?p izin verilen en büyük boyuta zorlanmas?na dair ayar.
  • useCollapsibleTextFields - "sorun", "??züm", "tart??ma" vb. daralt?labilen metin alanlar?n?n kullan?l?p kullan?lmayaca??na dair ayar. ?u anda yaln?zca {{mikutu}}'da kullan?lmaktad?r.
  • imageRightNone - ileti kutusunun sa? taraf?ndaki resmin gizlenmesine dair ayar. "sa?resim=none" komutu sa? tarafta hi?bir resmin g?rüntülenmesine izin vermez.
  • sectionDefault - "altba?l?k" parametresi i?in varsay?lan ad. useCollapsibleTextFields komuuna ba?l? olarak ?al???r.
  • allowMainspaceCategories - ana ad alan?nda kategorilere izin verilmesine dair ayar.
  • templateCategory - ?ablonun kullan?ld??? sayfalara yerle?tirilecek ana kategorinin ad?.
  • templateCategoryRequireName - ?ablona tan?ml? kategoriyi g?rüntülemek i?in ad parametresinin gerekli olup olmad???na dair ayar.
  • templateErrorCategory - ?ablon taraf?ndan kullan?lacak olan hata kategorisinin ad?.
  • templateErrorParamsToCheck - kullan?l?p kullan?lmad??? denetlenecek olan parametre adlar?. Herhangi biri eksikse hata olarak alg?lan?r ve templateErrorCategory uygulan?r.
-- This is a meta-module for producing message box templates, including
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.

-- Load necessary modules.
require('Modül:Küresel de?il')
local getArgs
local yesno = require('Modül:Evethay?r')

-- Get a language object for formatDate and ucfirst.
local lang = mw.language.getContentLanguage()

-- Define constants
local CONFIG_MODULE = 'Modül:?leti kutusu/yap?land?rma'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}

--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------

local function getTitleObject(...)
	-- Get the title object, passing the function through pcall
	-- in case we are over the expensive function count limit.
	local success, title = pcall(mw.title.new, ...)
	if success then
		return title
	end
end

local function union(t1, t2)
	-- Returns the union of two arrays.
	local vals = {}
	for i, v in ipairs(t1) do
		vals[v] = true
	end
	for i, v in ipairs(t2) do
		vals[v] = true
	end
	local ret = {}
	for k in pairs(vals) do
		table.insert(ret, k)
	end
	table.sort(ret)
	return ret
end

local function getArgNums(args, prefix)
	local nums = {}
	for k, v in pairs(args) do
		local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
		if num then
			table.insert(nums, tonumber(num))
		end
	end
	table.sort(nums)
	return nums
end

--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------

local MessageBox = {}
MessageBox.__index = MessageBox

function MessageBox.new(boxType, args, cfg)
	args = args or {}
	local obj = {}

	-- Set the title object and the namespace.
	obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()

	-- Set the config for our box type.
	obj.cfg = cfg[boxType]
	if not obj.cfg then
		local ns = obj.title.namespace
		-- boxType is "mbox" or invalid input
		if (args["denemealan?"] or args["adalan?"] or args.demospace) and (args["denemealan?"] or args["adalan?"] or args.demospace) ~= '' then
			-- implement demospace parameter of mbox
			local demospace = string.lower(args["denemealan?"] or args["adalan?"] or args.demospace)
			if DEMOSPACES[demospace] then
				-- use template from DEMOSPACES
				obj.cfg = cfg[DEMOSPACES[demospace]]
			elseif string.find( demospace, 'talk' ) then
				-- demo as a talk page
				obj.cfg = cfg.tmbox
			else
				-- default to ombox
				obj.cfg = cfg.ombox
			end
		elseif ns == 0 then
			obj.cfg = cfg.ambox -- main namespace
		elseif ns == 6 then
			obj.cfg = cfg.imbox -- file namespace
		elseif ns == 14 then
			obj.cfg = cfg.cmbox -- category namespace
		else
			local nsTable = mw.site.namespaces[ns]
			if nsTable and nsTable.isTalk then
				obj.cfg = cfg.tmbox -- any talk namespace
			else
				obj.cfg = cfg.ombox -- other namespaces or invalid input
			end
		end
	end

	-- Set the arguments, and remove all blank arguments except for the ones
	-- listed in cfg.allowBlankParams.
	do
		local newArgs = {}
		for k, v in pairs(args) do
			if v ~= '' then
				newArgs[k] = v
			end
		end
		for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
			newArgs[param] = args[param]
		end
		obj.args = newArgs
	end

	-- Define internal data structure.
	obj.categories = {}
	obj.classes = {}
	-- For lazy loading of [[Modül:Kategori i?leyici]].
	obj.hasCategories = false

	return setmetatable(obj, MessageBox)
end

function MessageBox:addCat(ns, cat, sort)
	if not cat then
		return nil
	end
	if sort then
		cat = string.format('[[Kategori:%s|%s]]', cat, sort)
	else
		cat = string.format('[[Kategori:%s]]', cat)
	end
	self.hasCategories = true
	self.categories[ns] = self.categories[ns] or {}
	table.insert(self.categories[ns], cat)
end

function MessageBox:addClass(class)
	if not class then
		return nil
	end
	table.insert(self.classes, class)
end

function MessageBox:setParameters()
	local args = self.args
	local cfg = self.cfg

	-- Get type data.
	self.type = (args["tür"] or args.type)
	local typeData = cfg.types[self.type]
	self.invalidTypeError = cfg.showInvalidTypeError
		and self.type
		and not typeData
	typeData = typeData or cfg.types[cfg.default]
	self.typeClass = typeData.class
	self.typeImage = typeData.image

	-- Find if the box has been wrongly substituted.
	self.isSubstituted = cfg.substCheck and (args["yk"] or args.subst) == 'SUBST'

	-- Find whether we are using a small message box.
	self.isSmall = cfg.allowSmall and (
		cfg.smallParam and (args["kü?ük"] == cfg.smallParam or args["ufak"] == cfg.smallParam or args.small == cfg.smallParam)
		or not cfg.smallParam and yesno(args["kü?ük"] or args["ufak"] or args.small)
	)

	-- Add attributes, classes and styles.
	self.id = (args["kimlik"] or args.id)
	self.name = (args["ad"] or args.name)
	if self.name then
		self:addClass('box-' .. string.gsub(self.name,' ','_'))
	end
	if yesno(args["yal?nba?"] or args.plainlinks) ~= false then
		self:addClass('plainlinks')
	end
	for _, class in ipairs(cfg.classes or {}) do
		self:addClass(class)
	end
	if self.isSmall then
		self:addClass(cfg.smallClass or 'mbox-small')
	end
	self:addClass(self.typeClass)
	self:addClass(args["s?n?f"] or args.class)
	self.style = (args["bi?im"] or args["bi?em"] or args["stil"] or args.style)
	self.attrs = args.attrs

	-- Set text style.
	self.textstyle = (args["metinbi?imi"] or args["metinbi?im"] or args["metinbi?emi"] or args["yaz?bi?imi"] or args["yaz? stili"] or args.textstyle)

	-- Find if we are on the template page or not. This functionality is only
	-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
	-- and cfg.templateCategoryRequireName are set.
	self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
	if self.useCollapsibleTextFields
		or cfg.templateCategory
		and cfg.templateCategoryRequireName
	then
		if self.name then
			local templateName = mw.ustring.match(
				self.name,
				'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
			) or self.name
			templateName = 'Template:' .. templateName
			self.templateTitle = getTitleObject(templateName)
		end
		self.isTemplatePage = self.templateTitle
			and mw.title.equals(self.title, self.templateTitle)
	end
	
	-- Process data for collapsible text fields. At the moment these are only
	-- used in {{ambox}}.
	if self.useCollapsibleTextFields then
		-- Get the self.issue value.
		if self.isSmall and args.smalltext then
			self.issue = args.smalltext
		else
			local sect
			if (args["altba?l?k"] or args.sect) == '' then
				sect = 'Bu ' .. (cfg.sectionDefault or 'page')
			elseif type(args["altba?l?k"] or args.sect) == 'string' then
				sect = 'Bu ' .. (args["altba?l?k"] or args.sect)
			end
			local issue = (args["sorun"] or args.issue)
			issue = type(issue) == 'string' and issue ~= '' and issue or nil
			local text = (args["metin"] or args["yaz?"] or args.text)
			text = type(text) == 'string' and text or nil
			local issues = {}
			table.insert(issues, sect)
			table.insert(issues, issue)
			table.insert(issues, text)
			self.issue = table.concat(issues, ' ')
		end

		-- Get the self.talk value.
		local talk = (args["tart??ma"] or args.talk)
		-- Show talk links on the template page or template subpages if the talk
		-- parameter is blank.
		if talk == ''
			and self.templateTitle
			and (
				mw.title.equals(self.templateTitle, self.title)
				or self.title:isSubpageOf(self.templateTitle)
			)
		then
			talk = '#'
		elseif talk == '' then
			talk = nil
		end
		if talk then
			-- If the talk value is a talk page, make a link to that page. Else
			-- assume that it's a section heading, and make a link to the talk
			-- page of the current page with that section heading.
			local talkTitle = getTitleObject(talk)
			local talkArgIsTalkPage = true
			if not talkTitle or not talkTitle.isTalkPage then
				talkArgIsTalkPage = false
				talkTitle = getTitleObject(
					self.title.text,
					mw.site.namespaces[self.title.namespace].talk.id
				)
			end
			if talkTitle and talkTitle.exists then
				local talkText = 'Konuya dair fikir al??veri?i'
				if talkArgIsTalkPage then
					talkText = string.format(
						'%s [[%s|%s]] sayfas?nda bulunabilir.',
						talkText,
						talk,
						talkTitle.prefixedText
					)
				else
					talkText = string.format(
						'%s [[%s#%s|tart??ma sayfas?]]nda bulunabilir.',
						talkText,
						talkTitle.prefixedText,
						talk
					)
				end
				self.talk = talkText
			end
		end

		-- Get other values.
		self.fix = (args["??züm"] or args["düzeltme"] or args.fix) ~= '' and (args["??züm"] or args["düzeltme"] or args.fix) or nil
		local date
		if (args["tarih"] or args.date) and (args["tarih"] or args.date) ~= '' then
			date = (args["tarih"] or args.date)
		elseif (args["tarih"] or args.date) == '' and self.isTemplatePage then
			date = lang:formatDate('F Y')
		end
		if date then
			self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date)
		end
		self.info = args.info
		if yesno(args["kald?rmailetisi"] or args.removalnotice) then
			self.removalNotice = cfg.removalNotice
		end
	end

	-- Set the non-collapsible text field. At the moment this is used by all box
	-- types other than ambox, and also by ambox when small=yes.
	if self.isSmall then
		self.text = (args["kü?ükmetin"] or args["ufakmetin"] or args["kü?ükyaz?"] or args.smalltext) or (args["metin"] or args["yaz?"] or args.text)
	else
		self.text = (args["metin"] or args["yaz?"] or args.text)
	end

	-- Set the below row.
	self.below = cfg.below and (args["alt"] or args.below)

	-- General image settings.
	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
	self.imageEmptyCell = cfg.imageEmptyCell
	if cfg.imageEmptyCellStyle then
		self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'
	end

	-- Left image settings.
	local imageLeft = self.isSmall and (args["kü?ükresim"] or args["ufakresim"] or args["kü?ük resim"] or args.smallimage) or (args["resim"] or args.image)
	if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
		or not cfg.imageCheckBlank and imageLeft ~= 'none'
	then
		self.imageLeft = imageLeft
		if not imageLeft then
			local imageSize = self.isSmall
				and (cfg.imageSmallSize or '30x30px')
				or '40x40px'
			self.imageLeft = string.format('[[Dosya:%s|%s|link=|alt=]]', self.typeImage
				or 'Information icon4.svg', imageSize)
		end
	end

	-- Right image settings.
	local imageRight = self.isSmall and (args["kü?üksa?resim"] or args["sa?kü?ükresim"] or args["kü?ükresimsa?"] or args["ufakresimsa?"] or args["kü?ük resimsa?"] or args.smallimageright) or (args["sa?resim"] or args["resimsa?"] or args.imageright)
	if not (cfg.imageRightNone and imageRight == 'none') then
		self.imageRight = imageRight
	end
end

function MessageBox:setMainspaceCategories()
	local args = self.args
	local cfg = self.cfg

	if not cfg.allowMainspaceCategories then
		return nil
	end

	local nums = {}
	for _, prefix in ipairs{'cat', 'category', 'all', 'kat', 'hepsi', 'tümü'} do
		args[prefix .. '1'] = args[prefix]
		nums = union(nums, getArgNums(args, prefix))
	end

	-- The following is roughly equivalent to the old {{Ambox/category}}.
	local date = (args["tarih"] or args.date)
	date = type(date) == 'string' and date
	local preposition = ''
	for _, num in ipairs(nums) do
		local mainCat = args['cat' .. tostring(num)]
			or args['category' .. tostring(num)]
			or args['kat' .. tostring(num)]
		local allCat = args['all' .. tostring(num)]
		    or args['hepsi' .. tostring(num)]
		    or args['tümü' .. tostring(num)]
		mainCat = type(mainCat) == 'string' and mainCat
		allCat = type(allCat) == 'string' and allCat
		if mainCat and date and date ~= '' then
			local catTitle = string.format('%s %s %s', mainCat, preposition, date)
			self:addCat(0, catTitle)
			catTitle = getTitleObject('Kategori:' .. catTitle)
			if not catTitle or not catTitle.exists then
				self:addCat(0, '?ablonda ge?ersiz tarih parametresine sahip maddeler')
			end
		elseif mainCat and (not date or date == '') then
			self:addCat(0, mainCat)
		end
		if allCat then
			self:addCat(0, allCat)
		end
	end
end

function MessageBox:setTemplateCategories()
	local args = self.args
	local cfg = self.cfg

	-- Add template categories.
	if cfg.templateCategory then
		if cfg.templateCategoryRequireName then
			if self.isTemplatePage then
				self:addCat(10, cfg.templateCategory)
			end
		elseif not self.title.isSubpage then
			self:addCat(10, cfg.templateCategory)
		end
	end

	-- Add template error categories.
	if cfg.templateErrorCategory then
		local templateErrorCategory = cfg.templateErrorCategory
		local templateCat, templateSort
		if not self.name and not self.title.isSubpage then
			templateCat = templateErrorCategory
		elseif self.isTemplatePage then
			local paramsToCheck = cfg.templateErrorParamsToCheck or {}
			local count = 0
			for i, param in ipairs(paramsToCheck) do
				if not args[param] then
					count = count + 1
				end
			end
			if count > 0 then
				templateCat = templateErrorCategory
				templateSort = tostring(count)
			end
			if self.categoryNums and #self.categoryNums > 0 then
				templateCat = templateErrorCategory
				templateSort = 'C'
			end
		end
		self:addCat(10, templateCat, templateSort)
	end
end

function MessageBox:setAllNamespaceCategories()
	-- Set categories for all namespaces.
	if self.invalidTypeError then
		local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
		self:addCat('all', 'Parametreleri düzeltilmesi gereken Vikipedi bilgi kutular?', allSort)
	end
	if self.isSubstituted then
		self:addCat('all', 'Hatal? olarak de?i?tirilen ?ablonlara sahip sayfalar')
	end
end

function MessageBox:setCategories()
	if self.title.namespace == 0 then
		self:setMainspaceCategories()
	elseif self.title.namespace == 10 then
		self:setTemplateCategories()
	end
	self:setAllNamespaceCategories()
end

function MessageBox:renderCategories()
	if not self.hasCategories then
		-- No categories added, no need to pass them to Category handler so,
		-- if it was invoked, it would return the empty string.
		-- So we shortcut and return the empty string.
		return ""
	end
	-- Convert category tables to strings and pass them through
	-- [[Modül:Kategori i?leyici]].
	return require('Modül:Kategori i?leyici')._main{
		main = table.concat(self.categories[0] or {}),
		template = table.concat(self.categories[10] or {}),
		all = table.concat(self.categories.all or {}),
		nocat = (self.args["katyok"] or self.args.nocat),
		page = self.args.page
	}
end

function MessageBox:export()
	local root = mw.html.create()

	-- Add the subst check error.
	if self.isSubstituted and self.name then
		root:tag('b')
			:addClass('error')
			:wikitext(string.format(
				'?ablon <code>%s[[?ablon:%s|%s]]%s</code> hatal? olarak de?i?tirildi.',
				mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
			))
	end

	-- Create the box table.
	local boxTable = root:tag('table')
	boxTable:attr('id', self.id or nil)
	for i, class in ipairs(self.classes or {}) do
		boxTable:addClass(class or nil)
	end
	boxTable
		:cssText(self.style or nil)
		:attr('role', 'presentation')

	if self.attrs then
		boxTable:attr(self.attrs)
	end

	-- Add the left-hand image.
	local row = boxTable:tag('tr')
	if self.imageLeft then
		local imageLeftCell = row:tag('td'):addClass('mbox-image')
		if self.imageCellDiv then
			-- If we are using a div, redefine imageLeftCell so that the image
			-- is inside it. Divs use style="width: 52px;", which limits the
			-- image width to 52px. If any images in a div are wider than that,
			-- they may overlap with the text or cause other display problems.
			imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
		end
		imageLeftCell:wikitext(self.imageLeft or nil)
	elseif self.imageEmptyCell then
		-- Some message boxes define an empty cell if no image is specified, and
		-- some don't. The old template code in templates where empty cells are
		-- specified gives the following hint: "No image. Cell with some width
		-- or padding necessary for text cell to have 100% width."
		row:tag('td')
			:addClass('mbox-empty-cell')
			:cssText(self.imageEmptyCellStyle or nil)
	end

	-- Add the text.
	local textCell = row:tag('td'):addClass('mbox-text')
	if self.useCollapsibleTextFields then
		-- The message box uses advanced text parameters that allow things to be
		-- collapsible. At the moment, only ambox uses this.
		textCell:cssText(self.textstyle or nil)
		local textCellDiv = textCell:tag('div')
		textCellDiv
			:addClass('mbox-text-span')
			:wikitext(self.issue or nil)
		if (self.talk or self.fix) and not self.isSmall then
			textCellDiv:tag('span')
				:addClass('hide-when-compact')
				:wikitext(self.talk and (' ' .. self.talk) or nil)
				:wikitext(self.fix and (' ' .. self.fix) or nil)
		end
		textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
		if self.info and not self.isSmall then
			textCellDiv
				:tag('span')
				:addClass('hide-when-compact')
				:wikitext(self.info and (' ' .. self.info) or nil)
		end
		if self.removalNotice then
			textCellDiv:tag('small')
				:addClass('hide-when-compact')
				:tag('i')
					:wikitext(string.format(" (%s)", self.removalNotice))
		end
	else
		-- Default text formatting - anything goes.
		textCell
			:cssText(self.textstyle or nil)
			:wikitext(self.text or nil)
	end

	-- Add the right-hand image.
	if self.imageRight then
		local imageRightCell = row:tag('td'):addClass('mbox-imageright')
		if self.imageCellDiv then
			-- If we are using a div, redefine imageRightCell so that the image
			-- is inside it.
			imageRightCell = imageRightCell:tag('div'):css('width', '52px')
		end
		imageRightCell
			:wikitext(self.imageRight or nil)
	end

	-- Add the below row.
	if self.below then
		boxTable:tag('tr')
			:tag('td')
				:attr('colspan', self.imageRight and '3' or '2')
				:addClass('mbox-text')
				:cssText(self.textstyle or nil)
				:wikitext(self.below or nil)
	end

	-- Add error message for invalid type parameters.
	if self.invalidTypeError then
		root:tag('div')
			:css('text-align', 'center')
			:wikitext(string.format(
				'Bu ileti kutusu ge?ersiz "tür=%s" parametresi kullan?yor olup hatan?n düzeltilmesi gereklidir.',
				self.type or ''
			))
	end

	-- Add categories.
	root:wikitext(self:renderCategories() or nil)

	return tostring(root)
end

--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------

local p, mt = {}, {}

function p._exportClasses()
	-- For testing.
	return {
		MessageBox = MessageBox
	}
end

function p.main(boxType, args, cfgTables)
	local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
	box:setParameters()
	box:setCategories()
	return box:export()
end

function mt.__index(t, k)
	return function (frame)
		if not getArgs then
			getArgs = require('Modül:Arguments').getArgs
		end
		return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
	end
end

return setmetatable(p, mt)
10月出生是什么星座 考虑是什么意思 七个小矮人分别叫什么 g代表什么意思 脚踝疼是什么原因
嘴唇肿了是什么原因 女人喝枸杞水有什么好处 鼻后滴漏吃什么药 词牌名是什么意思 易孕体质有什么特征
粘土是什么土 吃什么可降低胆固醇 男性硬不起来什么原因 亚专业是什么意思 右胸上方隐痛什么原因
吃什么拉什么 然五行属性是什么 oc是什么 2月7号是什么星座 榴莲为什么贵
白猫进家有什么预兆creativexi.com 乳腺增生是什么症状hcv8jop0ns3r.cn 牙龈萎缩吃什么药hcv9jop0ns0r.cn 甲状腺结节是什么意思hcv7jop9ns5r.cn mac代表什么hcv8jop2ns9r.cn
头皮痒头皮屑多是什么原因wzqsfys.com 斑鸠吃什么zhiyanzhang.com 椒盐是什么调料hcv8jop0ns0r.cn o型b型生的孩子是什么血型hcv7jop6ns5r.cn 雪花粉是什么面粉hcv9jop0ns6r.cn
06年属狗的是什么命hcv8jop3ns5r.cn 巴扎黑是什么意思520myf.com egc是什么意思hcv8jop8ns2r.cn 青光眼是什么原因引起的hcv7jop6ns9r.cn 什么是动物奶油hcv9jop5ns0r.cn
怂恿是什么意思qingzhougame.com 奇货可居什么意思hcv9jop2ns9r.cn jeep衣服什么档次xscnpatent.com 痛风是什么病hcv9jop6ns2r.cn 2024年属什么hcv7jop9ns2r.cn
百度