Require severity to be set when creating and editing notes (#19059)

This commit is contained in:
DrSmugleaf
2023-08-13 20:37:38 -07:00
committed by GitHub
parent 10dc51c80f
commit 73158ec0f2
2 changed files with 61 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ using Content.Shared.Administration.Notes;
using Content.Shared.Database; using Content.Shared.Database;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.Console; using Robust.Client.Console;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Timing; using Robust.Shared.Timing;
@@ -24,6 +25,9 @@ public sealed partial class NoteEdit : FancyWindow
RobustXamlLoader.Load(this); RobustXamlLoader.Load(this);
PlayerName = playerName; PlayerName = playerName;
Title = Loc.GetString("admin-note-editor-title-new", ("player", PlayerName)); Title = Loc.GetString("admin-note-editor-title-new", ("player", PlayerName));
IsCreating = note is null;
CanCreate = canCreate;
CanEdit = canEdit;
ResetSubmitButton(); ResetSubmitButton();
@@ -33,6 +37,7 @@ public sealed partial class NoteEdit : FancyWindow
TypeOption.OnItemSelected += OnTypeChanged; TypeOption.OnItemSelected += OnTypeChanged;
SeverityOption.AddItem(Loc.GetString("admin-note-editor-severity-select"), -1);
SeverityOption.AddItem(Loc.GetString("admin-note-editor-severity-none"), (int) Shared.Database.NoteSeverity.None); SeverityOption.AddItem(Loc.GetString("admin-note-editor-severity-none"), (int) Shared.Database.NoteSeverity.None);
SeverityOption.AddItem(Loc.GetString("admin-note-editor-severity-low"), (int) Shared.Database.NoteSeverity.Minor); SeverityOption.AddItem(Loc.GetString("admin-note-editor-severity-low"), (int) Shared.Database.NoteSeverity.Minor);
SeverityOption.AddItem(Loc.GetString("admin-note-editor-severity-medium"), (int) Shared.Database.NoteSeverity.Medium); SeverityOption.AddItem(Loc.GetString("admin-note-editor-severity-medium"), (int) Shared.Database.NoteSeverity.Medium);
@@ -42,10 +47,11 @@ public sealed partial class NoteEdit : FancyWindow
PermanentCheckBox.OnPressed += OnPermanentPressed; PermanentCheckBox.OnPressed += OnPermanentPressed;
SecretCheckBox.OnPressed += OnSecretPressed; SecretCheckBox.OnPressed += OnSecretPressed;
SubmitButton.OnPressed += OnSubmitButtonPressed; SubmitButton.OnPressed += OnSubmitButtonPressed;
SubmitButton.OnMouseEntered += OnSubmitButtonMouseEntered;
SubmitButton.OnMouseExited += OnSubmitButtonMouseExited;
if (note is null && !canCreate) if (note is null && !canCreate)
{ {
SubmitButton.Disabled = true;
TypeOption.Disabled = true; TypeOption.Disabled = true;
SeverityOption.Disabled = true; SeverityOption.Disabled = true;
} }
@@ -77,21 +83,45 @@ public sealed partial class NoteEdit : FancyWindow
UpdatePermanentCheckboxFields(); UpdatePermanentCheckboxFields();
ExpiryLineEdit.Text = ExpiryTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); ExpiryLineEdit.Text = ExpiryTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
} }
if (!canEdit)
{
SubmitButton.Disabled = true;
}
} }
UpdateSubmitButton();
} }
private void OnSubmitButtonMouseEntered(GUIMouseHoverEventArgs args)
{
if (!SubmitButton.Disabled)
return;
SeverityOption.ModulateSelfOverride = Color.Red;
}
private void OnSubmitButtonMouseExited(GUIMouseHoverEventArgs args)
{
SeverityOption.ModulateSelfOverride = null;
}
private NoteSeverity? _noteSeverity = null;
private string PlayerName { get; } private string PlayerName { get; }
private int NoteId { get; } private int NoteId { get; }
private bool IsSecret { get; set; } private bool IsSecret { get; set; }
private NoteType NoteType { get; set; } private NoteType NoteType { get; set; }
private NoteSeverity? NoteSeverity { get; set; } = Shared.Database.NoteSeverity.None;
private NoteSeverity? NoteSeverity
{
get => _noteSeverity;
set
{
_noteSeverity = value;
UpdateSubmitButton();
}
}
private DateTime? ExpiryTime { get; set; } private DateTime? ExpiryTime { get; set; }
private TimeSpan? DeleteResetOn { get; set; } private TimeSpan? DeleteResetOn { get; set; }
private bool IsCreating { get; set; }
private bool CanCreate { get; set; }
private bool CanEdit { get; set; }
private void OnTypeChanged(OptionButton.ItemSelectedEventArgs args) private void OnTypeChanged(OptionButton.ItemSelectedEventArgs args)
{ {
@@ -153,7 +183,7 @@ public sealed partial class NoteEdit : FancyWindow
private void OnSeverityChanged(OptionButton.ItemSelectedEventArgs args) private void OnSeverityChanged(OptionButton.ItemSelectedEventArgs args)
{ {
NoteSeverity = (NoteSeverity) args.Id; NoteSeverity = args.Id == -1 ? NoteSeverity = null : (NoteSeverity) args.Id;
SeverityOption.SelectId(args.Id); SeverityOption.SelectId(args.Id);
} }
@@ -192,6 +222,26 @@ public sealed partial class NoteEdit : FancyWindow
} }
} }
/// <summary>
/// Updates whether or not the submit button is disabled.
/// </summary>
private void UpdateSubmitButton()
{
if (!CanEdit)
{
SubmitButton.Disabled = true;
return;
}
if (IsCreating && !CanCreate)
{
SubmitButton.Disabled = true;
return;
}
SubmitButton.Disabled = NoteSeverity == null;
}
private void ResetSubmitButton() private void ResetSubmitButton()
{ {
SubmitButton.Text = Loc.GetString("admin-note-editor-submit"); SubmitButton.Text = Loc.GetString("admin-note-editor-submit");
@@ -236,6 +286,8 @@ public sealed partial class NoteEdit : FancyWindow
PermanentCheckBox.OnPressed -= OnPermanentPressed; PermanentCheckBox.OnPressed -= OnPermanentPressed;
SecretCheckBox.OnPressed -= OnSecretPressed; SecretCheckBox.OnPressed -= OnSecretPressed;
SubmitButton.OnPressed -= OnSubmitButtonPressed; SubmitButton.OnPressed -= OnSubmitButtonPressed;
SubmitButton.OnMouseEntered -= OnSubmitButtonMouseEntered;
SubmitButton.OnMouseExited -= OnSubmitButtonMouseExited;
SubmitPressed = null; SubmitPressed = null;
} }

View File

@@ -48,6 +48,7 @@ admin-note-editor-type-message = Message
admin-note-editor-type-watchlist = Watchlist admin-note-editor-type-watchlist = Watchlist
admin-note-editor-type-server-ban = Server Ban admin-note-editor-type-server-ban = Server Ban
admin-note-editor-type-role-ban = Role Ban admin-note-editor-type-role-ban = Role Ban
admin-note-editor-severity-select = Select
admin-note-editor-severity-none = None admin-note-editor-severity-none = None
admin-note-editor-severity-low = Low admin-note-editor-severity-low = Low
admin-note-editor-severity-medium = Medium admin-note-editor-severity-medium = Medium