« Module:Message box » : différence entre les versions
| m 1 version importée | test>Izno  per tper | ||
| Ligne 1 : | Ligne 1 : | ||
| require('strict') | require('strict') | ||
| local getArgs | local getArgs | ||
| local yesno = require('Module:Yesno') | local yesno = require('Module:Yesno') | ||
| local lang = mw.language.getContentLanguage() | local lang = mw.language.getContentLanguage() | ||
| local CONFIG_MODULE = 'Module:Message box/configuration' | local CONFIG_MODULE = 'Module:Message box/configuration' | ||
| local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} | local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} | ||
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Ligne 67 : | Ligne 59 : | ||
| 	args = args or {} | 	args = args or {} | ||
| 	local obj = {} | 	local obj = {} | ||
| 	-- Set the title object and the namespace. | 	-- Set the title object and the namespace. | ||
| Ligne 84 : | Ligne 74 : | ||
| 				-- use template from DEMOSPACES | 				-- use template from DEMOSPACES | ||
| 				obj.cfg = cfg[DEMOSPACES[demospace]] | 				obj.cfg = cfg[DEMOSPACES[demospace]] | ||
| 			elseif string.find( demospace, 'talk' ) then | 			elseif string.find( demospace, 'talk' ) then | ||
| 				-- demo as a talk page | 				-- demo as a talk page | ||
| 				obj.cfg = cfg.tmbox | 				obj.cfg = cfg.tmbox | ||
| 			else | 			else | ||
| 				-- default to ombox | 				-- default to ombox | ||
| 				obj.cfg = cfg.ombox | 				obj.cfg = cfg.ombox | ||
| 			end | 			end | ||
| 		elseif ns == 0 then | 		elseif ns == 0 then | ||
| 			obj.cfg = cfg.ambox -- main namespace | 			obj.cfg = cfg.ambox -- main namespace | ||
| 		elseif ns == 6 then | 		elseif ns == 6 then | ||
| 			obj.cfg = cfg.imbox -- file namespace | 			obj.cfg = cfg.imbox -- file namespace | ||
| 		elseif ns == 14 then | 		elseif ns == 14 then | ||
| 			obj.cfg = cfg.cmbox -- category namespace | 			obj.cfg = cfg.cmbox -- category namespace | ||
| 		else | 		else | ||
| 			local nsTable = mw.site.namespaces[ns] | 			local nsTable = mw.site.namespaces[ns] | ||
| 			if nsTable and nsTable.isTalk then | 			if nsTable and nsTable.isTalk then | ||
| 				obj.cfg = cfg.tmbox -- any talk namespace | 				obj.cfg = cfg.tmbox -- any talk namespace | ||
| 			else | 			else | ||
| 				obj.cfg = cfg.ombox -- other namespaces or invalid input | 				obj.cfg = cfg.ombox -- other namespaces or invalid input | ||
| 			end | 			end | ||
| 		end | 		end | ||
| Ligne 157 : | Ligne 139 : | ||
| 		return nil | 		return nil | ||
| 	end | 	end | ||
| 	table.insert(self.classes, class) | |||
| end | end | ||
| Ligne 180 : | Ligne 155 : | ||
| 	self.typeClass = typeData.class | 	self.typeClass = typeData.class | ||
| 	self.typeImage = typeData.image | 	self.typeImage = typeData.image | ||
| 	self.typeImageNeedsLink = typeData.imageNeedsLink | |||
| 	-- Find if the box has been wrongly substituted. | 	-- Find if the box has been wrongly substituted. | ||
| Ligne 193 : | Ligne 169 : | ||
| 	self.id = args.id | 	self.id = args.id | ||
| 	self.name = args.name | 	self.name = args.name | ||
| 	if self.name then | 	if self.name then | ||
| 		self:addClass('box-' .. string.gsub(self.name,' ','_')) | 		self:addClass('box-' .. string.gsub(self.name,' ','_')) | ||
| 	end | 	end | ||
| 	if yesno(args.plainlinks) ~= false then | |||
| 		self:addClass('plainlinks') | 		self:addClass('plainlinks') | ||
| 	end | |||
| 		self: | 	for _, class in ipairs(cfg.classes or {}) do | ||
| 		self:addClass(class) | |||
| 	end | 	end | ||
| 	if self.isSmall then | 	if self.isSmall then | ||
| Ligne 215 : | Ligne 188 : | ||
| 	-- Set text style. | 	-- Set text style. | ||
| 	self.textstyle = args.textstyle | 	self.textstyle = args.textstyle | ||
| 	-- Set image classes. | |||
| 	self.imageRightClass = args.imagerightclass or args.imageclass | |||
| 	self.imageLeftClass = args.imageleftclass or args.imageclass | |||
| 	-- Find if we are on the template page or not. This functionality is only | 	-- Find if we are on the template page or not. This functionality is only | ||
| Ligne 289 : | Ligne 266 : | ||
| 			end | 			end | ||
| 			if talkTitle and talkTitle.exists then | 			if talkTitle and talkTitle.exists then | ||
|                 local talkText | |||
|                 if self.isSmall then | |||
|                     local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) | |||
|                     talkText = string.format('([[%s|talk]])', talkLink) | |||
|                 else | |||
|                     talkText = 'Relevant discussion may be found on' | |||
|                     if talkArgIsTalkPage then | |||
|                         talkText = string.format( | |||
|                             '%s [[%s|%s]].', | |||
|                             talkText, | |||
|                             talk, | |||
|                             talkTitle.prefixedText | |||
|                         ) | |||
|                     else | |||
|                         talkText = string.format( | |||
|                             '%s the [[%s#%s|talk page]].', | |||
|                             talkText, | |||
|                             talkTitle.prefixedText, | |||
|                             talk | |||
|                         ) | |||
|                     end | |||
|                 end | |||
| 				self.talk = talkText | 				self.talk = talkText | ||
| 			end | 			end | ||
| Ligne 318 : | Ligne 301 : | ||
| 		end | 		end | ||
| 		if date then | 		if date then | ||
| 			self.date = string.format(" < | 			self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) | ||
| 		end | 		end | ||
| 		self.info = args.info | 		self.info = args.info | ||
| Ligne 340 : | Ligne 323 : | ||
| 	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv | 	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv | ||
| 	self.imageEmptyCell = cfg.imageEmptyCell | 	self.imageEmptyCell = cfg.imageEmptyCell | ||
| 	-- Left image settings. | 	-- Left image settings. | ||
| Ligne 354 : | Ligne 334 : | ||
| 				and (cfg.imageSmallSize or '30x30px') | 				and (cfg.imageSmallSize or '30x30px') | ||
| 				or '40x40px' | 				or '40x40px' | ||
| 			self.imageLeft = string.format('[[File:%s|%s | 			self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage | ||
| 				or 'Information icon4.svg', imageSize) | 				or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" ) | ||
| 		end | 		end | ||
| 	end | 	end | ||
| Ligne 364 : | Ligne 344 : | ||
| 		self.imageRight = imageRight | 		self.imageRight = imageRight | ||
| 	end | 	end | ||
| 	-- set templatestyles | |||
| 	self.base_templatestyles = cfg.templatestyles | |||
| 	self.templatestyles = args.templatestyles | |||
| end | end | ||
| Ligne 450 : | Ligne 434 : | ||
| function MessageBox:setAllNamespaceCategories() | function MessageBox:setAllNamespaceCategories() | ||
| 	-- Set categories for all namespaces. | 	-- Set categories for all namespaces. | ||
| 	if self.invalidTypeError then | |||
| 		local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText | |||
| 		self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) | |||
| 	end | |||
| 	if self.isSubstituted then | 	if self.isSubstituted then | ||
| 		self:addCat('all', 'Pages with incorrectly substituted templates') | 		self:addCat('all', 'Pages with incorrectly substituted templates') | ||
| Ligne 495 : | Ligne 483 : | ||
| 	end | 	end | ||
| 	local frame = mw.getCurrentFrame() | |||
| 	root:wikitext( | 	root:wikitext(frame:extensionTag{ | ||
| 		name = 'templatestyles', | 		name = 'templatestyles', | ||
| 		args = { src =  | 		args = { src = self.base_templatestyles }, | ||
| 	}) | 	}) | ||
| 	-- Add support for a single custom templatestyles sheet. Undocumented as | |||
| 	-- need should be limited and many templates using mbox are substed; we | |||
| 	-- don't want to spread templatestyles sheets around to arbitrary places | |||
| 	if self.templatestyles then | |||
| 		root:wikitext(frame:extensionTag{ | |||
| 			name = 'templatestyles', | |||
| 			args = { src = self.templatestyles }, | |||
| 		}) | |||
| 	end | |||
| 	-- Create the box table. | 	-- Create the box table. | ||
| 	local  | 	local boxTable = root:tag('table') | ||
| 	boxTable:attr('id', self.id or nil) | 	boxTable:attr('id', self.id or nil) | ||
| 	for class | 	for i, class in ipairs(self.classes or {}) do | ||
| 		boxTable:addClass(class or nil) | 		boxTable:addClass(class or nil) | ||
| 	end | 	end | ||
| Ligne 535 : | Ligne 521 : | ||
| 			-- image width to 52px. If any images in a div are wider than that, | 			-- 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. | 			-- they may overlap with the text or cause other display problems. | ||
| 			imageLeftCell = imageLeftCell:tag('div'): | 			imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') | ||
| 		end | 		end | ||
| 		imageLeftCell:wikitext(self.imageLeft or nil) | 		imageLeftCell | ||
| 			:addClass(self.imageLeftClass) | |||
| 			:wikitext(self.imageLeft or nil) | |||
| 	elseif self.imageEmptyCell then | 	elseif self.imageEmptyCell then | ||
| 		-- Some message boxes define an empty cell if no image is specified, and | 		-- Some message boxes define an empty cell if no image is specified, and | ||
| Ligne 545 : | Ligne 533 : | ||
| 		row:tag('td') | 		row:tag('td') | ||
| 			:addClass('mbox-empty-cell') | 			:addClass('mbox-empty-cell') | ||
| 	end | 	end | ||
| Ligne 558 : | Ligne 545 : | ||
| 			:addClass('mbox-text-span') | 			:addClass('mbox-text-span') | ||
| 			:wikitext(self.issue or nil) | 			:wikitext(self.issue or nil) | ||
| 		if (self.talk or self.fix)  | 		if (self.talk or self.fix) then | ||
| 			textCellDiv:tag('span') | 			textCellDiv:tag('span') | ||
| 				:addClass('hide-when-compact') | 				:addClass('hide-when-compact') | ||
| Ligne 572 : | Ligne 559 : | ||
| 		end | 		end | ||
| 		if self.removalNotice then | 		if self.removalNotice then | ||
| 			textCellDiv:tag(' | 			textCellDiv:tag('span') | ||
| 				:addClass('hide-when-compact') | 				:addClass('hide-when-compact') | ||
| 				:tag('i') | 				:tag('i') | ||
| Ligne 590 : | Ligne 577 : | ||
| 			-- If we are using a div, redefine imageRightCell so that the image | 			-- If we are using a div, redefine imageRightCell so that the image | ||
| 			-- is inside it. | 			-- is inside it. | ||
| 			imageRightCell = imageRightCell:tag('div'): | 			imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') | ||
| 		end | 		end | ||
| 		imageRightCell | 		imageRightCell | ||
| 			:addClass(self.imageRightClass) | |||
| 			:wikitext(self.imageRight or nil) | 			:wikitext(self.imageRight or nil) | ||
| 	end | 	end | ||
| Ligne 609 : | Ligne 597 : | ||
| 	if self.invalidTypeError then | 	if self.invalidTypeError then | ||
| 		root:tag('div') | 		root:tag('div') | ||
| 			: | 			:addClass('mbox-invalid-type') | ||
| 			:wikitext(string.format( | 			:wikitext(string.format( | ||
| 				'This message box is using an invalid "type=%s" parameter and needs fixing.', | 				'This message box is using an invalid "type=%s" parameter and needs fixing.', | ||