local L = DBM_CORE_L local frame, text, ignore, cancel local function CreateOurFrame() ---@class DBMHyperlinkFrame: Frame, BackdropTemplate frame = CreateFrame("Frame", "DBMHyperLinks", UIParent, "BackdropTemplate") frame.backdropInfo = { bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background-Dark", -- 312922 edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", -- 131072 tile = true, tileSize = 16, edgeSize = 16, insets = { left = 1, right = 1, top = 1, bottom = 1 } } frame:ApplyBackdrop() frame:SetSize(500, 80) frame:SetPoint("TOP", UIParent, "TOP", 0, -200) frame:SetFrameStrata("DIALOG") text = frame:CreateFontString() text:SetFontObject(ChatFontNormal) text:SetWidth(470) text:SetWordWrap(true) text:SetPoint("TOP", frame, "TOP", 0, -15) local accept = CreateFrame("Button", nil, frame) accept:SetNormalTexture(130763)--"Interface\\Buttons\\UI-DialogBox-Button-Up" accept:SetPushedTexture(130761)--"Interface\\Buttons\\UI-DialogBox-Button-Down" accept:SetHighlightTexture(130762, "ADD")--"Interface\\Buttons\\UI-DialogBox-Button-Highlight" accept:SetSize(128, 35) accept:SetPoint("BOTTOM", frame, "BOTTOM", -75, 0) accept:SetScript("OnClick", function() DBM:AddToPizzaIgnore(ignore) DBT:CancelBar(cancel) frame:Hide() end) local atext = accept:CreateFontString() atext:SetFontObject(ChatFontNormal) atext:SetPoint("CENTER", accept, "CENTER", 0, 5) atext:SetText(YES) local decline = CreateFrame("Button", nil, frame) decline:SetNormalTexture(130763)--"Interface\\Buttons\\UI-DialogBox-Button-Up" decline:SetPushedTexture(130761)--"Interface\\Buttons\\UI-DialogBox-Button-Down" decline:SetHighlightTexture(130762, "ADD")--"Interface\\Buttons\\UI-DialogBox-Button-Highlight" decline:SetSize(128, 35) decline:SetPoint("BOTTOM", frame, "BOTTOM", 75, 0) decline:SetScript("OnClick", function() frame:Hide() end) local dtext = decline:CreateFontString() dtext:SetFontObject(ChatFontNormal) dtext:SetPoint("CENTER", decline, "CENTER", 0, 5) dtext:SetText(NO) PlaySound(850) end local function LinkHook(self, link) local _, linkType, arg1, arg2, arg3, arg4, arg5, arg6 = strsplit(":", link) if linkType ~= "DBM" then return end if arg1 == "cancel" then DBT:CancelBar(link:match("garrmission:DBM:cancel:(.+):nil$")) elseif arg1 == "ignore" then cancel = link:match("garrmission:DBM:ignore:(.+):[^%s:]+$") ignore = link:match(":([^:]+)$") if not frame then CreateOurFrame() end text:SetText(L.PIZZA_CONFIRM_IGNORE:format(ignore)) frame:Show() elseif arg1 == "update" then DBM:ShowUpdateReminder(arg2, arg3) -- displayVersion, revision elseif arg1 == "news" then DBM:ShowUpdateReminder(nil, nil, L.COPY_URL_DIALOG_NEWS, "https://github.com/DeadlyBossMods/DeadlyBossMods/wiki/%5BNews%5D-DBM-Module-Restructuring-and-unification") elseif arg1 == "noteshare" then local mod = DBM:GetModByName(arg2 or "") if mod then DBM:ShowNoteEditor(mod, arg3, arg4, arg5, arg6)--modvar, ability, text, sender else--Should not happen, since mod was verified before getting this far, but just in case DBM:Debug("Bad note share, mod not valid") end end end DEFAULT_CHAT_FRAME:HookScript("OnHyperlinkClick", LinkHook) -- Handles the weird case that the default chat frame is not one of the normal chat frames (3rd party chat frames or whatever causes this) local i = 1 while _G["ChatFrame" .. i] do if _G["ChatFrame" .. i] ~= DEFAULT_CHAT_FRAME then _G["ChatFrame" .. i]:HookScript("OnHyperlinkClick", LinkHook) end i = i + 1 end