init
This commit is contained in:
@@ -0,0 +1,395 @@
|
||||
local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||||
local S = E:GetModule("Skins")
|
||||
|
||||
--Lua functions
|
||||
local _G = _G
|
||||
local unpack = unpack
|
||||
local fmod = math.fmod
|
||||
--WoW API / Variables
|
||||
local hooksecurefunc = hooksecurefunc
|
||||
local CLASS_SORT_ORDER = CLASS_SORT_ORDER
|
||||
|
||||
S:AddCallbackForAddon("Blizzard_Calendar", "Skin_Blizzard_Calendar", function()
|
||||
if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.calendar then return end
|
||||
|
||||
CalendarFrame:StripTextures()
|
||||
CalendarFrame:CreateBackdrop("Transparent")
|
||||
CalendarFrame.backdrop:Point("TOPLEFT", 3, -7)
|
||||
CalendarFrame.backdrop:Point("BOTTOMRIGHT", -2, -4)
|
||||
|
||||
S:SecureHook("Calendar_Show", function()
|
||||
S:SetUIPanelWindowInfo(CalendarFrame, "xoffset", 8, nil, true)
|
||||
S:SetUIPanelWindowInfo(CalendarFrame, "yoffset", -5, nil, true)
|
||||
S:SetUIPanelWindowInfo(CalendarFrame, "width", nil, -8)
|
||||
S:SetBackdropHitRect(CalendarFrame)
|
||||
S:Unhook("Calendar_Show")
|
||||
end)
|
||||
|
||||
CalendarFrameModalOverlay:SetFrameStrata("DIALOG")
|
||||
CalendarModalDummy:SetAllPoints(CalendarFrameModalOverlay)
|
||||
CalendarFrameBlocker:SetAllPoints(CalendarFrameModalOverlay)
|
||||
|
||||
CalendarFrame:EnableMouseWheel(true)
|
||||
CalendarFrame:SetScript("OnMouseWheel", function(_, value)
|
||||
if value > 0 then
|
||||
if CalendarPrevMonthButton:IsEnabled() == 1 then
|
||||
CalendarPrevMonthButton_OnClick()
|
||||
end
|
||||
else
|
||||
if CalendarNextMonthButton:IsEnabled() == 1 then
|
||||
CalendarNextMonthButton_OnClick()
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
S:HandleCloseButton(CalendarCloseButton, CalendarFrame.backdrop)
|
||||
|
||||
S:HandleNextPrevButton(CalendarPrevMonthButton)
|
||||
S:HandleNextPrevButton(CalendarNextMonthButton)
|
||||
|
||||
CalendarPrevMonthButton:Point("RIGHT", CalendarMonthBackground, "LEFT", 0, -8)
|
||||
CalendarNextMonthButton:Point("LEFT", CalendarMonthBackground, "RIGHT", 0, -8)
|
||||
|
||||
do
|
||||
local frame = CalendarFilterFrame
|
||||
local button = CalendarFilterButton
|
||||
local text = CalendarFilterFrameText
|
||||
|
||||
frame:StripTextures()
|
||||
frame:Width(155)
|
||||
frame:Point("TOPRIGHT", -32, -24)
|
||||
|
||||
text:Point("RIGHT", -34, 3)
|
||||
|
||||
button:Point("RIGHT", frame, "RIGHT", -10, 3)
|
||||
button.SetPoint = E.noop
|
||||
|
||||
S:HandleNextPrevButton(button)
|
||||
|
||||
frame:CreateBackdrop("Default")
|
||||
frame.backdrop:Point("TOPLEFT", 20, 4)
|
||||
frame.backdrop:Point("BOTTOMRIGHT", button, "BOTTOMRIGHT", 2, -2)
|
||||
end
|
||||
|
||||
local bg = CreateFrame("Frame", "CalendarFrameBackdrop", CalendarFrame)
|
||||
bg:SetTemplate("Default")
|
||||
bg:SetOutside(CalendarDayButton1, 3, 3, CalendarDayButton42)
|
||||
|
||||
CalendarContextMenu:SetTemplate("Transparent")
|
||||
CalendarContextMenu.SetBackdropColor = E.noop
|
||||
CalendarContextMenu.SetBackdropBorderColor = E.noop
|
||||
|
||||
CalendarInviteStatusContextMenu:SetTemplate("Transparent")
|
||||
CalendarInviteStatusContextMenu.SetBackdropColor = E.noop
|
||||
CalendarInviteStatusContextMenu.SetBackdropBorderColor = E.noop
|
||||
|
||||
for i = 1, 7 do
|
||||
_G["CalendarContextMenuButton"..i]:StyleButton()
|
||||
end
|
||||
|
||||
for i = 1, 42 do
|
||||
local button = _G["CalendarDayButton"..i]
|
||||
local eventTexture = _G["CalendarDayButton"..i.."EventTexture"]
|
||||
local overlayFrame = _G["CalendarDayButton"..i.."OverlayFrame"]
|
||||
button:SetFrameLevel(button:GetFrameLevel() + 1)
|
||||
button:Size(91 - E.Border)
|
||||
button:SetTemplate("Default", nil, true)
|
||||
button:SetBackdropColor(0, 0, 0, 0)
|
||||
button:GetNormalTexture():SetInside()
|
||||
button:GetNormalTexture():SetDrawLayer("BACKGROUND")
|
||||
button:GetHighlightTexture():SetInside()
|
||||
button:GetHighlightTexture():SetTexture(1, 1, 1, 0.3)
|
||||
eventTexture:SetInside()
|
||||
overlayFrame:SetInside()
|
||||
|
||||
hooksecurefunc(eventTexture, "SetTexCoord", function(self, left, right, top, bottom)
|
||||
if left == 0 and right == 1 and top == 0 and bottom == 1 then
|
||||
if self._blocked then return end
|
||||
|
||||
self._blocked = true
|
||||
self:SetTexCoord(unpack(E.TexCoords))
|
||||
self._blocked = nil
|
||||
end
|
||||
end)
|
||||
|
||||
for j = 1, 4 do
|
||||
local EventButton = _G["CalendarDayButton"..i.."EventButton"..j]
|
||||
EventButton:StripTextures()
|
||||
EventButton:StyleButton()
|
||||
end
|
||||
|
||||
button:ClearAllPoints()
|
||||
if i == 1 then
|
||||
button:SetPoint("TOPLEFT", CalendarWeekday1Background, "BOTTOMLEFT", 0, 0)
|
||||
elseif fmod(i, 7) == 1 then
|
||||
button:SetPoint("TOPLEFT", _G["CalendarDayButton"..(i - 7)], "BOTTOMLEFT", 0, -E.Border)
|
||||
else
|
||||
button:SetPoint("TOPLEFT", _G["CalendarDayButton"..(i - 1)], "TOPRIGHT", E.Border, 0)
|
||||
end
|
||||
end
|
||||
|
||||
CalendarTodayFrame:StripTextures()
|
||||
CalendarTodayFrame:SetTemplate("Default")
|
||||
CalendarTodayFrame:Size(CalendarDayButton1:GetWidth(), CalendarDayButton1:GetHeight())
|
||||
CalendarTodayFrame:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
|
||||
local value = E.db.general.valuecolor
|
||||
CalendarTodayFrame:SetBackdropColor(value.r, value.g, value.b, 0.5)
|
||||
CalendarTodayFrame:HookScript("OnUpdate", function(self) self:SetAlpha(CalendarTodayTextureGlow:GetAlpha()) end)
|
||||
CalendarTodayFrame:CreateShadow()
|
||||
CalendarTodayFrame.shadow:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
|
||||
|
||||
CalendarCreateEventFrame:StripTextures()
|
||||
CalendarCreateEventFrame:SetTemplate("Transparent")
|
||||
CalendarCreateEventFrame:Point("TOPLEFT", CalendarFrame, "TOPRIGHT", -3, -7)
|
||||
CalendarCreateEventTitleFrame:StripTextures()
|
||||
|
||||
CalendarCreateEventFrameModalOverlay:SetAllPoints(CalendarCreateEventFrame)
|
||||
CalendarCreateEventFrameModalOverlay:SetFrameStrata("DIALOG")
|
||||
CalendarEventFrameBlocker:SetAllPoints(CalendarCreateEventFrameModalOverlay)
|
||||
|
||||
S:HandleButton(CalendarCreateEventCreateButton, true)
|
||||
S:HandleButton(CalendarCreateEventMassInviteButton, true)
|
||||
S:HandleButton(CalendarCreateEventInviteButton, true)
|
||||
CalendarCreateEventInviteButton:Point("TOPLEFT", CalendarCreateEventInviteEdit, "TOPRIGHT", 4, 1)
|
||||
CalendarCreateEventInviteEdit:Width(CalendarCreateEventInviteEdit:GetWidth() - 2)
|
||||
|
||||
CalendarCreateEventInviteList:StripTextures()
|
||||
CalendarCreateEventInviteList:SetTemplate("Default")
|
||||
|
||||
S:HandleEditBox(CalendarCreateEventInviteEdit)
|
||||
S:HandleEditBox(CalendarCreateEventTitleEdit)
|
||||
S:HandleDropDownBox(CalendarCreateEventTypeDropDown, 157)
|
||||
|
||||
CalendarCreateEventDescriptionContainer:StripTextures()
|
||||
CalendarCreateEventDescriptionContainer:SetTemplate("Default")
|
||||
|
||||
S:HandleCloseButton(CalendarCreateEventCloseButton, CalendarCreateEventFrame)
|
||||
|
||||
S:HandleCheckBox(CalendarCreateEventLockEventCheck)
|
||||
|
||||
S:HandleDropDownBox(CalendarCreateEventHourDropDown, 68)
|
||||
S:HandleDropDownBox(CalendarCreateEventMinuteDropDown, 68)
|
||||
S:HandleDropDownBox(CalendarCreateEventAMPMDropDown, 68)
|
||||
S:HandleDropDownBox(CalendarCreateEventRepeatOptionDropDown, 157)
|
||||
|
||||
CalendarCreateEventIcon:CreateBackdrop()
|
||||
CalendarCreateEventIcon:Point("TOPLEFT", 14, -26)
|
||||
CalendarCreateEventIcon:SetTexCoord(unpack(E.TexCoords))
|
||||
CalendarCreateEventIcon.SetTexCoord = E.noop
|
||||
|
||||
CalendarCreateEventTitleEdit:Size(160, 18)
|
||||
CalendarCreateEventTitleEdit:Point("TOPLEFT", 14, -85)
|
||||
|
||||
CalendarCreateEventTypeDropDown:Point("TOPLEFT", 158, -81)
|
||||
|
||||
CalendarCreateEventHourDropDown:Point("TOPLEFT", -7, -108)
|
||||
CalendarCreateEventMinuteDropDown:Point("LEFT", CalendarCreateEventHourDropDown, "RIGHT", -23, 0)
|
||||
CalendarCreateEventAMPMDropDown:Point("LEFT", CalendarCreateEventMinuteDropDown, "RIGHT", -23, 0)
|
||||
|
||||
CalendarCreateEventRepeatOptionDropDown:Point("TOPLEFT", 158, -108)
|
||||
|
||||
CalendarCreateEventDescriptionContainer:Size(294, 68)
|
||||
CalendarCreateEventDescriptionContainer:Point("TOPLEFT", 13, -138)
|
||||
|
||||
CalendarCreateEventLockEventCheck:Point("TOPRIGHT", -122, 1)
|
||||
|
||||
CalendarCreateEventInviteList:Point("TOP", 0, -43)
|
||||
CalendarCreateEventInviteEdit:Point("TOPLEFT", CalendarCreateEventInviteList, "BOTTOMLEFT", 1, -8)
|
||||
CalendarCreateEventMassInviteButton:Point("BOTTOMLEFT", 13, 13)
|
||||
CalendarCreateEventCreateButton:Point("BOTTOMRIGHT", -13, 13)
|
||||
|
||||
CalendarCreateEventInviteListSection:StripTextures()
|
||||
|
||||
CalendarClassButtonContainer:HookScript("OnShow", function()
|
||||
for i, class in ipairs(CLASS_SORT_ORDER) do
|
||||
local button = _G["CalendarClassButton"..i]
|
||||
button:StripTextures()
|
||||
button:CreateBackdrop("Default")
|
||||
button:Size(23)
|
||||
|
||||
local coords = CLASS_ICON_TCOORDS[class]
|
||||
local buttonIcon = button:GetNormalTexture()
|
||||
buttonIcon:SetTexture("Interface\\Glues\\CharacterCreate\\UI-CharacterCreate-Classes")
|
||||
buttonIcon:SetTexCoord(coords[1] + 0.02, coords[2] - 0.02, coords[3] + 0.02, coords[4] - 0.02)
|
||||
end
|
||||
|
||||
CalendarClassButton1:Point("TOPLEFT", 2, 0)
|
||||
|
||||
CalendarClassTotalsButton:StripTextures()
|
||||
CalendarClassTotalsButton:CreateBackdrop("Default")
|
||||
CalendarClassTotalsButton:Size(23)
|
||||
end)
|
||||
|
||||
-- Texture Picker Frame
|
||||
CalendarTexturePickerFrame:StripTextures()
|
||||
CalendarTexturePickerTitleFrame:StripTextures()
|
||||
|
||||
CalendarTexturePickerFrame:SetTemplate("Transparent")
|
||||
CalendarTexturePickerFrame:Width(280)
|
||||
CalendarTexturePickerFrame:ClearAllPoints()
|
||||
CalendarTexturePickerFrame:Point("TOPLEFT", CalendarEventFrameBlocker, "TOPRIGHT", 31, 0)
|
||||
|
||||
S:HandleScrollBar(CalendarTexturePickerScrollBar)
|
||||
S:HandleButton(CalendarTexturePickerAcceptButton, true)
|
||||
S:HandleButton(CalendarTexturePickerCancelButton, true)
|
||||
S:HandleButton(CalendarCreateEventInviteButton, true)
|
||||
S:HandleButton(CalendarCreateEventRaidInviteButton, true)
|
||||
|
||||
for i = 1, 16 do
|
||||
_G["CalendarTexturePickerScrollFrameButton"..i]:StyleButton()
|
||||
end
|
||||
|
||||
CalendarTexturePickerScrollFrame:CreateBackdrop("Transparent")
|
||||
CalendarTexturePickerScrollFrame.backdrop:Point("TOPLEFT", -2, 2)
|
||||
CalendarTexturePickerScrollFrame.backdrop:Point("BOTTOMRIGHT", 2, -4)
|
||||
|
||||
CalendarTexturePickerScrollFrame:Point("TOPLEFT", 10, -20)
|
||||
|
||||
CalendarTexturePickerScrollBar:Point("TOPLEFT", CalendarTexturePickerScrollFrame, "TOPRIGHT", 5, -17)
|
||||
CalendarTexturePickerScrollBar:Point("BOTTOMLEFT", CalendarTexturePickerScrollFrame, "BOTTOMRIGHT", 5, 15)
|
||||
|
||||
CalendarTexturePickerCancelButton:Point("BOTTOMRIGHT", -8, 8)
|
||||
|
||||
-- Mass Invite Frame
|
||||
CalendarMassInviteFrame:StripTextures()
|
||||
CalendarMassInviteFrame:SetTemplate("Transparent")
|
||||
|
||||
S:HandleCloseButton(CalendarMassInviteCloseButton, CalendarMassInviteFrame)
|
||||
|
||||
CalendarMassInviteTitleFrame:StripTextures()
|
||||
|
||||
S:HandleDropDownBox(CalendarMassInviteGuildRankMenu, 140)
|
||||
|
||||
S:HandleEditBox(CalendarMassInviteGuildMinLevelEdit)
|
||||
S:HandleEditBox(CalendarMassInviteGuildMaxLevelEdit)
|
||||
|
||||
S:HandleButton(CalendarMassInviteGuildAcceptButton)
|
||||
S:HandleButton(CalendarMassInviteArenaButton2)
|
||||
S:HandleButton(CalendarMassInviteArenaButton3)
|
||||
S:HandleButton(CalendarMassInviteArenaButton5)
|
||||
|
||||
CalendarMassInviteFrame:Size(307, 179)
|
||||
CalendarMassInviteFrame:ClearAllPoints()
|
||||
CalendarMassInviteFrame:Point("TOPLEFT", CalendarCreateEventFrame, "TOPRIGHT", 31, 0)
|
||||
|
||||
CalendarMassInviteGuildLevelText:Point("TOPLEFT", 40, -53)
|
||||
|
||||
CalendarMassInviteFrameLevelDivider:Point("TOPLEFT", 51, -74)
|
||||
CalendarMassInviteGuildMinLevelEdit:Height(18)
|
||||
CalendarMassInviteGuildMinLevelEdit:Point("TOPLEFT", 20, -72)
|
||||
CalendarMassInviteGuildMaxLevelEdit:Height(18)
|
||||
CalendarMassInviteGuildMaxLevelEdit:Point("TOPLEFT", 65, -72)
|
||||
|
||||
CalendarMassInviteGuildRankText:Point("TOPLEFT", 188, -53)
|
||||
CalendarMassInviteGuildRankMenu:Point("TOPLEFT", 167, -68)
|
||||
|
||||
CalendarMassInviteGuildAcceptButton:Point("TOPRIGHT", -8, -100)
|
||||
|
||||
CalendarMassInviteArenaButton2:Point("TOPLEFT", 8, -149)
|
||||
CalendarMassInviteArenaButton3:Point("TOP", 0, -149)
|
||||
CalendarMassInviteArenaButton5:Point("TOPRIGHT", -8, -149)
|
||||
|
||||
select(6, CalendarMassInviteFrame:GetRegions()):Point("TOP", 0, -130)
|
||||
|
||||
-- Raid View
|
||||
CalendarViewRaidFrame:StripTextures()
|
||||
CalendarViewRaidFrame:SetTemplate("Transparent")
|
||||
CalendarViewRaidFrame:Point("TOPLEFT", CalendarFrame, "TOPRIGHT", -3, -7)
|
||||
|
||||
S:HandleCloseButton(CalendarViewRaidCloseButton, CalendarViewRaidFrame)
|
||||
|
||||
CalendarViewRaidTitleFrame:StripTextures()
|
||||
|
||||
-- Holiday View
|
||||
CalendarViewHolidayFrame:StripTextures(true)
|
||||
CalendarViewHolidayFrame:SetTemplate("Transparent")
|
||||
CalendarViewHolidayFrame:Point("TOPLEFT", CalendarFrame, "TOPRIGHT", -3, -7)
|
||||
CalendarViewHolidayTitleFrame:StripTextures()
|
||||
S:HandleCloseButton(CalendarViewHolidayCloseButton, CalendarViewHolidayFrame)
|
||||
|
||||
-- Event View
|
||||
CalendarViewEventFrame:StripTextures()
|
||||
CalendarViewEventFrame:SetTemplate("Transparent")
|
||||
CalendarViewEventFrame:Point("TOPLEFT", CalendarFrame, "TOPRIGHT", -3, -7)
|
||||
|
||||
S:HandleCloseButton(CalendarViewEventCloseButton, CalendarViewEventFrame)
|
||||
|
||||
CalendarViewEventTitleFrame:StripTextures()
|
||||
|
||||
CalendarViewEventDescriptionContainer:StripTextures()
|
||||
CalendarViewEventDescriptionContainer:SetTemplate("Transparent")
|
||||
|
||||
CalendarViewEventInviteList:StripTextures()
|
||||
CalendarViewEventInviteList:SetTemplate("Transparent")
|
||||
CalendarViewEventInviteListSection:StripTextures()
|
||||
|
||||
S:HandleScrollBar(CalendarViewEventDescriptionScrollFrameScrollBar)
|
||||
S:HandleScrollBar(CalendarViewEventInviteListScrollFrameScrollBar)
|
||||
|
||||
CalendarViewEventFrameModalOverlay:SetAllPoints(CalendarViewEventFrame)
|
||||
CalendarViewEventFrameModalOverlay:SetFrameStrata("DIALOG")
|
||||
|
||||
S:HandleButton(CalendarViewEventAcceptButton)
|
||||
S:HandleButton(CalendarViewEventTentativeButton)
|
||||
S:HandleButton(CalendarViewEventRemoveButton)
|
||||
S:HandleButton(CalendarViewEventDeclineButton)
|
||||
|
||||
CalendarViewEventIcon:CreateBackdrop()
|
||||
CalendarViewEventIcon:SetTexCoord(unpack(E.TexCoords))
|
||||
CalendarViewEventIcon.SetTexCoord = E.noop
|
||||
|
||||
CalendarViewEventDescriptionContainer:Size(294, 68)
|
||||
CalendarViewEventDescriptionContainer:Point("TOPLEFT", 13, -94)
|
||||
|
||||
CalendarViewEventDescriptionScrollFrameScrollBar:Point("TOPLEFT", CalendarViewEventDescriptionScrollFrame, "TOPRIGHT", 4, -15)
|
||||
CalendarViewEventDescriptionScrollFrameScrollBar:Point("BOTTOMLEFT", CalendarViewEventDescriptionScrollFrame, "BOTTOMRIGHT", 4, 15)
|
||||
|
||||
CalendarViewEventInviteListScrollFrameScrollBar:Point("TOPLEFT", CalendarViewEventInviteListScrollFrame, "TOPRIGHT", 7, -16)
|
||||
CalendarViewEventInviteListScrollFrameScrollBar:Point("BOTTOMLEFT", CalendarViewEventInviteListScrollFrame, "BOTTOMRIGHT", 7, 16)
|
||||
|
||||
CalendarViewEventIcon:Point("TOPLEFT", 14, -26)
|
||||
|
||||
CalendarViewEventInviteListSection:Point("TOPLEFT", 0, -177)
|
||||
|
||||
-- Event Picker Frame
|
||||
CalendarEventPickerFrame:StripTextures()
|
||||
CalendarEventPickerTitleFrame:StripTextures()
|
||||
|
||||
CalendarEventPickerFrame:SetTemplate("Transparent")
|
||||
CalendarEventPickerFrame:SetFrameLevel(CalendarFrameModalOverlay:GetFrameLevel() + 10)
|
||||
|
||||
S:HandleScrollBar(CalendarEventPickerScrollBar)
|
||||
S:HandleButton(CalendarEventPickerCloseButton, true)
|
||||
|
||||
CalendarEventPickerScrollFrame:Width(253)
|
||||
CalendarEventPickerScrollFrame:Point("TOPLEFT", 8, -22)
|
||||
|
||||
CalendarEventPickerScrollBar:Point("TOPLEFT", CalendarEventPickerScrollFrame, "TOPRIGHT", 3, -19)
|
||||
CalendarEventPickerScrollBar:Point("BOTTOMLEFT", CalendarEventPickerScrollFrame, "BOTTOMRIGHT", 3, 17)
|
||||
|
||||
CalendarEventPickerCloseButton:Point("BOTTOMRIGHT", -8, 8)
|
||||
|
||||
-- Create Event
|
||||
S:HandleScrollBar(CalendarCreateEventDescriptionScrollFrameScrollBar)
|
||||
S:HandleScrollBar(CalendarCreateEventInviteListScrollFrameScrollBar)
|
||||
|
||||
CalendarCreateEventDescriptionScrollFrameScrollBar:Point("TOPLEFT", CalendarCreateEventDescriptionScrollFrame, "TOPRIGHT", 4, -15)
|
||||
CalendarCreateEventDescriptionScrollFrameScrollBar:Point("BOTTOMLEFT", CalendarCreateEventDescriptionScrollFrame, "BOTTOMRIGHT", 4, 15)
|
||||
|
||||
CalendarCreateEventInviteListScrollFrameScrollBar:Point("TOPLEFT", CalendarCreateEventInviteListScrollFrame, "TOPRIGHT", 7, -16)
|
||||
CalendarCreateEventInviteListScrollFrameScrollBar:Point("BOTTOMLEFT", CalendarCreateEventInviteListScrollFrame, "BOTTOMRIGHT", 7, 16)
|
||||
|
||||
if CalendarCreateEventInviteListScrollFrame.buttons then
|
||||
for _, button in ipairs(CalendarCreateEventInviteListScrollFrame.buttons) do
|
||||
S:HandleButtonHighlight(button)
|
||||
end
|
||||
else
|
||||
CalendarCreateEventInviteList:HookScript("OnEvent", function(self, event)
|
||||
if event == "ADDON_LOADED" then
|
||||
for _, button in ipairs(self.scrollFrame.buttons) do
|
||||
S:HandleButtonHighlight(button)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user