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 = args._campaign_data.defaults.title or "Campaign"
             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)