From e40d330770bdc3c9b47a515d63c6a21609d76920 Mon Sep 17 00:00:00 2001 From: Beck Date: Mon, 11 Nov 2024 14:26:57 -0800 Subject: [PATCH 1/4] Add the stuff --- .../Administration/UI/Notes/NoteEdit.xaml | 3 +- .../Administration/UI/Notes/NoteEdit.xaml.cs | 31 +++++++++++++++++-- .../en-US/administration/ui/admin-notes.ftl | 4 +-- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/Content.Client/Administration/UI/Notes/NoteEdit.xaml b/Content.Client/Administration/UI/Notes/NoteEdit.xaml index 506abac540ce..7c12a7aab1a4 100644 --- a/Content.Client/Administration/UI/Notes/NoteEdit.xaml +++ b/Content.Client/Administration/UI/Notes/NoteEdit.xaml @@ -5,9 +5,10 @@ - diff --git a/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs b/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs index 6f314f79542e..3dc25c581461 100644 --- a/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs +++ b/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs @@ -31,6 +31,20 @@ public NoteEdit(SharedAdminNote? note, string playerName, bool canCreate, bool c ResetSubmitButton(); + // It's weird to use minutes as the IDs, but it works and makes sense kind of :) + ExpiryLengthDropdown.AddItem("Minutes", (int) TimeSpan.FromMinutes(1).TotalMinutes); + ExpiryLengthDropdown.AddItem("Hours", (int) TimeSpan.FromHours(1).TotalMinutes); + ExpiryLengthDropdown.AddItem("Days", (int) TimeSpan.FromDays(1).TotalMinutes); + ExpiryLengthDropdown.AddItem("Weeks", (int) TimeSpan.FromDays(7).TotalMinutes); + ExpiryLengthDropdown.AddItem("Months", (int) TimeSpan.FromDays(30).TotalMinutes); + ExpiryLengthDropdown.AddItem("Years", (int) TimeSpan.FromDays(365).TotalMinutes); + ExpiryLengthDropdown.AddItem("Centuries", (int) TimeSpan.FromDays(36525).TotalMinutes); + ExpiryLengthDropdown.OnItemSelected += OnLengthChanged; + + ExpiryLengthDropdown.SelectId((int) TimeSpan.FromDays(1).TotalMinutes); + + ExpiryLineEdit.OnTextChanged += OnTextChanged; + TypeOption.AddItem(Loc.GetString("admin-note-editor-type-note"), (int) NoteType.Note); TypeOption.AddItem(Loc.GetString("admin-note-editor-type-message"), (int) NoteType.Message); TypeOption.AddItem(Loc.GetString("admin-note-editor-type-watchlist"), (int) NoteType.Watchlist); @@ -172,8 +186,9 @@ private void UpdatePermanentCheckboxFields() { ExpiryLabel.Visible = !PermanentCheckBox.Pressed; ExpiryLineEdit.Visible = !PermanentCheckBox.Pressed; + ExpiryLengthDropdown.Visible = !PermanentCheckBox.Pressed; - ExpiryLineEdit.Text = !PermanentCheckBox.Pressed ? DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty; + ExpiryLineEdit.Text = !PermanentCheckBox.Pressed ? 7.ToString() : string.Empty; } private void OnSecretPressed(BaseButton.ButtonEventArgs _) @@ -187,6 +202,16 @@ private void OnSeverityChanged(OptionButton.ItemSelectedEventArgs args) SeverityOption.SelectId(args.Id); } + private void OnLengthChanged(OptionButton.ItemSelectedEventArgs args) + { + ExpiryLengthDropdown.SelectId(args.Id); + } + + private void OnTextChanged(HistoryLineEdit.LineEditEventArgs args) + { + ParseExpiryTime(); + } + private void OnSubmitButtonPressed(BaseButton.ButtonEventArgs args) { if (!ParseExpiryTime()) @@ -263,13 +288,13 @@ private bool ParseExpiryTime() return true; } - if (string.IsNullOrWhiteSpace(ExpiryLineEdit.Text) || !DateTime.TryParse(ExpiryLineEdit.Text, out var result) || DateTime.UtcNow > result) + if (string.IsNullOrWhiteSpace(ExpiryLineEdit.Text) || !uint.TryParse(ExpiryLineEdit.Text, out var inputInt)) { ExpiryLineEdit.ModulateSelfOverride = Color.Red; return false; } - ExpiryTime = result.ToUniversalTime(); + ExpiryTime = DateTime.UtcNow.AddMinutes(inputInt * ExpiryLengthDropdown.SelectedId); ExpiryLineEdit.ModulateSelfOverride = null; return true; } diff --git a/Resources/Locale/en-US/administration/ui/admin-notes.ftl b/Resources/Locale/en-US/administration/ui/admin-notes.ftl index 03e12902576b..82e0d190bd1b 100644 --- a/Resources/Locale/en-US/administration/ui/admin-notes.ftl +++ b/Resources/Locale/en-US/administration/ui/admin-notes.ftl @@ -57,10 +57,10 @@ admin-note-editor-severity-medium = Medium admin-note-editor-severity-high = High admin-note-editor-expiry-checkbox = Permanent? admin-note-editor-expiry-checkbox-tooltip = Check this to make it expire -admin-note-editor-expiry-label = Expires on: +admin-note-editor-expiry-label = Expires In: admin-note-editor-expiry-label-params = Expires on: {$date} (in {$expiresIn}) admin-note-editor-expiry-label-expired = Expired -admin-note-editor-expiry-placeholder = Enter expiration date (yyyy-MM-dd HH:mm:ss) +admin-note-editor-expiry-placeholder = Enter expiration time (integer). admin-note-editor-submit = Submit admin-note-editor-submit-confirm = Are you sure? From 8b83800e792e5d0a4502ead3d3237c66a4a7a6cf Mon Sep 17 00:00:00 2001 From: Beck Date: Mon, 11 Nov 2024 14:32:57 -0800 Subject: [PATCH 2/4] Loc fix --- Content.Client/Administration/UI/Notes/NoteEdit.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Administration/UI/Notes/NoteEdit.xaml b/Content.Client/Administration/UI/Notes/NoteEdit.xaml index 7c12a7aab1a4..72b2c55ce8da 100644 --- a/Content.Client/Administration/UI/Notes/NoteEdit.xaml +++ b/Content.Client/Administration/UI/Notes/NoteEdit.xaml @@ -5,7 +5,7 @@ -