Module:Message box: Difference between revisions
fix bug for data being shared between multiple message boxes called from the same module; allow boxes to be hidden; use Module:Arguments to fetch the arguments
m>Mr. Stradivarius (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>Mr. Stradivarius (fix bug for data being shared between multiple message boxes called from the same module; allow boxes to be hidden; use Module:Arguments to fetch the arguments) |
||
Line 2: | Line 2: | ||
-- Require necessary modules. | -- Require necessary modules. | ||
local getArgs = require('Module:Arguments').getArgs | |||
local htmlBuilder = require('Module:HtmlBuilder') | local htmlBuilder = require('Module:HtmlBuilder') | ||
local categoryHandler = require('Module:Category handler').main | local categoryHandler = require('Module:Category handler').main | ||
Line 18: | Line 19: | ||
local trim = mw.text.trim | local trim = mw.text.trim | ||
-------------------------------------------------------------------------------- | |||
-- Helper functions | |||
-------------------------------------------------------------------------------- | |||
local function getTitleObject(page, ...) | local function getTitleObject(page, ...) | ||
Line 58: | Line 61: | ||
table.sort(nums) | table.sort(nums) | ||
return nums | return nums | ||
end | |||
-------------------------------------------------------------------------------- | |||
-- Box class definition | |||
-------------------------------------------------------------------------------- | |||
local box = {} | |||
box.__index = box | |||
function box.new() | |||
local obj = {} | |||
setmetatable(obj, box) | |||
return obj | |||
end | end | ||
Line 195: | Line 211: | ||
if self.isSmall then | if self.isSmall then | ||
self:addClass(cfg.smallClass or 'mbox-small') | self:addClass(cfg.smallClass or 'mbox-small') | ||
end | |||
if yesno(args.hidden) then | |||
self:addClass('infobox editsection') | |||
end | end | ||
self:addClass(self.typeClass) | self:addClass(self.typeClass) | ||
Line 534: | Line 553: | ||
local function main(boxType, args) | local function main(boxType, args) | ||
box:setTitle(args) | local outputBox = box.new() | ||
local cfg = | outputBox:setTitle(args) | ||
args = | local cfg = outputBox:getConfig(boxType) | ||
args = outputBox:removeBlankArgs(cfg, args) | |||
return | outputBox:setBoxParameters(cfg, args) | ||
return outputBox:export() | |||
end | end | ||
local function makeWrapper(boxType) | local function makeWrapper(boxType) | ||
return function (frame) | return function (frame) | ||
local args = getArgs(frame, {trim = false, removeBlanks = false}) | |||
return main(boxType, args) | return main(boxType, args) | ||
end | end |