Module:T-Campaign: Difference between revisions
// via Wikitext Extension for VSCode Tags: Manual revert Reverted |
// via Wikitext Extension for VSCode Tag: Reverted |
||
| Line 181: | Line 181: | ||
ErrorHandling.addStatus(context, 'campaignBanner', 'Empty banner content', 'No content to display') | ErrorHandling.addStatus(context, 'campaignBanner', 'Empty banner content', 'No content to display') | ||
return ErrorHandling.formatCombinedOutput(context) | return ErrorHandling.formatCombinedOutput(context) | ||
end | |||
-- DEFENSIVE: Validate campaign title before processing | |||
local campaignTitle = nil | |||
local titleSource = "fallback" | |||
if args._campaign_data and args._campaign_data.defaults then | |||
local rawTitle = args._campaign_data.defaults.title | |||
if rawTitle and type(rawTitle) == "string" and rawTitle ~= "" then | |||
campaignTitle = rawTitle | |||
titleSource = "json_default" | |||
ErrorHandling.addStatus(context, 'campaignBanner', 'Title validation passed', 'Source: JSON defaults, Value: "' .. campaignTitle .. '"') | |||
else | |||
ErrorHandling.addStatus(context, 'campaignBanner', 'Title validation failed', 'Raw value: "' .. tostring(rawTitle) .. '", Type: ' .. type(rawTitle)) | |||
end | |||
else | |||
ErrorHandling.addStatus(context, 'campaignBanner', 'Campaign data structure invalid', 'Missing _campaign_data or defaults') | |||
end | |||
-- Robust fallback with error reporting | |||
if not campaignTitle then | |||
campaignTitle = "Campaign" | |||
titleSource = "fallback" | |||
ErrorHandling.addStatus(context, 'campaignBanner', 'Using fallback title', 'Original title was missing or invalid') | |||
end | end | ||
local placeholderValues = { | local placeholderValues = { | ||
CAMPAIGN_NAME = | CAMPAIGN_NAME = campaignTitle | ||
} | } | ||
-- Pre-flight validation before calling WikitextProcessor | |||
ErrorHandling.addStatus(context, 'campaignBanner', 'Sending to WikitextProcessor', 'CAMPAIGN_NAME="' .. campaignTitle .. '", Source=' .. titleSource) | |||
bannerContent = WikitextProcessor.processContentForFrontend(bannerContent, placeholderValues, context) | bannerContent = WikitextProcessor.processContentForFrontend(bannerContent, placeholderValues, context) | ||