206 lines
7.3 KiB
Lua
206 lines
7.3 KiB
Lua
|
|
function SetItemRef(link, text, button, chatFrame)
|
|
if ( strsub(link, 1, 6) == "player" ) then
|
|
local namelink, isGMLink;
|
|
if ( strsub(link, 7, 8) == "GM" ) then
|
|
namelink = strsub(link, 10);
|
|
isGMLink = true;
|
|
else
|
|
namelink = strsub(link, 8);
|
|
end
|
|
|
|
local name, lineid, chatType, chatTarget = strsplit(":", namelink);
|
|
if ( name and (strlen(name) > 0) ) then
|
|
if ( IsModifiedClick("CHATLINK") ) then
|
|
local staticPopup;
|
|
staticPopup = StaticPopup_Visible("ADD_IGNORE");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_MUTE");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_FRIEND");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_GUILDMEMBER");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_TEAMMEMBER");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_RAIDMEMBER");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("CHANNEL_INVITE");
|
|
if ( staticPopup ) then
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
if ( ChatEdit_GetActiveWindow() ) then
|
|
ChatEdit_InsertLink(name);
|
|
elseif ( HelpFrameOpenTicketEditBox:IsVisible() ) then
|
|
HelpFrameOpenTicketEditBox:Insert(name);
|
|
else
|
|
SendWho(WHO_TAG_NAME..name);
|
|
end
|
|
|
|
elseif ( button == "RightButton" and (not isGMLink) ) then
|
|
FriendsFrame_ShowDropdown(name, 1, lineid, chatType, chatFrame);
|
|
else
|
|
ChatFrame_SendTell(name, chatFrame);
|
|
end
|
|
end
|
|
return;
|
|
elseif ( strsub(link, 1, 8) == "BNplayer" ) then
|
|
local namelink = strsub(link, 10);
|
|
|
|
local name, presenceID, lineid, chatType, chatTarget = strsplit(":", namelink);
|
|
if ( name and (strlen(name) > 0) ) then
|
|
if ( IsModifiedClick("CHATLINK") ) then
|
|
local staticPopup;
|
|
staticPopup = StaticPopup_Visible("ADD_IGNORE");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_MUTE");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_FRIEND");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_GUILDMEMBER");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_TEAMMEMBER");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("ADD_RAIDMEMBER");
|
|
if ( staticPopup ) then
|
|
-- If add ignore dialog is up then enter the name into the editbox
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
staticPopup = StaticPopup_Visible("CHANNEL_INVITE");
|
|
if ( staticPopup ) then
|
|
_G[staticPopup.."EditBox"]:SetText(name);
|
|
return;
|
|
end
|
|
if ( ChatEdit_GetActiveWindow() ) then
|
|
ChatEdit_InsertLink(name);
|
|
elseif ( HelpFrameOpenTicketEditBox:IsVisible() ) then
|
|
HelpFrameOpenTicketEditBox:Insert(name);
|
|
end
|
|
|
|
elseif ( button == "RightButton" ) then
|
|
if ( not BNIsSelf(presenceID) ) then
|
|
FriendsFrame_ShowBNDropdown(name, 1, nil, chatType, chatFrame, nil, BNet_GetPresenceID(name));
|
|
end
|
|
else
|
|
if ( not BNIsSelf(presenceID) ) then
|
|
ChatFrame_SendTell(name, chatFrame);
|
|
end
|
|
end
|
|
end
|
|
return;
|
|
elseif ( strsub(link, 1, 7) == "channel" ) then
|
|
if ( IsModifiedClick("CHATLINK") ) then
|
|
local chanLink = strsub(link, 9);
|
|
local chatType, chatTarget = strsplit(":", chanLink);
|
|
if ( strupper(chatType) == "BN_CONVERSATION" ) then
|
|
BNListConversation(chatTarget);
|
|
else
|
|
ToggleFriendsFrame(4);
|
|
end
|
|
elseif ( button == "LeftButton" ) then
|
|
local chanLink = strsub(link, 9);
|
|
local chatType, chatTarget = strsplit(":", chanLink);
|
|
|
|
if ( strupper(chatType) == "CHANNEL" ) then
|
|
if ( GetChannelName(tonumber(chatTarget))~=0 ) then
|
|
ChatFrame_OpenChat("/"..chatTarget, chatFrame);
|
|
end
|
|
elseif ( strupper(chatType) == "BN_CONVERSATION" ) then
|
|
if ( BNGetConversationInfo(chatTarget) ) then
|
|
ChatFrame_OpenChat("/"..(chatTarget + MAX_WOW_CHAT_CHANNELS), chatFrame);
|
|
end
|
|
else
|
|
ChatFrame_OpenChat("/"..chatType, chatFrame);
|
|
end
|
|
elseif ( button == "RightButton" ) then
|
|
local chanLink = strsub(link, 9);
|
|
local chatType, chatTarget = strsplit(":", chanLink);
|
|
if not ( (strupper(chatType) == "CHANNEL" and GetChannelName(tonumber(chatTarget)) == 0) or --Don't show the dropdown if this is a channel we are no longer in.
|
|
(strupper(chatType) == "BN_CONVERSATION" and not BNGetConversationInfo(chatTarget)) ) then --Or a conversation we are no longer in.
|
|
ChatChannelDropDown_Show(chatFrame, strupper(chatType), chatTarget, Chat_GetColoredChatName(strupper(chatType), chatTarget));
|
|
end
|
|
end
|
|
return;
|
|
elseif ( strsub(link, 1, 6) == "GMChat" ) then
|
|
GMChatStatusFrame_OnClick();
|
|
return;
|
|
end
|
|
|
|
if ( IsModifiedClick() ) then
|
|
local fixedLink = GetFixedLink(text);
|
|
HandleModifiedItemClick(fixedLink);
|
|
else
|
|
ShowUIPanel(ItemRefTooltip);
|
|
if ( not ItemRefTooltip:IsShown() ) then
|
|
ItemRefTooltip:SetOwner(UIParent, "ANCHOR_PRESERVE");
|
|
end
|
|
ItemRefTooltip:SetHyperlink(link);
|
|
end
|
|
end
|
|
|
|
function GetFixedLink(text)
|
|
local startLink = strfind(text, "|H");
|
|
if ( not strfind(text, "|c") ) then
|
|
if ( strsub(text, startLink + 2, startLink + 6) == "quest" ) then
|
|
--We'll always color it yellow. We really need to fix this for Cata. (It will appear the correct color in the chat log)
|
|
return (gsub(text, "(|H.+|h.+|h)", "|cffffff00%1|r", 1));
|
|
elseif ( strsub(text, startLink + 2, startLink + 12) == "achievement" ) then
|
|
return (gsub(text, "(|H.+|h.+|h)", "|cffffff00%1|r", 1));
|
|
elseif ( strsub(text, startLink + 2, startLink + 7) == "talent" ) then
|
|
return (gsub(text, "(|H.+|h.+|h)", "|cff4e96f7%1|r", 1));
|
|
elseif ( strsub(text, startLink + 2, startLink + 6) == "trade" ) then
|
|
return (gsub(text, "(|H.+|h.+|h)", "|cffffd000%1|r", 1));
|
|
elseif ( strsub(text, startLink + 2, startLink + 8) == "enchant" ) then
|
|
return (gsub(text, "(|H.+|h.+|h)", "|cffffd000%1|r", 1));
|
|
end
|
|
end
|
|
|
|
--Nothing to change.
|
|
return text;
|
|
end |