Initial commit: Chatter v1.2.11 (Curse package)
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
local mod = Chatter:NewModule("Invite Links", "AceHook-3.0")
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("Chatter")
|
||||
mod.modName = L["Invite Links"]
|
||||
|
||||
local gsub = _G.string.gsub
|
||||
local ipairs = _G.ipairs
|
||||
local fmt = _G.string.format
|
||||
local sub = _G.string.sub
|
||||
local InviteUnit = _G.InviteUnit
|
||||
local next = _G.next
|
||||
local type = _G.type
|
||||
local IsAltKeyDown = _G.IsAltKeyDown
|
||||
local match = _G.string.match
|
||||
|
||||
local options = {
|
||||
addWord = {
|
||||
type = "input",
|
||||
name = L["Add Word"],
|
||||
desc = L["Add word to your invite trigger list"],
|
||||
get = function() end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.words[v:lower()] = v
|
||||
end
|
||||
},
|
||||
removeWord = {
|
||||
type = "select",
|
||||
name = L["Remove Word"],
|
||||
desc = L["Remove a word from your invite trigger list"],
|
||||
get = function() end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.words[v:lower()] = nil
|
||||
end,
|
||||
values = function() return mod.db.profile.words end,
|
||||
confirm = function(info, v) return (L["Remove this word from your trigger list?"]) end
|
||||
},
|
||||
altClick = {
|
||||
type = "toggle",
|
||||
name = L["Alt-click name to invite"],
|
||||
width = "double",
|
||||
desc = L["Lets you alt-click player names to invite them to your party."],
|
||||
get = function() return mod.db.profile.altClickToinvite end,
|
||||
set = function(i, v) mod.db.profile.altClickToinvite = v end
|
||||
}
|
||||
}
|
||||
|
||||
local defaults = {
|
||||
profile = {
|
||||
words = {},
|
||||
altClickToInvite = true
|
||||
}
|
||||
}
|
||||
|
||||
local words
|
||||
|
||||
function mod:OnInitialize()
|
||||
self.db = Chatter.db:RegisterNamespace(self:GetName(), defaults)
|
||||
end
|
||||
|
||||
function mod:Decorate(frame)
|
||||
self:RawHook(frame, "AddMessage", true)
|
||||
end
|
||||
|
||||
function mod:OnEnable()
|
||||
words = self.db.profile.words
|
||||
if not next(words) then
|
||||
words[L["invite"]] = L["invite"]
|
||||
words[L["inv"]] = L["inv"]
|
||||
end
|
||||
for i = 1, NUM_CHAT_WINDOWS do
|
||||
local cf = _G["ChatFrame" .. i]
|
||||
if cf ~= COMBATLOG then
|
||||
self:RawHook(cf, "AddMessage", true)
|
||||
end
|
||||
end
|
||||
for index,name in ipairs(self.TempChatFrames) do
|
||||
local cf = _G[name]
|
||||
if cf then
|
||||
self:RawHook(cf, "AddMessage", true)
|
||||
end
|
||||
end
|
||||
self:RawHook(nil, "SetItemRef", true)
|
||||
end
|
||||
|
||||
local style = "|cffffffff|Hinvite:%s|h[%s]|h|r"
|
||||
local valid_events = {
|
||||
CHAT_MSG_SAY = true,
|
||||
CHAT_MSG_CHANNEL = true,
|
||||
CHAT_MSG_WHISPER = true,
|
||||
CHAT_MSG_OFFICER = true,
|
||||
CHAT_MSG_GUILD = true
|
||||
}
|
||||
|
||||
local function addLinks(m, t, p)
|
||||
if words[t:lower()] and p ~= "_" then
|
||||
t = fmt(style, arg2, t)
|
||||
return t .. p
|
||||
end
|
||||
return m
|
||||
end
|
||||
|
||||
function mod:AddMessage(frame, text, ...)
|
||||
if not text then
|
||||
return self.hooks[frame].AddMessage(frame, text, ...)
|
||||
end
|
||||
|
||||
if valid_events[event] and type(arg2) == "string" then
|
||||
text = gsub(text, "((%w+)(.?))", addLinks)
|
||||
end
|
||||
|
||||
return self.hooks[frame].AddMessage(frame, text, ...)
|
||||
end
|
||||
|
||||
function mod:SetItemRef(link, text, button)
|
||||
local linkType = sub(link, 1, 6)
|
||||
-- Chatter:Print(IsAltKeyDown(), linkType, self.db.profile.altClickToInvite)
|
||||
if IsAltKeyDown() and linkType == "player" and self.db.profile.altClickToInvite then
|
||||
local name = match(link, "player:([^:]+)")
|
||||
InviteUnit(name)
|
||||
return nil
|
||||
elseif linkType == "invite" then
|
||||
local name = sub(link, 8)
|
||||
InviteUnit(name)
|
||||
return nil
|
||||
end
|
||||
return self.hooks.SetItemRef(link, text, button)
|
||||
end
|
||||
|
||||
function mod:Info()
|
||||
return L["Gives you more flexibility in how you invite people to your group."]
|
||||
end
|
||||
|
||||
function mod:GetOptions()
|
||||
return options
|
||||
end
|
||||
Reference in New Issue
Block a user