Module:VersionMessageBox

--- -- This module renders the template. -- https://hoodedhorse.com/wiki/Against_the_Storm/Template:Version -- -- This template #invokes VersionMessageBox.checkVersion(frame), below. -- -- The template requires one argument provided by wiki page writers using the -- template, which is the version of the game when the wiki page was last -- updated. There is a second argument provided by the template itself that the -- page writers canont overwrite, which always refers to the current version of -- the game. The current version is identified by the wiki as --. -- -- Depending on the arguments, this module creates a message box that displays -- when a reader opens a page that hasn't been reviewed and updated since the -- version changed. The message box tells the reader what version of the game -- the page was udpated with, the current version, and an encouraging note to -- help keep the wiki up to date. -- @module VersionMessageBox local VersionMessageBox = {}

-- -- Constants -- -- specialization names local CSS_VERSION_MESSAGE_BOX = "max-width: 500px; margin-left: auto; padding: 15px; border: 1px solid #8ab3ff; border-radius: 12px; background: #dbe8ff; font-size: 10px" local CSS_CLASS_VERSION_MESSAGE_BOX = "ATS-version-message-box" local CSS_COLOR_VERSION_BACKGROUND = "#dbe8ff" local CSS_COLOR_VERSION_BORDER = "#8ab3ff" local MESSAGE_BOX_ICON = "Hourglass_Icon_.png"

-- -- Main rendering function --

--- -- Checks whether a message box is necessary. -- -- If the page is outdated, calls the method to draw the message box and adds -- the right category to the page. -- @param frame a table describing the MediaWiki frame; frame['args'] is a -- table containg the template arguments; frame['args']['updated'] is the first -- argument; frame['args']['currentVersion'] is the second argument. -- @return a string containing the wiki markup for a message box, or an empty -- string if the page is updated function VersionMessageBox.checkVersion(frame) -- extract the arguments we care about from the frame local argLastUpdated = frame.args.updated local argCurrentVersion = frame.args.currentVersion -- validate that there are version values to use if not argLastUpdated or "" == argLastUpdated then return "Version error: please provide the game version with which you updated this page" end if not argCurrentVersion or "" == argCurrentVersion then return "Version error: template did not identify current version correctly" end -- let's try it for a while just checking whether they are different. In the -- future, we may need to add actual numerical-comparison checks. if argLastUpdated == argCurrentVersion then -- the page is up to date, nothing else needed return "" else -- render the message box local html = VersionMessageBox.renderMessageBox(argLastUpdated, argCurrentVersion) -- add the category at the bottom. -- mw:addCategory("Pages needing version review") this doesn't work -- return tostring(html) end end

--- -- Renders the message box. -- -- Renders a div with the appropriate CSS class for correct display. The div -- contains the message about the version of the page and the current version of -- the game. And it includes a statement encouraging people to keep the wiki up -- to date. -- @param argLastUpdated the version of the game when the page was updated -- @param argCurrentVersion the current version of the game -- @return the HTML markup for a message box function VersionMessageBox.renderMessageBox(argLastUpdated, argCurrentVersion)

local div = mw.html.create('div') div:addClass(CSS_CLASS_VERSION_MESSAGE_BOX) div:cssText(CSS_VERSION_MESSAGE_BOX) messageText = "This page was last updated during version '''" .. argLastUpdated .. "." ..		"The game is now in version " .. argCurrentVersion .. "'''. " ..		"Some information may be out of date. " .. "Help us keep the wiki up to date by comparing this article against the patch notes and updating this page." div:wikitext(" ") :tag('div'):cssText("margin-left: 60px") :wikitext(messageText) return div end

-- return when required into another module return VersionMessageBox