* Redesign case creation page
* Fix user id placeholder text
* Handle empty moderation history
* Mod history dropdown nitpick
* Fix styling issue with dropdown
ui fluid dropdown inherits from ui form
* Potentially fix NRE
* Un-require reason/mod notes
* Display username in moderation history view
* Order mod history by creation time descending
* Nitpick no moderation history string
* Handle AffectedUser null check within controller
* Fix styling issues
* Move moderation history segment above create case button segment
* Link back to affected user
* Move expiration field in with the other entries
* Grammatical consistency nitpick in history dropdown
* Handle empty case reasons in mod history
* This is the last nitpick, I swear!
* I lied. Variable naming consistency :trollface:
* Consolidate setPermanent function into button onclick
* Use HTML details and Fomantic list instead of dropdown
* Fix padding issue with details list
* Format history and user/id nicely
* Styling fixes and nitpicks of list items/links
* Apply suggestions from code review
* Clarification with code review suggestion
* Create interactions management page and basic GET logic
* Fix client side query and add blocked count as well as comments nitpick
* Implement basic backend logic for interactions management
* Remove errant null/whitespace checks and add border to blocked users partials
* Implement user page's respect to profile privacy settings
* Fix issue where user can't view their own profile if privacy settings are tightened
* Fix other issues with profile access
* Remove excess conditional expression from PSN privtype check
* Check if access is allowed within request handler and hide bio/RA if private
* Fix PSN privacy level check
* Display private users in search and add base UI class to level lock icon
* Rename everything from interactions to privacy for clarity
* Dagg requested an eyeball
Co-authored-by: vilijur <69403080+vilijur@users.noreply.github.com>
* Clarify profile settings page title
* Implement level privacy settings
* Formatting nitpicks within UserPrivacyPage
* Add discard changes buttons
* Apply suggestion from code review
* Consolidate privacy settings areas together
* Grammar nitpick for comments enable/disable dropdown
* Remove un-needed blue UI segment
* Allow mods to issue disable comments case regardless of privacy settings
Also addresses a few frontend and backend nitpicks left unaddressed by previous commits
* Remove limiting AND operator expression
* Grammar clarity on disable comments button
* Add missing hidden button divider under Wipe Earth Decorations
* No eyeball -m88youngling
Removes eyeball from actual privacy settings page to match styling
* Use long-text description for privacy type dropdowns
* Use long-text description for comments toggle dropdown
* Implement slot page privacy
* Grammar nitpicks with Daggintosh
* Daggintosh grammar review second edition
* Once again put request handler arguments on one line
* Rename LevelsPrivate variable to SlotsPrivate for internal consistency
* Fix issue with PSN slot privacy type
* Un-break comments
* Apply most of the suggestions from code review
* Correct form dropdown values for privacy types
* Potentially fix broken privacy type extension
* Slightly rework access calculation extension method
* Fix issues with if statements
* Apply suggestions from code review
* Make everything translatable
---------
Co-authored-by: vilijur <69403080+vilijur@users.noreply.github.com>
* Add the ability for moderators to forcibly lock levels
* Prevent forcibly locking an already locked level
I had to rollback and re-commit this because I was getting some weird error within Rider.
* Correct moderation notice header styling & remove errant text
* Fix null case bug in BannedUserPage and properly add no expiration text
* Correct maximum expiration hour to 23 (uses 24-hour)
* Improve wording for do not expire string
* Handle empty case reason string
* Move list to it's own div per HTML spec
* Move maximum expiration DateTime to the model
* Correct linq statement chaining style
* Use lambda operator instead of explicit accessor for MaximumExpiration
* Render line breaks in announcement content
* Track announcement publisher
* Change paragraph tag to a div for consistency
* Fix bottom padding for announcement content
* Track publisher user entity rather than just the username
* Potentially fix a migration failure
* Final code cleanup
* Fix linq statement chaining style
---------
Co-authored-by: Dagg <daggintosh@outlook.com>
* Allow moderators to view story levels on website
Show comments to moderators on in-game story levels that show the levels id
* Only show LH ID comment on the first page
* Improve game server announce by using StringBuilder
* Implement web announcements (condensed commit)
* Implement discord webhook support
* Display a separate message if there are no announcements
* Fix announcement string unit tests
* Fix header admin button unit test
* Clarify announcement id variable name
* Increase webhook truncation limit to 250 chars
* Convert announce text to string when returning 200
* Fix announcement unit tests ... again
* Make announcement text input a textarea rather than a simple input
* Fix styling discrepancy
* Clarify submission button
* Improve announcement webhook & set default textarea row amount
* Remove most non DI usages of DbContext
* Optimize website queries and refactor startup to use top level statements
* Remove unused functions in UserEntity and SlotEntity
* Optimize LBP1 LevelTags
* Move censor/msg logging to MessageController & separate LogAreas/config
* Correct LBP character limit to 95
* Log filtered comments as well
* Remove two unnecessary variables from CensorHelper
* Add censor logging to SlotPage/UserPage controllers and improve logging slightly
* Remove accidental dollar sign in log
* Grammatical nitpick in CommentController.cs
* Contextual nitpick in MessageController.cs
* Add escaped quotes in CommentController log to match the rest
* Increase limit to account for descriptions, magic mouth, etc.
* Consolidate LogChatMessages logging into Filter log area to prevent confusion
* Apply code review suggestions
* Refactor RepeatingTaskHandler into an ASP.NET service
* Add unit tests for RepeatingTaskService
* Make repeating task unit tests work independent of time
* Fix weird behavior when task is canceled