Module:Message box: Difference between revisions

fix talk page links, and fix bug producing spurious WhatLinksHere links (however note that a link will appear for Foo if the code "talk=Foo" is used)
m (Changed protection level of Module:Message box: High-risk Lua module: used in system messages ([Edit=Block all non-admin users] (indefinite) [Move=Block all non-admin users] (indefinite)))
(fix talk page links, and fix bug producing spurious WhatLinksHere links (however note that a link will appear for Foo if the code "talk=Foo" is used))
Line 20:
local box = {}
 
local function getTitleObject(page, ...)
if type(page) == 'string' then
-- 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, page, ...)
if success then
return title
Line 203:
self.textstyle = args.textstyle
 
-- Find if we are on the template page or not. This functionality is only used if useCollapsibleTextFields is set,
-- Process data for collapsible text fields. At the moment these are only used in {{ambox}}.
-- or if both cfg.templateCategory and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields then= cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then
self.name = args.name
localif nameTitle = getTitleObject(self.name) then
local templateName = mw.ustring.match(self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$') or self.name
self.isTemplatePage = nameTitle and self.title.prefixedText == ('Template:' .. nameTitle.text) and true or false
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) or false
end
 
-- Process data for collapsible text fields. At the moment these are only used in {{ambox}}.
if self.useCollapsibleTextFields = cfg.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
Line 233 ⟶ 241:
-- Get the self.talk value.
local talk = args.talk
if talk == '' -- Show talk links on the template page or template subpages if the talk parameter is blank.
if talk == '' and self.isTemplatePage then
and self.templateTitle
and (mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle))
then
talk = '#'
elseif talk == '' then
talkTitletalk = nil
end
if talk then
-- See ifIf the talk link exists andvalue is for a talk orpage, make a contentlink namespaceto 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
-- If we couldn't process the talk page link, get the talk page of the current page.
talkTitle = getTitleObject(self.title.text, mw.site.namespaces[self.title.namespace].talk.id)
local success
success, talkTitle = pcall(self.title.talkPageTitle, self.title)
if not success then
talkTitle = nil
end
end
if talkTitle and talkTitle.exists then
local talkText = 'Relevant discussion may be found on'
if talkTitle.isTalkPagetalkArgIsTalkPage then
talkText = format('%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText)
else
Line 352 ⟶ 363:
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
self.isTemplatePage = type(self.name) == 'string' and self.title.prefixedText == ('Template:' .. self.name)
if self.isTemplatePage then
self:addCat('template', cfg.templateCategory)