UpdateLogs();
}
+ public void SetTypesSelection(HashSet<LogType> selectedTypes, bool invert = false)
+ {
+ SelectedTypes.Clear();
+
+ foreach (var control in TypesContainer.Children)
+ {
+ if (control is not AdminLogTypeButton type)
+ {
+ continue;
+ }
+
+ if (selectedTypes.Contains(type.Type) ^ invert)
+ {
+ type.Pressed = true;
+ SelectedTypes.Add(type.Type);
+ }
+ else
+ {
+ type.Pressed = false;
+ type.Visible = ShouldShowType(type);
+ }
+ }
+
+ UpdateLogs();
+ }
+
public void UpdateTypes()
{
foreach (var control in TypesContainer.Children)
LogsControl.NextButton.Disabled = !newLogs.HasNext;
break;
+
+ case SetLogFilter setLogFilter:
+ if (setLogFilter.Search != null)
+ LogsControl.LogSearch.SetText(setLogFilter.Search);
+
+ if (setLogFilter.Types != null)
+ LogsControl.SetTypesSelection(setLogFilter.Types, setLogFilter.InvertTypes);
+
+ break;
}
}
using Content.Shared.Administration;
using Content.Shared.Administration.Logs;
using Content.Shared.CCVar;
+using Content.Shared.Database;
using Content.Shared.Eui;
using Microsoft.Extensions.ObjectPool;
using Robust.Shared.Configuration;
}
}
+ public void SetLogFilter(string? search = null, bool invertTypes = false, HashSet<LogType>? types = null)
+ {
+ var message = new SetLogFilter(
+ search,
+ invertTypes,
+ types);
+
+ SendMessage(message);
+ }
+
private async void SendLogs(bool replace)
{
var stopwatch = new Stopwatch();
using Content.Server.Administration.Commands;
+using Content.Server.Administration.Logs;
using Content.Server.Administration.Managers;
using Content.Server.Administration.UI;
using Content.Server.Chemistry.Components.SolutionManager;
[Dependency] private readonly ArtifactSystem _artifactSystem = default!;
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
[Dependency] private readonly PrayerSystem _prayerSystem = default!;
+ [Dependency] private readonly EuiManager _eui = default!;
private readonly Dictionary<IPlayerSession, EditSolutionsEui> _openSolutionUis = new();
});
}
+ // Admin Logs
+ if (_adminManager.HasAdminFlag(player, AdminFlags.Logs))
+ {
+ Verb logsVerbEntity = new()
+ {
+ Priority = -2,
+ Text = Loc.GetString("admin-verbs-admin-logs-entity"),
+ Category = VerbCategory.Admin,
+ Act = () =>
+ {
+ var ui = new AdminLogsEui();
+ _eui.OpenEui(ui, player);
+ ui.SetLogFilter(search:args.Target.GetHashCode().ToString());
+ },
+ Impact = LogImpact.Low
+ };
+ args.Verbs.Add(logsVerbEntity);
+ }
+
// TeleportTo
args.Verbs.Add(new Verb
{
{
}
+ [Serializable, NetSerializable]
+ public sealed class SetLogFilter : EuiMessageBase
+ {
+ public SetLogFilter(string? search = null, bool invertTypes = false, HashSet<LogType>? types = null)
+ {
+ Search = search;
+ InvertTypes = invertTypes;
+ Types = types;
+ }
+
+ public string? Search { get; set; }
+ public bool InvertTypes { get; set; }
+ public HashSet<LogType>? Types { get; set; }
+ }
+
[Serializable, NetSerializable]
public sealed class NewLogs : EuiMessageBase
{
edit-solutions-verb-get-data-text = Edit Solutions
explode-verb-get-data-text = Explode
ahelp-verb-get-data-text = Message
+admin-verbs-admin-logs-entity = Entity Logs
admin-verbs-teleport-to = Teleport To
admin-verbs-teleport-here = Teleport Here
admin-verbs-freeze = Freeze