Module:VersionMessageBox: Difference between revisions

From Against the Storm Official Wiki
(created)
 
m (modified the styling some more)
Line 24: Line 24:
--
--
-- specialization names
-- specialization names
local CSS_VERSION_MESSAGE_BOX = "float:left; max-width: 400px; margin: auto; padding: 15px; border: 1px solid #366fe0; border-radius: 12px; background: #c9dcff"
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_CLASS_VERSION_MESSAGE_BOX = "ATS-version-message-box"
local CSS_COLOR_VERSION_BACKGROUND = "#c9dcff"
local CSS_COLOR_VERSION_BACKGROUND = "#dbe8ff"
local CSS_COLOR_VERSION_BORDER = "#366fe0"
local CSS_COLOR_VERSION_BORDER = "#8ab3ff"
local MESSAGE_BOX_ICON = "Hourglass_Icon_.png"
local MESSAGE_BOX_ICON = "Hourglass_Icon_.png"


Line 94: Line 94:
div:cssText(CSS_VERSION_MESSAGE_BOX)
div:cssText(CSS_VERSION_MESSAGE_BOX)
messageText = "This article was last updated during version '''" .. argLastUpdated .. "'''.<br />" ..
messageText = "This page was last updated during version '''" .. argLastUpdated .. "'''." ..
"The game is now in version '''" .. argCurrentVersion .. "'''.<br />" ..
"The game is now in version '''" .. argCurrentVersion .. "'''.<br />" ..
"Some information may be out of date.<br />" ..
"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."
"Help us keep the wiki up to date by comparing this article against the patch notes and updating this page."

Revision as of 02:42, 17 February 2023

Documentation for this module may be created at Module:VersionMessageBox/doc

-------------------------------------------------------------------------------
-- This module renders the {{Version}} 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 
-- {{CurrentVersion}}.
--
-- 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 .. "'''.<br />" ..
		"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("[[File:" .. MESSAGE_BOX_ICON .. "|left|x48px|link=|Out of date]] ")
		:tag('div'):cssText("margin-left: 60px")
		:wikitext(messageText)
	
	return div
end

-- return when required into another module
return VersionMessageBox