601 lines
19 KiB
Lua
601 lines
19 KiB
Lua
-- CONSTANTS
|
|
KBASE_NUM_ARTICLES_PER_PAGE = 20;
|
|
KBASE_NUM_FAKE_CATEGORIES = 1;
|
|
KBASE_NUM_FAKE_SUBCATEGORIES = 1;
|
|
KBASE_TOOLTIP_DELAY = .7;
|
|
KBASE_SEARCH_BUTTON_DELAY = 1;
|
|
|
|
-- Internal variables
|
|
KBASE_CURRENT_PAGE = 1;
|
|
KBASE_SEARCH_PERFORMED = 0;
|
|
KBASE_SETUP_LOADED = 0;
|
|
KBASE_ENABLE_SEARCH = 1;
|
|
|
|
function KnowledgeBaseFrame_OnLoad(self)
|
|
self:RegisterEvent("UPDATE_GM_STATUS");
|
|
self:RegisterEvent("KNOWLEDGE_BASE_SETUP_LOAD_SUCCESS");
|
|
self:RegisterEvent("KNOWLEDGE_BASE_SETUP_LOAD_FAILURE");
|
|
self:RegisterEvent("KNOWLEDGE_BASE_QUERY_LOAD_SUCCESS");
|
|
self:RegisterEvent("KNOWLEDGE_BASE_QUERY_LOAD_FAILURE");
|
|
self:RegisterEvent("KNOWLEDGE_BASE_ARTICLE_LOAD_SUCCESS");
|
|
self:RegisterEvent("KNOWLEDGE_BASE_ARTICLE_LOAD_FAILURE");
|
|
self:RegisterEvent("KNOWLEDGE_BASE_SYSTEM_MOTD_UPDATE");
|
|
self:RegisterEvent("KNOWLEDGE_BASE_SERVER_MESSAGE");
|
|
|
|
-- ADDITIONAL LAYOUT
|
|
KnowledgeBaseFrame_DisableButtons();
|
|
|
|
KnowledgeBaseMotdText:SetWidth(KnowledgeBaseFrame:GetWidth() - KnowledgeBaseMotdLabel:GetWidth() - 80);
|
|
KnowledgeBaseMotdTextFrame:SetWidth(KnowledgeBaseMotdText:GetWidth())
|
|
KnowledgeBaseMotdTextFrame:SetHeight(KnowledgeBaseMotdText:GetHeight())
|
|
|
|
KnowledgeBaseServerMessageText:SetWidth(KnowledgeBaseFrame:GetWidth() - KnowledgeBaseServerMessageLabel:GetWidth() - 80);
|
|
KnowledgeBaseServerMessageTextFrame:SetWidth(KnowledgeBaseServerMessageText:GetWidth())
|
|
KnowledgeBaseServerMessageTextFrame:SetHeight(KnowledgeBaseServerMessageText:GetHeight())
|
|
|
|
KnowledgeBaseFrameEditBox:SetMaxBytes(128);
|
|
KnowledgeBaseFrameEditBox:SetText(KBASE_DEFAULT_SEARCH_TEXT);
|
|
|
|
KnowledgeBaseArticleListFrameCount:SetPoint("TOPRIGHT", "KnowledgeBaseArticleListFramePreviousButton", "TOPLEFT", -6, -7);
|
|
|
|
KnowledgeBaseArticleScrollChildFrameTitle:SetWidth(KnowledgeBaseArticleScrollChildFrame:GetWidth() - KnowledgeBaseArticleScrollChildFrameBackButton:GetWidth() - 10);
|
|
KnowledgeBaseArticleScrollChildFrameText:SetWidth(KnowledgeBaseArticleScrollChildFrame:GetWidth() - 10);
|
|
KnowledgeBaseArticleListFramePreviousButton:SetPoint("RIGHT", "KnowledgeBaseArticleListFrameNextButton", "LEFT", - (KnowledgeBaseArticleListFramePreviousButtonText:GetWidth() + KnowledgeBaseArticleListFrameNextButtonText:GetWidth() + 5), 0);
|
|
end
|
|
|
|
function KnowledgeBaseFrame_OnShow(self)
|
|
if ( KBASE_SETUP_LOADED == 0 ) then
|
|
KBSetup_BeginLoading(KBASE_NUM_ARTICLES_PER_PAGE, KBASE_CURRENT_PAGE);
|
|
end
|
|
|
|
GetGMStatus();
|
|
GetGMTicket();
|
|
KnowledgeBaseFrame_UpdateMotd();
|
|
KnowledgeBaseFrame_UpdateServerMessage();
|
|
KnowledgeBaseFrameEditBox:SetFocus();
|
|
|
|
HelpFrame.back = KnowledgeBaseFrameCancel;
|
|
end
|
|
|
|
function KnowledgeBaseFrame_OnEvent(self, event, ...)
|
|
if ( event == "KNOWLEDGE_BASE_SETUP_LOAD_SUCCESS" ) then
|
|
KBASE_SETUP_LOADED = 1;
|
|
|
|
UIDropDownMenu_Initialize(KnowledgeBaseFrameCategoryDropDown, KnowledgeBaseFrameCategoryDropDown_Initialize);
|
|
UIDropDownMenu_Initialize(KnowledgeBaseFrameSubCategoryDropDown, KnowledgeBaseFrameSubCategoryDropDown_Initialize);
|
|
|
|
local articleHeaderCount = KBSetup_GetArticleHeaderCount();
|
|
local totalArticleHeaderCount = KBSetup_GetTotalArticleCount();
|
|
KnowledgeBaseFrame_EnableButtons(articleHeaderCount, totalArticleHeaderCount);
|
|
|
|
if ( articleHeaderCount > 0 ) then
|
|
KnowledgeBaseArticleListFrame_PopulateArticleList(articleHeaderCount, totalArticleHeaderCount, KBSetup_GetArticleHeaderData);
|
|
KnowledgeBaseFrame_ShowSearchFrame();
|
|
else
|
|
KnowledgeBaseErrorFrame_SetErrorMessage(KBASE_ERROR_NO_RESULTS);
|
|
KnowledgeBaseFrame_ShowErrorFrame();
|
|
end
|
|
end
|
|
|
|
if ( event == "KNOWLEDGE_BASE_SETUP_LOAD_FAILURE" ) then
|
|
KnowledgeBaseErrorFrame_SetErrorMessage(KBASE_ERROR_LOAD_FAILURE);
|
|
KnowledgeBaseFrame_ShowErrorFrame();
|
|
KnowledgeBaseFrame_DisableButtons(nil);
|
|
-- enable top issues button, to give them a chance to get the ui loaded
|
|
KnowledgeBaseFrameTopIssuesButton:Enable();
|
|
|
|
KBASE_SETUP_LOADED = 0;
|
|
end
|
|
|
|
if ( event == "KNOWLEDGE_BASE_QUERY_LOAD_SUCCESS" ) then
|
|
KnowledgeBaseArticleListFrameTitle:SetText(KBASE_SEARCH_RESULTS);
|
|
|
|
local articleHeaderCount = KBQuery_GetArticleHeaderCount();
|
|
local totalArticleHeaderCount = KBQuery_GetTotalArticleCount();
|
|
KnowledgeBaseFrame_EnableButtons(KBQuery_GetArticleHeaderCount(), KBQuery_GetTotalArticleCount());
|
|
|
|
if ( articleHeaderCount > 0 ) then
|
|
KnowledgeBaseArticleListFrame_PopulateArticleList(articleHeaderCount, totalArticleHeaderCount, KBQuery_GetArticleHeaderData);
|
|
KnowledgeBaseFrame_ShowSearchFrame();
|
|
else
|
|
KnowledgeBaseErrorFrame_SetErrorMessage(KBASE_ERROR_NO_RESULTS);
|
|
KnowledgeBaseFrame_ShowErrorFrame();
|
|
end
|
|
end
|
|
|
|
if ( event == "KNOWLEDGE_BASE_QUERY_LOAD_FAILURE" ) then
|
|
KnowledgeBaseErrorFrame_SetErrorMessage(KBASE_ERROR_LOAD_FAILURE);
|
|
KnowledgeBaseFrame_ShowErrorFrame();
|
|
end
|
|
|
|
if ( event == "KNOWLEDGE_BASE_ARTICLE_LOAD_SUCCESS" ) then
|
|
|
|
local id, subject, subjectAlt, text, keywords, languageId, isHot = KBArticle_GetData();
|
|
KnowledgeBaseArticleScrollChildFrameTitle:SetText(subject);
|
|
KnowledgeBaseArticleScrollChildFrameText:SetText(text);
|
|
KnowledgeBaseArticleScrollChildFrameArticleId:SetFormattedText(KBASE_ARTICLE_ID, id);
|
|
|
|
KnowledgeBaseArticleScrollFrameScrollBar:SetValue(0);
|
|
|
|
KnowledgeBaseFrame_ShowArticleFrame();
|
|
end
|
|
|
|
if ( event == "KNOWLEDGE_BASE_ARTICLE_LOAD_FAILURE" ) then
|
|
KnowledgeBaseErrorFrame_SetErrorMessage(KBASE_ERROR_LOAD_FAILURE);
|
|
KnowledgeBaseFrame_ShowErrorFrame();
|
|
end
|
|
|
|
if ( event == "UPDATE_GM_STATUS" ) then
|
|
local status = ...;
|
|
if ( status == GMTICKET_QUEUE_STATUS_ENABLED ) then
|
|
GetGMTicket();
|
|
else
|
|
KnowledgeBaseFrameGMTalk:Disable();
|
|
KnowledgeBaseFrameReportIssue:Disable();
|
|
end
|
|
end
|
|
|
|
if ( event == "KNOWLEDGE_BASE_SYSTEM_MOTD_UPDATE" ) then
|
|
KnowledgeBaseFrame_UpdateMotd();
|
|
end
|
|
|
|
if ( event == "KNOWLEDGE_BASE_SERVER_MESSAGE" ) then
|
|
KnowledgeBaseFrame_UpdateServerMessage();
|
|
end
|
|
end
|
|
|
|
function KnowledgeBaseFrame_UpdateMotd()
|
|
local currentMotd = KBSystem_GetMOTD();
|
|
if ( currentMotd ) then
|
|
local singleLine = gsub(currentMotd, "\n", " ");
|
|
KnowledgeBaseMotdText:SetText(singleLine);
|
|
else
|
|
KnowledgeBaseMotdText:SetText(nil);
|
|
end
|
|
KnowledgeBaseUpdateTopPanelPositions();
|
|
end
|
|
|
|
function KnowledgeBaseFrame_UpdateServerMessage()
|
|
local currrentServerNotice = KBSystem_GetServerNotice();
|
|
if ( currrentServerNotice ) then
|
|
local closeBracketIndex = strfind(currrentServerNotice, "] ", 1, true);
|
|
if ( closeBracketIndex ) then
|
|
currrentServerNotice = strsub(currrentServerNotice, closeBracketIndex + 2);
|
|
end
|
|
KnowledgeBaseServerMessageText:SetText(currrentServerNotice);
|
|
else
|
|
KnowledgeBaseServerMessageText:SetText(nil);
|
|
end
|
|
|
|
KnowledgeBaseUpdateTopPanelPositions();
|
|
end
|
|
|
|
function KnowledgeBaseFrame_Search(resetCurrentPage)
|
|
if ( not KBSetup_IsLoaded() ) then
|
|
return;
|
|
end
|
|
|
|
KnowledgeBaseFrame_DisableButtons();
|
|
|
|
local categoryIndex = (UIDropDownMenu_GetSelectedID(KnowledgeBaseFrameCategoryDropDown) or 1) - KBASE_NUM_FAKE_CATEGORIES;
|
|
local subcategoryIndex = (UIDropDownMenu_GetSelectedID(KnowledgeBaseFrameSubCategoryDropDown) or 1) - KBASE_NUM_FAKE_SUBCATEGORIES;
|
|
|
|
local searchText = KnowledgeBaseFrameEditBox:GetText();
|
|
if ( searchText == KBASE_DEFAULT_SEARCH_TEXT ) then
|
|
searchText = "";
|
|
end
|
|
|
|
if ( resetCurrentPage == 1 ) then
|
|
KBASE_CURRENT_PAGE = 1;
|
|
end
|
|
|
|
KBQuery_BeginLoading(searchText,
|
|
categoryIndex,
|
|
subcategoryIndex,
|
|
KBASE_NUM_ARTICLES_PER_PAGE,
|
|
KBASE_CURRENT_PAGE);
|
|
|
|
KBASE_SEARCH_PERFORMED = 1;
|
|
end
|
|
|
|
function KnowledgeBaseFrame_LoadTopIssues()
|
|
KnowledgeBaseFrame_DisableButtons();
|
|
KBASE_SEARCH_PERFORMED = 0;
|
|
KBASE_CURRENT_PAGE = 1;
|
|
KBASE_SETUP_LOADED = 0;
|
|
KBSetup_BeginLoading(KBASE_NUM_ARTICLES_PER_PAGE, KBASE_CURRENT_PAGE);
|
|
end
|
|
|
|
function DisablePagingButton(button)
|
|
button:Disable();
|
|
local buttonText = _G[button:GetName() .. "Text"];
|
|
buttonText:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
|
end
|
|
|
|
function EnablePagingButton(button)
|
|
button:Enable();
|
|
local buttonText = _G[button:GetName() .. "Text"];
|
|
buttonText:SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
|
|
end
|
|
|
|
function KnowledgeBaseFrame_DisableButtons()
|
|
KBASE_ENABLE_SEARCH = 0;
|
|
KnowledgeBaseFrameTopIssuesButton:Disable();
|
|
KnowledgeBaseFrameSearchButton:Disable();
|
|
|
|
KnowledgeBaseFrameTopIssuesButton.enableDelay = KBASE_SEARCH_BUTTON_DELAY;
|
|
KnowledgeBaseFrameSearchButton.enableDelay = KBASE_SEARCH_BUTTON_DELAY;
|
|
|
|
UIDropDownMenu_DisableDropDown(KnowledgeBaseFrameCategoryDropDown);
|
|
UIDropDownMenu_DisableDropDown(KnowledgeBaseFrameSubCategoryDropDown);
|
|
|
|
DisablePagingButton(KnowledgeBaseArticleListFrameNextButton);
|
|
DisablePagingButton(KnowledgeBaseArticleListFramePreviousButton);
|
|
end
|
|
|
|
function KnowledgeBaseFrame_EnableButtons(articleCount, totalArticleCount)
|
|
KBASE_ENABLE_SEARCH = 1;
|
|
|
|
UIDropDownMenu_EnableDropDown(KnowledgeBaseFrameCategoryDropDown);
|
|
UpdateSubCategoryEnabledState();
|
|
|
|
if ( KBASE_CURRENT_PAGE == 1 ) then
|
|
DisablePagingButton(KnowledgeBaseArticleListFramePreviousButton);
|
|
else
|
|
EnablePagingButton(KnowledgeBaseArticleListFramePreviousButton);
|
|
end
|
|
|
|
if ( articleCount ) then
|
|
if (articleCount == KBASE_NUM_ARTICLES_PER_PAGE and (totalArticleCount > (KBASE_CURRENT_PAGE * KBASE_NUM_ARTICLES_PER_PAGE)) ) then
|
|
EnablePagingButton(KnowledgeBaseArticleListFrameNextButton);
|
|
else
|
|
DisablePagingButton(KnowledgeBaseArticleListFrameNextButton);
|
|
end
|
|
end
|
|
end
|
|
|
|
function KnowledgeBaseFrame_ShowSearchFrame()
|
|
KnowledgeBaseArticleListFrame:Show();
|
|
KnowledgeBaseArticleScrollFrame:Hide();
|
|
KnowledgeBaseErrorFrame:Hide();
|
|
end
|
|
|
|
function KnowledgeBaseFrame_ShowArticleFrame()
|
|
KnowledgeBaseArticleListFrame:Hide();
|
|
KnowledgeBaseArticleScrollFrame:Show();
|
|
KnowledgeBaseErrorFrame:Hide();
|
|
end
|
|
|
|
function KnowledgeBaseFrame_ShowErrorFrame()
|
|
KnowledgeBaseArticleListFrame:Hide();
|
|
KnowledgeBaseArticleScrollFrame:Hide();
|
|
KnowledgeBaseErrorFrame:Show();
|
|
end
|
|
|
|
function KnowledgeBaseFrameCategoryDropDown_OnLoad(self)
|
|
UIDropDownMenu_SetWidth(self, 120);
|
|
UIDropDownMenu_SetText(self, CATEGORY);
|
|
end
|
|
|
|
function KnowledgeBaseFrameCategoryDropDown_Initialize()
|
|
KnowledgeBaseFrameCategoryDropDown_AddInfo(0, ALL);
|
|
local numCategories = KBSetup_GetCategoryCount();
|
|
for i=1, numCategories do
|
|
local categoryId, categoryCaption = KBSetup_GetCategoryData(i);
|
|
KnowledgeBaseFrameCategoryDropDown_AddInfo(i, categoryCaption);
|
|
end
|
|
end
|
|
|
|
function KnowledgeBaseFrameCategoryDropDown_AddInfo(id, caption)
|
|
local info = UIDropDownMenu_CreateInfo();
|
|
info.value = id;
|
|
info.text = caption;
|
|
info.func = KnowledgeBaseFrameCategoryButton_OnClick;
|
|
local checked = nil;
|
|
local selectedId = UIDropDownMenu_GetSelectedID(KnowledgeBaseFrameCategoryDropDown);
|
|
if (selectedId and ((selectedId - KBASE_NUM_FAKE_CATEGORIES) == id)) then
|
|
checked = 1;
|
|
end
|
|
info.checked = checked;
|
|
UIDropDownMenu_AddButton(info);
|
|
end
|
|
|
|
function KnowledgeBaseFrameCategoryButton_OnClick(self)
|
|
local oldSelectedCategoryId = UIDropDownMenu_GetSelectedID(KnowledgeBaseFrameCategoryDropDown);
|
|
local selectedCategoryId = self:GetID();
|
|
|
|
if ( selectedCategoryId == oldSelectedCategoryId) then
|
|
return;
|
|
end
|
|
|
|
UIDropDownMenu_SetSelectedID(KnowledgeBaseFrameCategoryDropDown, selectedCategoryId);
|
|
|
|
UIDropDownMenu_SetSelectedID(KnowledgeBaseFrameSubCategoryDropDown, 0);
|
|
UIDropDownMenu_ClearAll(KnowledgeBaseFrameSubCategoryDropDown);
|
|
UIDropDownMenu_SetText(KnowledgeBaseFrameSubCategoryDropDown, SUBCATEGORY);
|
|
|
|
UpdateSubCategoryEnabledState();
|
|
end
|
|
|
|
function KnowledgeBaseFrameSubCategoryDropDown_OnLoad(self)
|
|
UIDropDownMenu_SetWidth(self, 120);
|
|
UIDropDownMenu_SetText(self, SUBCATEGORY);
|
|
end
|
|
|
|
function UpdateSubCategoryEnabledState()
|
|
local selectedCategoryId = UIDropDownMenu_GetSelectedID(KnowledgeBaseFrameCategoryDropDown);
|
|
if ( not selectedCategoryId or selectedCategoryId == 1 ) then
|
|
UIDropDownMenu_DisableDropDown(KnowledgeBaseFrameSubCategoryDropDown);
|
|
return;
|
|
end
|
|
|
|
local numSubCategories = KBSetup_GetSubCategoryCount(selectedCategoryId - KBASE_NUM_FAKE_CATEGORIES);
|
|
if ( numSubCategories == 0 ) then
|
|
UIDropDownMenu_DisableDropDown(KnowledgeBaseFrameSubCategoryDropDown);
|
|
else
|
|
UIDropDownMenu_EnableDropDown(KnowledgeBaseFrameSubCategoryDropDown);
|
|
end
|
|
end
|
|
|
|
function KnowledgeBaseFrameSubCategoryDropDown_Initialize()
|
|
local selectedCategoryId = UIDropDownMenu_GetSelectedID(KnowledgeBaseFrameCategoryDropDown);
|
|
if ( not selectedCategoryId or selectedCategoryId == 1 ) then
|
|
return;
|
|
end
|
|
selectedCategoryId = selectedCategoryId - KBASE_NUM_FAKE_CATEGORIES;
|
|
|
|
KnowledgeBaseFrameSubCategoryDropDown_AddInfo(0, ALL);
|
|
local numCategories = KBSetup_GetSubCategoryCount(selectedCategoryId);
|
|
for i=1, numCategories do
|
|
local categoryId, categoryCaption = KBSetup_GetSubCategoryData(selectedCategoryId, i);
|
|
KnowledgeBaseFrameSubCategoryDropDown_AddInfo(i, categoryCaption);
|
|
end
|
|
|
|
UpdateSubCategoryEnabledState();
|
|
end
|
|
|
|
function KnowledgeBaseFrameSubCategoryDropDown_AddInfo(id, caption)
|
|
local info = UIDropDownMenu_CreateInfo();
|
|
info.value = id;
|
|
info.text = caption;
|
|
info.func = KnowledgeBaseFrameSubCategoryButton_OnClick;
|
|
local checked = nil;
|
|
local selectedId = UIDropDownMenu_GetSelectedID(KnowledgeBaseFrameSubCategoryDropDown);
|
|
if (selectedId and ((selectedId - KBASE_NUM_FAKE_SUBCATEGORIES) == id)) then
|
|
checked = 1;
|
|
end
|
|
info.checked = checked;
|
|
UIDropDownMenu_AddButton(info);
|
|
end
|
|
|
|
function KnowledgeBaseFrameSubCategoryButton_OnClick(self)
|
|
UIDropDownMenu_SetSelectedID(KnowledgeBaseFrameSubCategoryDropDown, self:GetID());
|
|
end
|
|
|
|
function KnowledgeBaseArticleListFrame_HideArticleList()
|
|
for i=1, KBASE_NUM_ARTICLES_PER_PAGE do
|
|
local frame = _G["KnowledgeBaseArticleListItem" .. i];
|
|
frame:Hide();
|
|
end
|
|
end
|
|
|
|
function KnowledgeBaseArticleListFrame_PopulateArticleList(articleCount, totalArticleCount, dataFunc)
|
|
KnowledgeBaseArticleListFrame_HideArticleList();
|
|
for i=1, articleCount do
|
|
local articleId, articleHeader, isArticleHot, isArticleUpdated = dataFunc(i);
|
|
local frame = _G["KnowledgeBaseArticleListItem" .. i];
|
|
frame.number = i + ((KBASE_CURRENT_PAGE -1) * KBASE_NUM_ARTICLES_PER_PAGE);
|
|
frame.articleId = articleId;
|
|
frame.articleHeader = articleHeader;
|
|
frame.isArticleHot = isArticleHot;
|
|
frame.isArticleUpdated = isArticleUpdated;
|
|
|
|
KnowledgeBaseArticleListItem_Update(frame);
|
|
frame:Show();
|
|
end
|
|
|
|
KnowledgeBaseArticleListFrameCount:SetFormattedText(KBASE_ARTICLE_COUNT,
|
|
(((KBASE_CURRENT_PAGE -1) * KBASE_NUM_ARTICLES_PER_PAGE) + 1),
|
|
min(articleCount, (KBASE_CURRENT_PAGE * KBASE_NUM_ARTICLES_PER_PAGE)) + ((KBASE_CURRENT_PAGE -1) * KBASE_NUM_ARTICLES_PER_PAGE),
|
|
totalArticleCount);
|
|
end
|
|
|
|
function KnowledgeBaseArticleListItem_Update(frame)
|
|
local numberText = _G[frame:GetName() .. "Number"];
|
|
numberText:SetText(frame.number .. ".");
|
|
|
|
local updatedIcon = _G[frame:GetName() .. "UpdatedIcon"];
|
|
|
|
if ( frame.isArticleUpdated ) then
|
|
updatedIcon:Show();
|
|
else
|
|
updatedIcon:Hide();
|
|
end
|
|
|
|
local hotIcon = _G[frame:GetName() .. "HotIcon"];
|
|
if ( frame.isArticleHot ) then
|
|
hotIcon:Show();
|
|
else
|
|
hotIcon:Hide();
|
|
end
|
|
|
|
local titleText = _G[frame:GetName() .. "Title"];
|
|
titleText:SetText(frame.articleHeader);
|
|
end
|
|
|
|
function KnowledgeBaseUpdateTopPanelPositions()
|
|
if ( KnowledgeBaseMotdText:GetText() ) then
|
|
KnowledgeBaseMotdLabel:Show();
|
|
KnowledgeBaseMotdTextFrame:Show();
|
|
else
|
|
KnowledgeBaseMotdLabel:Hide();
|
|
KnowledgeBaseMotdTextFrame:Hide();
|
|
end
|
|
|
|
if ( KnowledgeBaseServerMessageText:GetText() ) then
|
|
KnowledgeBaseServerMessageLabel:Show();
|
|
KnowledgeBaseServerMessageTextFrame:Show();
|
|
else
|
|
KnowledgeBaseServerMessageLabel:Hide();
|
|
KnowledgeBaseServerMessageTextFrame:Hide();
|
|
end
|
|
|
|
if ( KnowledgeBaseMotdLabel:IsShown() ) then
|
|
KnowledgeBaseServerMessageLabel:SetPoint("TOPLEFT", KnowledgeBaseMotdLabel, "BOTTOMLEFT", 0, -5);
|
|
else
|
|
KnowledgeBaseServerMessageLabel:SetPoint("TOPLEFT", KnowledgeBaseMotdLabel, "TOPLEFT", 0, 0);
|
|
end
|
|
end
|
|
|
|
function KnowledgeBaseArticleListFrame_PreviousPage()
|
|
|
|
if ( KBASE_CURRENT_PAGE == 1 ) then
|
|
return;
|
|
end
|
|
|
|
KBASE_CURRENT_PAGE = KBASE_CURRENT_PAGE - 1;
|
|
|
|
KnowledgeBaseFrame_DisableButtons();
|
|
|
|
if ( KBASE_SEARCH_PERFORMED == 1 ) then
|
|
KnowledgeBaseFrame_Search(0);
|
|
else
|
|
KBASE_SETUP_LOADED = 0;
|
|
KBSetup_BeginLoading(KBASE_NUM_ARTICLES_PER_PAGE, KBASE_CURRENT_PAGE);
|
|
end
|
|
end
|
|
|
|
function KnowledgeBaseArticleListFrame_NextPage()
|
|
|
|
KBASE_CURRENT_PAGE = KBASE_CURRENT_PAGE + 1;
|
|
|
|
KnowledgeBaseFrame_DisableButtons();
|
|
|
|
if ( KBASE_SEARCH_PERFORMED == 1 ) then
|
|
KnowledgeBaseFrame_Search(0);
|
|
else
|
|
KBASE_SETUP_LOADED = 0;
|
|
KBSetup_BeginLoading(KBASE_NUM_ARTICLES_PER_PAGE, KBASE_CURRENT_PAGE);
|
|
end
|
|
end
|
|
|
|
function KnowledgeBaseErrorFrame_SetErrorMessage(message)
|
|
KnowledgeBaseErrorFrameText:SetText(message);
|
|
end
|
|
|
|
function KnowledgeBaseArticleListItem_OnClick(self)
|
|
PlaySound("igMainMenuOptionCheckBoxOn");
|
|
local searchText = KnowledgeBaseFrameEditBox:GetText();
|
|
local searchType = 2;
|
|
if (searchText == KBASE_DEFAULT_SEARCH_TEXT or searchText == "") then
|
|
searchType = 1;
|
|
end
|
|
KBArticle_BeginLoading(self.articleId, searchType);
|
|
end
|
|
|
|
function KnowledgeBaseArticleListItem_OnEnter(self)
|
|
self.tooltipDelay = KBASE_TOOLTIP_DELAY;
|
|
end
|
|
|
|
function KnowledgeBaseArticleListItem_OnUpdate(self, ...)
|
|
if ( not self.tooltipDelay ) then
|
|
return;
|
|
end
|
|
|
|
local elapsed = ...;
|
|
self.tooltipDelay = self.tooltipDelay - elapsed;
|
|
if ( self.tooltipDelay > 0 ) then
|
|
return;
|
|
end
|
|
|
|
self.tooltipDelay = nil;
|
|
GameTooltip:SetOwner(self, "ANCHOR_RIGHT", 15);
|
|
GameTooltip:SetText(self.articleHeader, HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b, 1);
|
|
|
|
if ( self.isArticleHot ) then
|
|
GameTooltip:AddLine(KBASE_HOT_ISSUE);
|
|
GameTooltip:AddTexture("Interface\\HelpFrame\\HotIssueIcon");
|
|
end
|
|
|
|
if ( self.isArticleUpdated ) then
|
|
GameTooltip:AddLine(KBASE_RECENTLY_UPDATED);
|
|
GameTooltip:AddTexture("Interface\\GossipFrame\\AvailableQuestIcon");
|
|
end
|
|
|
|
GameTooltip:SetMinimumWidth(220, 1);
|
|
GameTooltip:Show();
|
|
end
|
|
|
|
function KnowledgeBaseArticleListItem_OnLeave(self)
|
|
self.tooltipDelay = nil;
|
|
GameTooltip:SetMinimumWidth(0, 0);
|
|
GameTooltip:Hide();
|
|
end
|
|
|
|
function KnowledgeBaseServerMessageTextFrame_OnEnter(self)
|
|
self.tooltipDelay = KBASE_TOOLTIP_DELAY;
|
|
end
|
|
|
|
function KnowledgeBaseServerMessageTextFrame_OnUpdate(self, elapsed)
|
|
if ( not self.tooltipDelay ) then
|
|
return;
|
|
end
|
|
|
|
self.tooltipDelay = self.tooltipDelay - elapsed;
|
|
if ( self.tooltipDelay > 0 ) then
|
|
return;
|
|
end
|
|
|
|
self.tooltipDelay = nil;
|
|
GameTooltip:SetOwner(self, "ANCHOR_RIGHT", 15);
|
|
GameTooltip:SetText(KnowledgeBaseServerMessageText:GetText(), HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b, 1);
|
|
GameTooltip:SetMinimumWidth(220, 1);
|
|
GameTooltip:Show();
|
|
end
|
|
|
|
function KnowledgeBaseServerMessageTextFrame_OnLeave(self)
|
|
self.tooltipDelay = nil;
|
|
GameTooltip:SetMinimumWidth(0, 0);
|
|
GameTooltip:Hide();
|
|
end
|
|
|
|
function KnowledgeBaseMotdTextFrame_OnEnter(self)
|
|
self.tooltipDelay = KBASE_TOOLTIP_DELAY;
|
|
end
|
|
|
|
function KnowledgeBaseMotdTextFrame_OnUpdate(self, elapsed)
|
|
if ( not self.tooltipDelay ) then
|
|
return;
|
|
end
|
|
|
|
self.tooltipDelay = self.tooltipDelay - elapsed;
|
|
if ( self.tooltipDelay > 0 ) then
|
|
return;
|
|
end
|
|
|
|
self.tooltipDelay = nil;
|
|
GameTooltip:SetOwner(self, "ANCHOR_RIGHT", 15);
|
|
GameTooltip:SetText(KnowledgeBaseMotdText:GetText(), HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b, 1);
|
|
GameTooltip:SetMinimumWidth(220, 1);
|
|
GameTooltip:Show();
|
|
end
|
|
|
|
function KnowledgeBaseMotdTextFrame_OnLeave(self)
|
|
self.tooltipDelay = nil;
|
|
GameTooltip:SetMinimumWidth(0, 0);
|
|
GameTooltip:Hide();
|
|
end
|
|
|
|
function SearchButton_OnUpdate(self, elapsed)
|
|
if ( KBASE_ENABLE_SEARCH == 0 or ( not self.enableDelay ) ) then
|
|
return;
|
|
end
|
|
|
|
self.enableDelay = self.enableDelay - elapsed;
|
|
if ( self.enableDelay > 0 ) then
|
|
return;
|
|
end
|
|
|
|
self.enableDelay = nil;
|
|
self:Enable();
|
|
end |