--[[ | This file was obtained through the combined efforts | of Madbluntz & Plymouth Antiquarian Society. | | Credits: lifestorm, Gregory Wayne Rossel JR., | Maloy, DrPepper10 @ RIP, Atle! | | Visit for more: https://plymouth.thetwilightzone.ru/ --]] local f = string.format VyHub.Dashboard = VyHub.Dashboard or {} VyHub.Dashboard.ui = VyHub.Dashboard.ui or nil VyHub.Dashboard.html_ready = false VyHub.Dashboard.html_generated = VyHub.Dashboard.html_generated or false local dashboard_html = dashboard_html or "Loading, please try again. If this does not help, please ask the server owner to check for errors in the server console. In most cases, vyhub-gmod has not been downloaded correctly and is missing files." function VyHub.Dashboard:create_ui() VyHub.Dashboard.html_ready = false local xsize = ScrW() - ScrW()/4 local ysize = ScrH() - ScrH()/4 local xpos = ScrW()/2 - xsize/2 local ypos = ScrH()/2 - ysize/2 local title = "VyHub Server-Dashboard" local box_color = Color(94, 0, 0, 255) VyHub.Dashboard.ui = vgui.Create("DFrame") VyHub.Dashboard.ui:SetSize(xsize, ysize) VyHub.Dashboard.ui:SetPos(xpos, ypos) VyHub.Dashboard.ui:SetDraggable(true) VyHub.Dashboard.ui:SetTitle(title) VyHub.Dashboard.ui:SetDeleteOnClose(false) function VyHub.Dashboard.ui.Paint(self, w, h) surface.SetDrawColor(box_color) surface.DrawRect(0, 0, w, 24) end VyHub.Dashboard.ui_html = vgui.Create("DHTML", VyHub.Dashboard.ui) VyHub.Dashboard.ui_html:SetSize(xsize, ysize - 24) VyHub.Dashboard.ui_html:SetPos(0, 24) VyHub.Dashboard.ui_html:SetHTML(dashboard_html) function VyHub.Dashboard.ui_html:OnDocumentReady() MsgN("VyHub Dashboard: HTML Loaded") VyHub.Dashboard.html_ready = true VyHub.Dashboard.ui_html:RunJavascript('local_steamid64 = ' .. LocalPlayer():SteamID64()) end VyHub.Dashboard.ui_html:AddFunction("vyhub", "warning_toggle", function (warning_id) LocalPlayer():ConCommand(f("vh_warning_toggle %s", warning_id)) end) VyHub.Dashboard.ui_html:AddFunction("vyhub", "warning_delete", function (warning_id) LocalPlayer():ConCommand(f("vh_warning_delete %s", warning_id)) end) VyHub.Dashboard.ui_html:AddFunction("vyhub", "ban_set_status", function (ban_id, status) LocalPlayer():ConCommand(f("vh_ban_set_status %s %s", ban_id, status)) end) VyHub.Dashboard.ui_html:AddFunction("vyhub", "warning_create", function (steamid, reason) LocalPlayer():ConCommand(f('vh_warn %s "%s"', steamid, VyHub.Util:escape_concommand_str(reason))) end) VyHub.Dashboard.ui_html:AddFunction("vyhub", "ban_create", function (steamid, minutes, reason) LocalPlayer():ConCommand(f('vh_ban %s "%s" "%s"', steamid, minutes, VyHub.Util:escape_concommand_str(reason))) end) end function VyHub.Dashboard:load_html() VyHub.Dashboard.html_generated = true dashboard_html = [[

]] .. VyHub.lang.dashboard.select_user .. [[
]] end function VyHub.Dashboard:load_users(users_json) VyHub.Dashboard.ui_html:RunJavascript("load_data(" .. users_json .. ");") VyHub.Dashboard.ui_html:RunJavascript("reload_current_user();") end function VyHub.Dashboard:load_perms(perms_json) VyHub.Dashboard.ui_html:RunJavascript("load_perms(" .. perms_json .. ");") end concommand.Add("vh_dashboard", function () if VyHub.Dashboard.ui == nil or not VyHub.Dashboard.ui:IsValid() then VyHub.Dashboard:create_ui() VyHub.Dashboard.ui:Show() VyHub.Dashboard.ui:MakePopup() else -- VyHub.Dashboard:create_ui() -- if VyHub.Dashboard.ui != nil and VyHub.Dashboard.ui:IsValid() and VyHub.Dashboard.ui:IsVisible() then -- VyHub.Dashboard.ui:Hide() -- else VyHub.Dashboard.ui:Show() VyHub.Dashboard.ui:MakePopup() -- end end net.Start("vyhub_dashboard") net.SendToServer() end) net.Receive("vyhub_dashboard", function() local data_length = net.ReadUInt(16) local data_raw = net.ReadData(data_length) local perms_json = net.ReadString() local users_json = util.Decompress(data_raw) timer.Create("vyhub_dashboard_html_ready", 0.3, 20, function () if not VyHub.Dashboard.html_ready then MsgN("VyHub Dashboard: Waiting for HTML to load.") return end timer.Remove("vyhub_dashboard_html_ready") VyHub.Dashboard:load_perms(perms_json) VyHub.Dashboard:load_users(users_json) end) end) net.Receive("vyhub_dashboard_reload", function() if VyHub.Dashboard.ui and VyHub.Dashboard.ui:IsVisible() then MsgN("Reloading dashboard data, because server told us.") net.Start("vyhub_dashboard") net.SendToServer() end end) hook.Add("vyhub_lang_loaded", "vyhub_dashboard_vyhub_lang_loaded", function () VyHub.Dashboard:load_html() end) if VyHub.Dashboard.html_generated then VyHub.Dashboard:load_html() end