Module:Message box: Difference between revisions

    m (1 revision imported)
    (show link to talk discussion when used in small format, per request)
    Line 12: Line 12:
    -- Define constants
    -- Define constants
    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'}


    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    Line 74: Line 75:
    local ns = obj.title.namespace
    local ns = obj.title.namespace
    -- boxType is "mbox" or invalid input
    -- boxType is "mbox" or invalid input
    if ns == 0 then
    if args.demospace and args.demospace ~= '' then
    -- implement demospace parameter of mbox
    local demospace = string.lower(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
    obj.cfg = cfg.ambox -- main namespace
    elseif ns == 6 then
    elseif ns == 6 then
    Line 160: Line 174:
    -- Add attributes, classes and styles.
    -- Add attributes, classes and styles.
    self.id = args.id
    self.id = args.id
    self.name = args.name
    if self.name then
    self:addClass('box-' .. string.gsub(self.name,' ','_'))
    end
    if yesno(args.plainlinks) ~= false then
    if yesno(args.plainlinks) ~= false then
    self:addClass('plainlinks')
    self:addClass('plainlinks')
    Line 185: Line 203:
    and cfg.templateCategoryRequireName
    and cfg.templateCategoryRequireName
    then
    then
    self.name = args.name
    if self.name then
    if self.name then
    local templateName = mw.ustring.match(
    local templateName = mw.ustring.match(
    Line 197: Line 214:
    and mw.title.equals(self.title, self.templateTitle)
    and mw.title.equals(self.title, self.templateTitle)
    end
    end
     
    -- Process data for collapsible text fields. At the moment these are only
    -- Process data for collapsible text fields. At the moment these are only
    -- used in {{ambox}}.
    -- used in {{ambox}}.
    Line 251: Line 268:
    end
    end
    if talkTitle and talkTitle.exists then
    if talkTitle and talkTitle.exists then
    local talkText = 'Relevant discussion may be found on'
                    local talkText
    if talkArgIsTalkPage then
                    if self.isSmall then
    talkText = string.format(
                        local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
    '%s [[%s|%s]].',
                        talkText = string.format('([[%s|talk]])', talkLink)
    talkText,
                    else
    talk,
                        talkText = 'Relevant discussion may be found on'
    talkTitle.prefixedText
                        if talkArgIsTalkPage then
    )
                            talkText = string.format(
    else
                                '%s [[%s|%s]].',
    talkText = string.format(
                                talkText,
    '%s the [[%s#%s|talk page]].',
                                talk,
    talkText,
                                talkTitle.prefixedText
    talkTitle.prefixedText,
                            )
    talk
                        else
    )
                            talkText = string.format(
    end
                                '%s the [[%s#%s|talk page]].',
                                talkText,
                                talkTitle.prefixedText,
                                talk
                            )
                        end
                    end
    self.talk = talkText
    self.talk = talkText
    end
    end
    Line 280: Line 303:
    end
    end
    if date then
    if date then
    self.date = string.format(" <small>''(%s)''</small>", date)
    self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date)
    end
    end
    self.info = args.info
    self.info = args.info
    Line 507: Line 530:
    :addClass('mbox-text-span')
    :addClass('mbox-text-span')
    :wikitext(self.issue or nil)
    :wikitext(self.issue or nil)
    if (self.talk or self.fix) and not self.isSmall then
    if (self.talk or self.fix) then
    textCellDiv:tag('span')
    textCellDiv:tag('span')
    :addClass('hide-when-compact')
    :addClass('hide-when-compact')