You can switch between War Campaign/Class Hall/Garisson reports by right clicking on the mission icon next to the minimap

![](https://p3l.im/0876)

Use https://addon.bool.no and put the following into it to make an addon:

local tabs = {}
local function SelectGarrison(self)
    HideUIPanel(GarrisonLandingPage) -- to make sure it updates
    ShowGarrisonLandingPage(self.pageID)
end

hooksecurefunc('ShowGarrisonLandingPage', function(pageID)
    for _, Tab in next, tabs do
        local available = not not (C_Garrison.GetGarrisonInfo(Tab.pageID))
        Tab:SetEnabled(available)
        Tab:GetNormalTexture():SetDesaturated(not available)
        Tab:SetChecked(Tab.pageID == pageID)
    end
end)

local E = CreateFrame('Frame')
E:RegisterEvent('ADDON_LOADED')
E:SetScript('OnEvent', function(self, event, addon)
    if(addon == 'Blizzard_GarrisonUI') then
        for _, data in next, {
            {LE_GARRISON_TYPE_8_0, GARRISON_TYPE_8_0_LANDING_PAGE_TITLE, [[Interface\Icons\INV_Level120]]},
            {LE_GARRISON_TYPE_7_0, ORDER_HALL_LANDING_PAGE_TITLE, [[Interface\Icons\Achievement_Level_110]]},
            {LE_GARRISON_TYPE_6_0, GARRISON_LANDING_PAGE_TITLE, [[Interface\Icons\Achievement_Level_100]]},
        } do
            local Tab = CreateFrame('CheckButton', nil, GarrisonLandingPage, 'SpellBookSkillLineTabTemplate')
            Tab:SetPoint('TOPRIGHT', 20, -(50 * (#tabs + 1)))
            Tab:SetNormalTexture(data[3])
            Tab:SetFrameStrata('LOW') -- appear behind to avoid gaps
            Tab:SetScript('OnClick', SelectGarrison)
            Tab:Show()
            Tab.pageID = data[1]
            Tab.tooltip = data[2]

            table.insert(tabs, Tab)
        end

        self:UnregisterEvent(event)
    end
end)
/r/wow Thread Link - i.redd.it