From 878167c9378fb04834670f0a993df1c3eee57bab Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 22:06:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=B5=D1=80=D0=BD=D1=83=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=83=20adminwho=20=D0=B2?= =?UTF-8?q?=20=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20=D0=B4=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=83=D0=BF=20=D0=B8=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20UI=20=D1=81=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D1=8B=D0=BC=20client-serve?= =?UTF-8?q?r=20=D0=B2=D0=B7=D0=B0=D0=B8=D0=BC=D0=BE=D0=B4=D0=B5=D0=B9?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B8=D0=B5=D0=BC=20(#2918)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: VigersRay <60344369+VigersRay@users.noreply.github.com> Co-authored-by: Vigers Ray --- .../Administration/Systems/AdminWhoSystem.cs | 31 ++++++ .../UI/Bwoink/AdminWhoUIController.cs | 65 +++++++++++ .../UI/Bwoink/AdminWhoWindow.xaml | 23 ++++ .../UI/Bwoink/AdminWhoWindow.xaml.cs | 102 ++++++++++++++++++ .../UI/Bwoink/BwoinkControl.xaml | 2 + .../UI/Bwoink/BwoinkControl.xaml.cs | 8 ++ .../Administration/UI/Bwoink/BwoinkPanel.xaml | 5 + .../UI/Bwoink/BwoinkPanel.xaml.cs | 13 +++ .../Systems/Bwoink/AHelpUIController.cs | 5 +- .../MentorHelp/MentorHelpControl.xaml | 8 +- .../MentorHelp/MentorHelpControl.xaml.cs | 8 ++ .../Administration/Systems/AdminWhoSystem.cs | 64 +++++++++++ .../Administration/AdminWhoSystem.cs | 45 ++++++++ .../_strings/_sunrise/admin-who/admin-who.ftl | 7 ++ .../_strings/_sunrise/admin-who/admin-who.ftl | 7 ++ 15 files changed, 388 insertions(+), 5 deletions(-) create mode 100644 Content.Client/Administration/Systems/AdminWhoSystem.cs create mode 100644 Content.Client/Administration/UI/Bwoink/AdminWhoUIController.cs create mode 100644 Content.Client/Administration/UI/Bwoink/AdminWhoWindow.xaml create mode 100644 Content.Client/Administration/UI/Bwoink/AdminWhoWindow.xaml.cs create mode 100644 Content.Server/Administration/Systems/AdminWhoSystem.cs create mode 100644 Content.Shared/Administration/AdminWhoSystem.cs create mode 100644 Resources/Locale/en-US/_strings/_sunrise/admin-who/admin-who.ftl create mode 100644 Resources/Locale/ru-RU/_strings/_sunrise/admin-who/admin-who.ftl diff --git a/Content.Client/Administration/Systems/AdminWhoSystem.cs b/Content.Client/Administration/Systems/AdminWhoSystem.cs new file mode 100644 index 0000000000..81e801ece5 --- /dev/null +++ b/Content.Client/Administration/Systems/AdminWhoSystem.cs @@ -0,0 +1,31 @@ +using Content.Shared.Administration; + +namespace Content.Client.Administration.Systems; + +/// +/// Client system for handling admin who requests +/// +public sealed class AdminWhoSystem : EntitySystem +{ + public event Action>? OnAdminWhoUpdate; + + public override void Initialize() + { + base.Initialize(); + + SubscribeNetworkEvent(OnAdminWhoResponse); + } + + /// + /// Request the list of online administrators from the server + /// + public void RequestAdminWho() + { + RaiseNetworkEvent(new RequestAdminWhoEvent()); + } + + private void OnAdminWhoResponse(AdminWhoResponseEvent args, EntitySessionEventArgs session) + { + OnAdminWhoUpdate?.Invoke(args.Admins); + } +} \ No newline at end of file diff --git a/Content.Client/Administration/UI/Bwoink/AdminWhoUIController.cs b/Content.Client/Administration/UI/Bwoink/AdminWhoUIController.cs new file mode 100644 index 0000000000..23cc08298a --- /dev/null +++ b/Content.Client/Administration/UI/Bwoink/AdminWhoUIController.cs @@ -0,0 +1,65 @@ + +using Content.Client.Administration.Systems; +using JetBrains.Annotations; +using Robust.Client.UserInterface.Controllers; + +namespace Content.Client.Administration.UI.Bwoink +{ + [UsedImplicitly] + public sealed class AdminWhoUIController : UIController, IOnSystemChanged + { + private AdminWhoWindow? _dialog; + private AdminWhoSystem? _adminWhoSystem; + + protected override string SawmillName => "c.c.admin.adminwho"; + + public void OnSystemLoaded(AdminWhoSystem system) + { + _adminWhoSystem = system; + + _dialog = new AdminWhoWindow(); + _dialog.Initialize(system); + } + + public void OnSystemUnloaded(AdminWhoSystem system) + { + if (_dialog != null) + { + _dialog.Close(); + _dialog.Uninitialize(); + _dialog.Dispose(); + _dialog = null; + } + + _adminWhoSystem = null; + } + + public void Open() + { + if (_dialog == null) + { + if (_adminWhoSystem == null) + return; + + _dialog = new AdminWhoWindow(); + _dialog.Initialize(_adminWhoSystem); + } + + _dialog.OpenCentered(); + _dialog.RefreshAdminList(); + } + + public void Toggle() + { + if (_dialog?.IsOpen == true) + Close(); + else + Open(); + } + + public void Close() + { + _dialog?.Close(); + } + } +} diff --git a/Content.Client/Administration/UI/Bwoink/AdminWhoWindow.xaml b/Content.Client/Administration/UI/Bwoink/AdminWhoWindow.xaml new file mode 100644 index 0000000000..811dbd9b97 --- /dev/null +++ b/Content.Client/Administration/UI/Bwoink/AdminWhoWindow.xaml @@ -0,0 +1,23 @@ + + + +