turtle-wow-source-kinda/Dumps/Source Code/11 - Development_support_ui/main/tgm.lua
Brian Oost a1d5bb70b2 Init
2024-08-06 18:06:40 +02:00

774 lines
26 KiB
Lua

local _G, _ = _G or getfenv()
local TGM = CreateFrame("Frame")
TGM.prefix = 'GM_ADDON'
-- .shop log accountname
TGM.tickets = {}
TGM.ticket = nil
TGM.ticketFrames = {}
TGM.races = {
[1] = 'Human',
[2] = 'Orc',
[3] = 'Dwarf',
[4] = 'Nightelf',
[5] = 'Undead',
[6] = 'Tauren',
[7] = 'Gnome',
[8] = 'Troll',
[9] = 'Goblin',
[10] = 'High Elf'
}
TGM.classes = {
[1] = 'Warrior',
[2] = 'Paladin',
[3] = 'Hunter',
[4] = 'Rogue',
[5] = 'Priest',
[7] = 'Shaman',
[8] = 'Mage',
[9] = 'Warlock',
[11] = 'Druid'
}
TGM.classColors = {
["HUNTER"] = { r = 0.67, g = 0.83, b = 0.45, colorStr = "ffabd473" },
["WARLOCK"] = { r = 0.58, g = 0.51, b = 0.79, colorStr = "ff9482c9" },
["PRIEST"] = { r = 1.0, g = 1.0, b = 1.0, colorStr = "ffffffff" },
["PALADIN"] = { r = 0.96, g = 0.55, b = 0.73, colorStr = "fff58cba" },
["MAGE"] = { r = 0.41, g = 0.8, b = 0.94, colorStr = "ff69ccf0" },
["ROGUE"] = { r = 1.0, g = 0.96, b = 0.41, colorStr = "fffff569" },
["DRUID"] = { r = 1.0, g = 0.49, b = 0.04, colorStr = "ffff7d0a" },
["SHAMAN"] = { r = 0.0, g = 0.44, b = 0.87, colorStr = "ff0070de" },
["WARRIOR"] = { r = 0.78, g = 0.61, b = 0.43, colorStr = "ffc79c6e" }
};
TGM:RegisterEvent("ADDON_LOADED")
TGM:RegisterEvent("CHAT_MSG_ADDON")
TGM:RegisterEvent("CHAT_MSG_SYSTEM")
TGM:SetScript("OnEvent", function()
if event then
if event == "ADDON_LOADED" and string.lower(arg1) == 'gm-addon' then
TGM.init()
end
if event == 'CHAT_MSG_SYSTEM' then
TGM.handleSystemMessage(arg1)
end
if event == 'CHAT_MSG_ADDON' and arg1 == TGM.prefix then
TGM.handleAddonMessage(arg2)
end
end
end)
function TGM.init()
if not TGM_DATA then
TGM_DATA = {
scale = 1,
templates = {
{
title = 'At war',
text = 'Hello! Please open your reputation tab, locate the faction of this NPC, click on it, and make sure to remove the <At War> flag that\'s preventing you from opening the dialog window.'
},
{
title = 'Boosting',
text = 'Hello! It is strictly forbidden to sell/promote selling or buy/promote buying leveling and other boosting services on Turtle WoW for real money, donation tokens or in-game gold. But you can still give tanking or healing services for dungeons of your level bracket. Have a nice day!'
},
{
title = 'Bug Tracker',
text = 'Greetings! Unfortunately bugs must be submitted to the bug tracker (https://github.com/slowtorta/turtlewow-bug-tracker) so our developers can have a look, also try close your client and clear the WDB folder.'
},
{
title = 'Bugged Quest',
text = 'Hello! Please follow these steps: Click on your character portrait and ensure that you are not part of a raid group. Alternatively, close your client and clear the WDB folder. If you still experience any issues, please contact us. Have a nice day!'
},
{
title = 'Cheat',
text = 'Hello! Thank you for your report and for taking our rules seriously. We will investigate this matter and take appropriate action. Have a nice day!'
},
{
title = 'Clear WDB',
text = 'Greetings! Please try clearing your WDB folder inside your WoW game folder. If this does not fix the issue please create a new ticket noting this.'
},
{
title = 'Harassment',
text = 'Hello! We apologize for the behavior you experienced on our platform. We encourage you to use the /ignore feature to cut communication with the offending player. Please only contact support if the harassment persists, such as creating multiple characters to avoid being added to a blacklist.'
},
{
title = 'Missing tokens',
text = 'Hello! Thank you for supporting our project. Please send a full screenshot of your transaction along with your in-game account name to info.turtlewow@gmail.com. Your balance will be updated within the next 24 hours'
},
{
title = 'Name violations',
text = 'Greetings! We will be looking into this character name. Thank you for assisting us in these situations. Thank you for your patronage and have a magical evening.'
},
{
title = 'No loot distro',
text = 'Hello! We cannot restore items that were never looted. If you have video evidence of this case, please attach it and ask a party leader to submit a ticket specifying the name of the player who should receive it.'
},
{
title = 'Not enough detail',
text = 'Greetings! Unfortunately I cannot determine the nature of your ticket from what you put in it. Please create a new ticket and provide more information if you are still having trouble.'
},
{
title = 'Transmog bug',
text = 'Hello! Please try the following steps: Close your client, clear the WDB folder, and ensure that your client is not in a read-only state. Contact us if you still experience any issues. Have a nice day!'
},
{
title = 'War mode removal',
text = 'Hello! It is possible to activate War Mode twice and remove it once. If you have activated it for the first time, speak to the Glyph Master NPC to quit the challenge. If you have activated it for a second time, you cannot remove it until you reach level 60. Stay safe!'
},
{
title = 'Safe Spotting',
text = 'Greetings, Safe Spotting is against our rules. I will be placing a warning on your account. Performing this action again may result in further sanction being taken.'
},
{
title = 'Loot-misdistribution D',
text = 'Hello! Unfortunately, the correct distribution of loot in the instances is the player\'s direct responsibility. We cannot assist with issues of this nature :) Please visit the instance once again.'
},
{
title = 'Loot-misdistribution R',
text = 'Hello! Raiders are able to rectify any mistakes in loot distribution on their own within a short period of 10 minutes after the boss has been defeated.'
},
{
title = 'Lost & destroyed items',
text = 'Greetings! If you have sold or destroyed an important item, please visit NPC Trash Collector Gaston in Ratchet (https://database.turtle-wow.org/?npc=8). He will offer you 128 recently lost items.'
},
{
title = 'Restoration response - Hacked',
text = 'Greetings, thank you for contacting support. We are investigating your issue and you will be notified of an outcome within 10 days. Please change your password immediately. Have a great day!'
},
{
title = 'Name reservation',
text = 'Greetings, please see info regarding names, All inactive names will be cleaned up automatically on every Wednesday. Please also see: https://forum.turtle-wow.org/viewtopic.php?t=5599'
},
{
title = 'Restoration of HC characters',
text = 'Greetings! Unfortunately we do not restore Hardcore characters under any circumstances whatsoever. Apologies for the inconvenience.'
},
{
title = 'Non-Griefing',
text = 'Good day, this will not be considered Griefing or Harassment as pvp is on which you can activate by yourself, it is a choice to turn on and off. Hope this finds you well, have a great day support team.'
},
{
title = 'Race / Faction Changes',
text = 'Greetings, unfortunately race and faction changes are not currently available in any way. Have a great day!'
},
{
title = 'Dialogs',
text = 'Hello! Please open your reputation tab, locate the faction of this NPC, click on it, and make sure to remove the <At War> flag that\'s preventing you from opening the dialog window.'
},
{
title = 'Refund Rejection',
text = 'Hello! The item/items you wish to return were purchased more than a week ago and are therefore not eligible for a refund.'
}
},
alpha = 1
}
end
_G['TGM']:SetScale(TGM_DATA.scale)
_G['TGM']:SetAlpha(TGM_DATA.alpha)
TGM.disableButtonsAndText()
end
function TGM.clearScrollbarTexture(frame)
_G[frame:GetName() .. 'ScrollUpButton']:SetNormalTexture(nil)
_G[frame:GetName() .. 'ScrollUpButton']:SetDisabledTexture(nil)
_G[frame:GetName() .. 'ScrollUpButton']:SetPushedTexture(nil)
_G[frame:GetName() .. 'ScrollUpButton']:SetHighlightTexture(nil)
_G[frame:GetName() .. 'ScrollDownButton']:SetNormalTexture(nil)
_G[frame:GetName() .. 'ScrollDownButton']:SetDisabledTexture(nil)
_G[frame:GetName() .. 'ScrollDownButton']:SetPushedTexture(nil)
_G[frame:GetName() .. 'ScrollDownButton']:SetHighlightTexture(nil)
_G[frame:GetName() .. 'ThumbTexture']:SetTexture(nil)
end
function TGM.disableButtonsAndText()
TGMLeftPanelResponsePlayerName:SetText()
TGMLeftPanelResponseAccount:SetText()
TGMLeftPanelResponseIP:SetText()
TGMLeftPanelResponseLevel:SetText()
TGMLeftPanelResponseEmail:SetText()
TGMLeftPanelResponseForum:SetText()
TGMLeftPanelResponseOnlineStatus:SetText()
TGMLeftPanelResponseRaceClass:SetText()
TGMLeftPanelResponseRespondToMailbox:Disable()
TGMLeftPanelResponseRespondToChat:Disable()
TGMLeftPanelResponseCloseTicket:Disable()
TGMLeftPanelResponseGoTo:Disable()
TGMLeftPanelResponseSummon:Disable()
TGMLeftPanelResponseInfo:Disable()
TGMLeftPanelResponseRecall:Disable()
TGMLeftPanelResponseBaninfo:Disable()
TGMLeftPanelResponseTarget:Disable()
TGMLeftPanelResponseShopLog:Disable()
TGMLeftPanelResponsePlayerNameCopyButton:Disable()
TGMLeftPanelResponseAccountCopyButton:Disable()
TGMLeftPanelResponseIPCopyButton:Disable()
end
function TGM.enableButtons()
TGMLeftPanelResponseRespondToMailbox:Enable()
TGMLeftPanelResponseRespondToChat:Enable()
TGMLeftPanelResponseCloseTicket:Enable()
TGMLeftPanelResponseGoTo:Enable()
TGMLeftPanelResponseSummon:Enable()
TGMLeftPanelResponseInfo:Enable()
TGMLeftPanelResponseRecall:Enable()
TGMLeftPanelResponseBaninfo:Enable()
TGMLeftPanelResponseTarget:Enable()
TGMLeftPanelResponseShopLog:Enable()
TGMLeftPanelResponsePlayerNameCopyButton:Enable()
TGMLeftPanelResponseAccountCopyButton:Enable()
TGMLeftPanelResponseIPCopyButton:Enable()
end
function TGM.handleSystemMessage(text)
-- refresh tickets on new ticket
if string.find(text, "New ticket", 1, true) then
local soundfile = "igTextPopupPing02.wav"
if GetRealmName() == "Tel'Abim" then soundfile = "PlaceHolder.wav" end
PlaySoundFile("Sound\\Interface\\"..soundfile)
TGM_refreshTickets()
return
end
-- refresh tickets on ticket assign
if string.find(text, "Ticket", 1, true) and
string.find(text, "Assigned to", 1, true) then
TGM_refreshTickets()
return
end
-- stop if no ticket is active
if not TGM.ticket then
return
end
end
function TGM.handleAddonMessage(m)
if string.find(m, 'tickets;;start', 1, true) then
TGM.tickets = {}
elseif string.find(m, 'tickets;;end', 1, true) then
TGM.processTickets()
elseif string.find(m, 'tickets;;', 1, true) then
--tickets;;id;;name;;playeronlinestatus;;ticketassignedstatus;;tickettimestamp;;ticket_text
local t = __explode(m, ';;')
local stamp = string.format(SecondsToTime(time() - tonumber(t[6])))
TGM.tickets[__length(TGM.tickets) + 1] = {
id = tonumber(t[2]),
name = t[3],
onlineStatus = t[4] == 'online' and '|cff00ff00online' or '|cffff0000offline',
assigned = t[5],
stamp = stamp,
message = t[7],
message_replaced = __replace(t[7], "\n", ""),
}
elseif string.find(m, 'playerinfo;;', 1, true) then
--playerinfo;;guid;;account;;ip;;level;;email;;forumusername;;race;;class
local pi = __explode(m, ";;")
local guid = pi[2]
local account = pi[3]
local ip = pi[4]
local level = tonumber(pi[5])
local email = pi[6]
local forum = pi[7]
local race = pi[8]
local class = pi[9]
if TGM.ticket then
TGM.ticket.guid = guid
TGM.ticket.account = account
TGM.ticket.ip = ip
TGM.ticket.level = level
TGM.ticket.email = email
TGM.ticket.forum = forum
TGM.ticket.raceClass = TGM.races[tonumber(race)] ..
" |c" ..
TGM.classColors[string.upper(TGM.classes[tonumber(class)])].colorStr ..
TGM.classes[tonumber(class)]
TGMLeftPanelResponseTitle:SetText("Ticket |cffffffff" .. TGM.ticket.id .. " |rcreated |cffffffff" ..
TGM.ticket.stamp .. "|rago by |c" .. TGM.classColors[string.upper(TGM.classes[tonumber(class)])].colorStr .. TGM.ticket.name)
TGMLeftPanelResponsePlayerName:SetText("Name: |cffffffff" .. TGM.ticket.name)
TGMLeftPanelResponsePlayerNameCopyEditbox:SetText(TGM.ticket.name)
TGMLeftPanelResponseAccount:SetText("Account: |cffffffff" .. TGM.ticket.account)
TGMLeftPanelResponseAccountCopyEditbox:SetText(TGM.ticket.account)
TGMLeftPanelResponseIP:SetText("IP: |cffffffff" .. TGM.ticket.ip)
TGMLeftPanelResponseLevel:SetText("Level: |cffffffff" .. TGM.ticket.level)
TGMLeftPanelResponseEmail:SetText("E-mail: |cffffffff" .. TGM.ticket.email)
TGMLeftPanelResponseForum:SetText("Forum: |cffffffff" .. TGM.ticket.forum)
TGMLeftPanelResponseOnlineStatus:SetText("Online Status: |cffffffff" .. TGM.ticket.onlineStatus)
TGMLeftPanelResponseRaceClass:SetText("Race/Class: |cffffffff" .. TGM.ticket.raceClass)
TGMLeftPanelResponseTicketScrollFrameTicketBox:SetText(TGM.ticket.message)
TGMLeftPanelResponseCloseTicket:SetID(TGM.ticket.id)
TGM.enableButtons()
TGMLeftPanelResponseReplyScrollFrameReplyBox:SetText('')
TGMLeftPanelResponseReplyScrollFrameReplyBox:ClearFocus()
end
end
end
function TGM.processTickets()
for i, frame in next, TGM.ticketFrames do
frame:Hide()
end
for i, data in next, TGM.tickets do
if not TGM.ticketFrames[i] then
TGM.ticketFrames[i] = CreateFrame("Frame", "TGM_Ticket_" .. i, TGMRightPanelScrollFrameChild, "TGMTicketTemplate")
end
local frame = "TGM_Ticket_" .. i
_G[frame]:SetPoint("TOPLEFT", TGMRightPanelScrollFrameChild, "TOPLEFT", 11, 26 - 26 * i)
_G[frame .. 'TicketIndex']:SetText('|cffffffff' .. i)
_G[frame .. 'PlayerName']:SetText(data.name)
_G[frame .. 'TicketTextShort']:SetText(string.sub(data.message_replaced, 1, 35) .. '...')
_G[frame .. 'AssignButton']:SetID(data.id)
_G[frame .. 'ManageTicket']:SetID(data.id)
_G[frame .. 'Selected']:Hide()
if TGM.ticket and data.id == TGM.ticket.id then
_G[frame .. 'Selected']:Show()
end
if data.assigned == '0' then
_G[frame .. 'AssignButton']:SetText('-Assign-')
else
_G[frame .. 'AssignButton']:SetText('|cffffffff' .. data.assigned)
end
_G[frame]:Show()
end
TGMRightPanelTicketCount:SetText('Tickets (' .. __length(TGM.tickets) .. ')')
TGMRightPanelScrollFrame:UpdateScrollChildRect();
TGMRightPanelScrollFrame:SetVerticalScroll(0)
TGM.clearScrollbarTexture(TGMRightPanelScrollFrameScrollBar)
end
function TGM_AssignTicket(id)
for _, data in next, TGM.tickets do
if data.id == id then
if data.assigned == '0' then
SendChatMessage('.ticket assign ' .. id .. ' ' .. UnitName('player'))
else
SendChatMessage('.ticket unassign ' .. id)
end
end
end
--TGM_refreshTickets()
end
function TGM_ManageTicket(id)
TGM.ticket = {}
for i, data in next, TGM.tickets do
if data.id == id then
TGM.ticket = data
_G["TGM_Ticket_" .. i .. 'Selected']:Show()
_G["TGM_Ticket_" .. i .. 'Selected']:SetVertexColor(1, 1, 1, 0.2)
else
_G["TGM_Ticket_" .. i .. 'Selected']:Hide()
end
end
if not TGM.ticket.name then
return
end
TGM.send("PLAYER_INFO:" .. TGM.ticket.name)
-- rest is in addon_message handler
end
function TGM_refreshTickets()
TGM.send("GET_TICKETS")
end
function TGM_CloseTicket(id)
SendChatMessage('.ticket close ' .. id)
TGMLeftPanelResponseTicketScrollFrameTicketBox:SetText('')
TGMLeftPanelResponseTicketScrollFrameTicketBox:ClearFocus()
TGMLeftPanelResponseReplyScrollFrameReplyBox:SetText('')
TGMLeftPanelResponseReplyScrollFrameReplyBox:ClearFocus()
TGM.disableButtonsAndText()
TGM_refreshTickets()
TGM.ticket = nil
end
function TGM_MailPlayer()
local text = TGMLeftPanelResponseReplyScrollFrameReplyBox:GetText()
if text == '' then
return
end
SendChatMessage('.send mail ' .. TGM.ticket.name .. ' "Ticket" "' .. text .. '"')
TGMLeftPanelResponseReplyScrollFrameReplyBox:SetText('')
TGMLeftPanelResponseReplyScrollFrameReplyBox:ClearFocus()
end
function TGM_WhisperPlayer()
local text = TGMLeftPanelResponseReplyScrollFrameReplyBox:GetText()
if text == '' then
return
end
SendChatMessage(text, "WHISPER", DEFAULT_CHAT_FRAME.editBox.languageID, TGM.ticket.name);
TGMLeftPanelResponseReplyScrollFrameReplyBox:SetText('')
TGMLeftPanelResponseReplyScrollFrameReplyBox:ClearFocus()
end
function TGM_GoToPlayer()
SendChatMessage('.goname ' .. TGM.ticket.name)
end
function TGM_SummonPlayer()
SendChatMessage('.summon ' .. TGM.ticket.name)
end
function TGM_PlayerInfo()
SendChatMessage('.pinfo ' .. TGM.ticket.name)
end
function TGM_Target()
TargetByName(TGM.ticket.name)
end
function TGM_BanInfo()
SendChatMessage('.baninfo account ' .. TGM.ticket.account)
end
function TGM_Recall()
SendChatMessage('.recall ' .. TGM.ticket.name)
end
function TGM_ShopLog()
SendChatMessage('.shop log ' .. TGM.ticket.account)
end
function TGM_Toggle()
if _G['TGM']:IsVisible() then
_G['TGM']:Hide()
else
_G['TGM']:Show()
end
end
function TGM_CopyButtonOnClick(field)
if IsShiftKeyDown() then
if ChatFrameEditBox:IsVisible() then
if field == 'PlayerName' then
ChatFrameEditBox:Insert(TGM.ticket.name);
end
if field == 'Account' then
ChatFrameEditBox:Insert(TGM.ticket.account);
end
if field == 'IP' then
ChatFrameEditBox:Insert(TGM.ticket.ip);
end
return
end
--DEFAULT_CHAT_FRAME:AddMessage("|Hplayer:Sausage|h" .. "[Sausage]" .. "|h");
return
end
--_G['TGMLeftPanelResponse' .. field .. 'CopyButton']:Hide()
--_G['TGMLeftPanelResponse' .. field .. 'CopyEditbox']:Show()
--_G['TGMLeftPanelResponse' .. field .. 'CopyEditbox']:SetFocus()
--_G['TGMLeftPanelResponse' .. field .. 'CopyEditbox']:HighlightText()
end
function TGM_CopyEditboxOnEscape(field)
--_G['TGMLeftPanelResponse' .. field .. 'CopyButton']:Show()
--_G['TGMLeftPanelResponse' .. field .. 'CopyEditbox']:Hide()
--_G['TGMLeftPanelResponse' .. field .. 'CopyEditbox']:ClearFocus()
end
function TGM_OnMouseWheel()
if IsControlKeyDown() then
TGM_DATA.alpha = TGM_DATA.alpha + arg1 * 0.05
if TGM_DATA.alpha > 1 then
TGM_DATA.alpha = 1
end
if TGM_DATA.alpha < 0.1 then
TGM_DATA.alpha = 0.1
end
_G['TGM']:SetAlpha(TGM_DATA.alpha)
return
end
if IsShiftKeyDown() then
TGM_DATA.scale = 1
_G['TGM']:SetScale(TGM_DATA.scale)
return
end
TGM_DATA.scale = TGM_DATA.scale + arg1 * 0.05
_G['TGM']:SetScale(TGM_DATA.scale)
end
TGM.templatesFrames = {}
function TGM_ToggleTemplates()
TGMRightPanel:Hide()
TGMTemplatesPanel:Show()
for _, frame in next, TGM.templatesFrames do
frame:Hide()
end
local col, row = 1, 1
for i, data in next, TGM_DATA.templates do
if not TGM.templatesFrames[i] then
TGM.templatesFrames[i] = CreateFrame("Frame", "TGM_ResponseTemplate_" .. i, TGMTemplatesPanel, "TGM_ResponseTemplate")
end
local frame = "TGM_ResponseTemplate_" .. i
_G[frame]:SetPoint("TOPLEFT", TGMTemplatesPanel, "TOPLEFT", 18 - 260 + 260 * col, -30 * row)
_G[frame .. 'Button']:SetText(data.title)
_G[frame .. 'Button']:SetID(i)
_G[frame .. 'EditButton']:SetID(i)
_G[frame .. 'DeleteButton']:SetID(i)
_G[frame]:Show()
col = col + 1
if col > 2 then
col = 1
row = row + 1
end
end
end
function TGM_UseTemplate()
TGMLeftPanelResponseReplyScrollFrameReplyBox:SetText(TGM_DATA.templates[this:GetID()].text)
TGMTemplatesPanel:Hide()
TGMRightPanel:Show()
end
function TGM_SaveTemplate()
TGMLeftPanelResponseReplyScrollFrameReplyBox:ClearFocus()
StaticPopup_Show('TGM_NEW_TEMPLATE')
end
TGM.templateToDelete = 0
function TGM_DeleteTemplate()
TGM.templateToDelete = this:GetID()
StaticPopup_Show('CONFIRM_DELETE_TEMPLATE')
end
function TGM.send(m)
--DEFAULT_CHAT_FRAME:AddMessage("Send:" .. m)
SendAddonMessage(TGM.prefix, m, "GUILD")
end
TGM.templateToEdit = 0
function TGM_EditTemplate()
TGM.templateToEdit = this:GetID()
StaticPopup_Show('TGM_EDIT_TEMPLATE_TITLE')
end
function TGM_CloseTemplates()
TGMTemplatesPanel:Hide()
TGMRightPanel:Show()
end
function __length(arr)
if not arr then
return 0
end
local rd = 0
for a in next, arr do
rd = rd + 1
end
return rd
end
function __explode(str, delimiter)
local result = {}
local from = 1
local delim_from, delim_to = string.find(str, delimiter, from, 1, true)
while delim_from do
tinsert(result, string.sub(str, from, delim_from - 1))
from = delim_to + 1
delim_from, delim_to = string.find(str, delimiter, from, true)
end
tinsert(result, string.sub(str, from))
return result
end
function __replace(s, c, cc)
return (string.gsub(s, c, cc))
end
StaticPopupDialogs["TGM_NEW_TEMPLATE"] = {
text = "Enter Template Title:",
button1 = "Save",
button2 = "Cancel",
hasEditBox = 1,
autoFocus = 1,
OnAccept = function()
local templateTitle = getglobal(this:GetParent():GetName() .. "EditBox"):GetText()
if templateTitle == '' then
StaticPopup_Show('TGM_TEMPLATES_EMPTY_TITLE')
return
end
TGM_DATA.templates[table.getn(TGM_DATA.templates) + 1] = {
title = templateTitle,
text = TGMLeftPanelResponseReplyScrollFrameReplyBox:GetText(),
}
getglobal(this:GetParent():GetName() .. "EditBox"):SetText('')
DEFAULT_CHAT_FRAME:AddMessage('Template ' .. templateTitle .. ' added.')
end,
timeout = 0,
whileDead = 0,
hideOnEscape = 1,
};
StaticPopupDialogs["TGM_TEMPLATES_EMPTY_TITLE"] = {
text = "Template Title cannot be empty.",
button1 = "Okay",
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["TGM_TEMPLATES_EMPTY_TEXT"] = {
text = "Template Text cannot be empty.",
button1 = "Okay",
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_DELETE_TEMPLATE"] = {
text = "Delete Template ?",
button1 = TEXT(YES),
button2 = TEXT(NO),
OnAccept = function()
DEFAULT_CHAT_FRAME:AddMessage("Template " .. TGM_DATA.templates[TGM.templateToDelete].title .. " deleted.")
TGM_DATA.templates[TGM.templateToDelete] = nil
TGM_ToggleTemplates()
TGM.templateToDelete = 0
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["TGM_EDIT_TEMPLATE_TITLE"] = {
text = "Edit Template Title:",
button1 = "Save",
button2 = "Cancel",
hasEditBox = 1,
autoFocus = 1,
OnShow = function()
getglobal(this:GetName() .. "EditBox"):SetText(TGM_DATA.templates[TGM.templateToEdit].title)
end,
OnAccept = function()
local templateTitle = getglobal(this:GetParent():GetName() .. "EditBox"):GetText()
if templateTitle == '' then
StaticPopup_Show('TGM_TEMPLATES_EMPTY_TITLE')
return
end
TGM_DATA.templates[TGM.templateToEdit].title = templateTitle
StaticPopup_Show('TGM_EDIT_TEMPLATE_TEXT')
end,
timeout = 0,
whileDead = 0,
hideOnEscape = 1,
};
StaticPopupDialogs["TGM_EDIT_TEMPLATE_TEXT"] = {
text = "Edit Template Text:",
button1 = "Save",
button2 = "Cancel",
hasEditBox = 1,
autoFocus = 1,
OnShow = function()
getglobal(this:GetName() .. "EditBox"):SetText(TGM_DATA.templates[TGM.templateToEdit].text)
end,
OnAccept = function()
local templateText = getglobal(this:GetParent():GetName() .. "EditBox"):GetText()
if templateTitle == '' then
StaticPopup_Show('TGM_TEMPLATES_EMPTY_TEXT')
return
end
TGM_DATA.templates[TGM.templateToEdit].text = templateText
DEFAULT_CHAT_FRAME:AddMessage("Template " .. TGM_DATA.templates[TGM.templateToEdit].title .. " updated.")
TGM_ToggleTemplates()
TGM.templateToEdit = 0
end,
timeout = 0,
whileDead = 0,
hideOnEscape = 1,
};