Note expiry time is now relative instead of using timestamps (#33262)
* Add the stuff * Loc fix * fixes * Change
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
<Label Name="ExpiryLabel" Text="{Loc admin-note-editor-expiry-label}" Visible="False" />
|
<Label Name="ExpiryLabel" Text="{Loc admin-note-editor-expiry-label}" Visible="False" />
|
||||||
<HistoryLineEdit Name="ExpiryLineEdit" PlaceHolder="{Loc admin-note-editor-expiry-placeholder}"
|
<HistoryLineEdit Name="ExpiryLineEdit" PlaceHolder="{Loc admin-note-editor-expiry-placeholder}"
|
||||||
Visible="False" HorizontalExpand="True" />
|
Visible="False" HorizontalExpand="True" />
|
||||||
|
<OptionButton Name="ExpiryLengthDropdown" Visible="False" />
|
||||||
</BoxContainer>
|
</BoxContainer>
|
||||||
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
|
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
|
||||||
<OptionButton Name="TypeOption" HorizontalAlignment="Center" />
|
<OptionButton Name="TypeOption" HorizontalAlignment="Center" />
|
||||||
|
|||||||
@@ -17,6 +17,17 @@ public sealed partial class NoteEdit : FancyWindow
|
|||||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
||||||
[Dependency] private readonly IClientConsoleHost _console = default!;
|
[Dependency] private readonly IClientConsoleHost _console = default!;
|
||||||
|
|
||||||
|
private enum Multipliers
|
||||||
|
{
|
||||||
|
Minutes,
|
||||||
|
Hours,
|
||||||
|
Days,
|
||||||
|
Weeks,
|
||||||
|
Months,
|
||||||
|
Years,
|
||||||
|
Centuries
|
||||||
|
}
|
||||||
|
|
||||||
public event Action<int, NoteType, string, NoteSeverity?, bool, DateTime?>? SubmitPressed;
|
public event Action<int, NoteType, string, NoteSeverity?, bool, DateTime?>? SubmitPressed;
|
||||||
|
|
||||||
public NoteEdit(SharedAdminNote? note, string playerName, bool canCreate, bool canEdit)
|
public NoteEdit(SharedAdminNote? note, string playerName, bool canCreate, bool canEdit)
|
||||||
@@ -31,6 +42,20 @@ public sealed partial class NoteEdit : FancyWindow
|
|||||||
|
|
||||||
ResetSubmitButton();
|
ResetSubmitButton();
|
||||||
|
|
||||||
|
// It's weird to use minutes as the IDs, but it works and makes sense kind of :)
|
||||||
|
ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-minutes"), (int) Multipliers.Minutes);
|
||||||
|
ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-hours"), (int) Multipliers.Hours);
|
||||||
|
ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-days"), (int) Multipliers.Days);
|
||||||
|
ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-weeks"), (int) Multipliers.Weeks);
|
||||||
|
ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-months"), (int) Multipliers.Months);
|
||||||
|
ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-years"), (int) Multipliers.Years);
|
||||||
|
ExpiryLengthDropdown.AddItem(Loc.GetString("admin-note-button-centuries"), (int) Multipliers.Centuries);
|
||||||
|
ExpiryLengthDropdown.OnItemSelected += OnLengthChanged;
|
||||||
|
|
||||||
|
ExpiryLengthDropdown.SelectId((int) Multipliers.Weeks);
|
||||||
|
|
||||||
|
ExpiryLineEdit.OnTextChanged += OnTextChanged;
|
||||||
|
|
||||||
TypeOption.AddItem(Loc.GetString("admin-note-editor-type-note"), (int) NoteType.Note);
|
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-message"), (int) NoteType.Message);
|
||||||
TypeOption.AddItem(Loc.GetString("admin-note-editor-type-watchlist"), (int) NoteType.Watchlist);
|
TypeOption.AddItem(Loc.GetString("admin-note-editor-type-watchlist"), (int) NoteType.Watchlist);
|
||||||
@@ -172,8 +197,9 @@ public sealed partial class NoteEdit : FancyWindow
|
|||||||
{
|
{
|
||||||
ExpiryLabel.Visible = !PermanentCheckBox.Pressed;
|
ExpiryLabel.Visible = !PermanentCheckBox.Pressed;
|
||||||
ExpiryLineEdit.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 ? 1.ToString() : string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnSecretPressed(BaseButton.ButtonEventArgs _)
|
private void OnSecretPressed(BaseButton.ButtonEventArgs _)
|
||||||
@@ -187,6 +213,16 @@ public sealed partial class NoteEdit : FancyWindow
|
|||||||
SeverityOption.SelectId(args.Id);
|
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)
|
private void OnSubmitButtonPressed(BaseButton.ButtonEventArgs args)
|
||||||
{
|
{
|
||||||
if (!ParseExpiryTime())
|
if (!ParseExpiryTime())
|
||||||
@@ -263,13 +299,24 @@ public sealed partial class NoteEdit : FancyWindow
|
|||||||
return true;
|
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;
|
ExpiryLineEdit.ModulateSelfOverride = Color.Red;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ExpiryTime = result.ToUniversalTime();
|
var mult = ExpiryLengthDropdown.SelectedId switch
|
||||||
|
{
|
||||||
|
(int) Multipliers.Minutes => TimeSpan.FromMinutes(1).TotalMinutes,
|
||||||
|
(int) Multipliers.Hours => TimeSpan.FromHours(1).TotalMinutes,
|
||||||
|
(int) Multipliers.Days => TimeSpan.FromDays(1).TotalMinutes,
|
||||||
|
(int) Multipliers.Weeks => TimeSpan.FromDays(7).TotalMinutes,
|
||||||
|
(int) Multipliers.Months => TimeSpan.FromDays(30).TotalMinutes,
|
||||||
|
(int) Multipliers.Years => TimeSpan.FromDays(365).TotalMinutes,
|
||||||
|
(int) Multipliers.Centuries => TimeSpan.FromDays(36525).TotalMinutes,
|
||||||
|
_ => throw new ArgumentOutOfRangeException(nameof(ExpiryLengthDropdown.SelectedId), "Multiplier out of range :(")
|
||||||
|
};
|
||||||
|
ExpiryTime = DateTime.UtcNow.AddMinutes(inputInt * mult);
|
||||||
ExpiryLineEdit.ModulateSelfOverride = null;
|
ExpiryLineEdit.ModulateSelfOverride = null;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,13 +57,23 @@ admin-note-editor-severity-medium = Medium
|
|||||||
admin-note-editor-severity-high = High
|
admin-note-editor-severity-high = High
|
||||||
admin-note-editor-expiry-checkbox = Permanent?
|
admin-note-editor-expiry-checkbox = Permanent?
|
||||||
admin-note-editor-expiry-checkbox-tooltip = Check this to make it expire
|
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-params = Expires on: {$date} (in {$expiresIn})
|
||||||
admin-note-editor-expiry-label-expired = Expired
|
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 = Submit
|
||||||
admin-note-editor-submit-confirm = Are you sure?
|
admin-note-editor-submit-confirm = Are you sure?
|
||||||
|
|
||||||
|
# Time
|
||||||
|
admin-note-button-minutes = Minutes
|
||||||
|
admin-note-button-hours = Hours
|
||||||
|
admin-note-button-days = Days
|
||||||
|
admin-note-button-weeks = Weeks
|
||||||
|
admin-note-button-months = Months
|
||||||
|
admin-note-button-years = Years
|
||||||
|
admin-note-button-centuries = Centuries
|
||||||
|
|
||||||
|
|
||||||
# Verb
|
# Verb
|
||||||
admin-notes-verb-text = Open Admin Notes
|
admin-notes-verb-text = Open Admin Notes
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user