Module:T-Campaign: Difference between revisions

// via Wikitext Extension for VSCode
Tag: Reverted
// via Wikitext Extension for VSCode
Tags: Manual revert 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
       
        -- Ensure proper type checking and string conversion for placeholder values
        local campaignTitle = "Campaign" -- Default fallback
       
        -- COMPREHENSIVE DEBUGGING: Show everything about campaign data structure
        if args._campaign_data then
            ErrorHandling.addStatus(context, 'campaignBanner', 'Campaign data exists', 'Type: ' .. type(args._campaign_data))
           
            -- Show all top-level keys in campaign data
            local topKeys = {}
            for k, v in pairs(args._campaign_data) do
                table.insert(topKeys, k .. '(' .. type(v) .. ')')
            end
            ErrorHandling.addStatus(context, 'campaignBanner', 'Campaign data keys', 'Keys: ' .. table.concat(topKeys, ', '))
           
            if args._campaign_data.defaults then
                ErrorHandling.addStatus(context, 'campaignBanner', 'Defaults exists', 'Type: ' .. type(args._campaign_data.defaults))
               
                -- Debug: Show ALL keys and values in defaults
                local defaultKeys = {}
                for k, v in pairs(args._campaign_data.defaults) do
                    local valueStr = tostring(v)
                    if string.len(valueStr) > 50 then
                        valueStr = string.sub(valueStr, 1, 50) .. "..."
                    end
                    table.insert(defaultKeys, k .. '="' .. valueStr .. '"')
                end
                ErrorHandling.addStatus(context, 'campaignBanner', 'All defaults', 'Keys: ' .. table.concat(defaultKeys, '; '))
               
                if args._campaign_data.defaults.title then
                    local rawTitle = args._campaign_data.defaults.title
                    ErrorHandling.addStatus(context, 'campaignBanner', 'Title found', 'Raw value: "' .. tostring(rawTitle) .. '", Length: ' .. string.len(tostring(rawTitle)) .. ', Type: ' .. type(rawTitle))
                   
                    -- Check for user parameter override
                    if args.title then
                        ErrorHandling.addStatus(context, 'campaignBanner', 'User title parameter found', 'User value: "' .. tostring(args.title) .. '"')
                    end
                   
                    -- Ensure we get the title value properly - ALWAYS use JSON default for banner
                    if type(rawTitle) == "string" and rawTitle ~= "" then
                        campaignTitle = rawTitle
                        ErrorHandling.addStatus(context, 'campaignBanner', 'Using JSON default title', 'Final title: "' .. campaignTitle .. '"')
                    else
                        ErrorHandling.addStatus(context, 'campaignBanner', 'Title is empty or wrong type', 'Using fallback')
                    end
                else
                    ErrorHandling.addStatus(context, 'campaignBanner', 'Title not found in defaults', 'Available keys: ' .. table.concat(args._campaign_data.defaults and (function() local keys = {} for k,v in pairs(args._campaign_data.defaults) do table.insert(keys, k) end return keys end)() or {}, ', '))
                end
            else
                ErrorHandling.addStatus(context, 'campaignBanner', 'Defaults not found', 'Available keys: ' .. table.concat((function() local keys = {} for k,v in pairs(args._campaign_data) do table.insert(keys, k) end return keys end)(), ', '))
            end
        else
            ErrorHandling.addStatus(context, 'campaignBanner', 'Campaign data missing', 'args._campaign_data is nil')
         end
         end
          
          
         local placeholderValues = {
         local placeholderValues = {
             CAMPAIGN_NAME = campaignTitle
             CAMPAIGN_NAME = args._campaign_data.defaults.title or "Campaign"
         }
         }
       
        -- Add debugging to see what we're actually passing
        ErrorHandling.addStatus(context, 'campaignBanner', 'Placeholder values prepared', 'CAMPAIGN_NAME = "' .. campaignTitle .. '"')
          
          
         bannerContent = WikitextProcessor.processContentForFrontend(bannerContent, placeholderValues, context)
         bannerContent = WikitextProcessor.processContentForFrontend(bannerContent, placeholderValues, context)