* Implement read-only mode
* Use localized string under default language for announce text
* Redirect to user page rather than returning blank 400
* Protect call to `ParseBase64Image`
* Add protections to SlotSettingsPage and nitpick format
* Display the latest announcement (if any) on the landing page
* Fix a kokoism
Accidentally tried to use markdown within the landing page... I'm rather smart aren't I
* Prevent possible XSS
* Separate truncated announcement text and link with "..."
* Apply suggestion from code review
* Add read-only check to /postComment in slot page controller
* Fix inconsistent tabbing
* Initial SDK and dependency bumps
* Bump Pomelo.EntityFrameworkCore.MySql to 8.0.0-beta.2
Should fix the MissingMethodException error in unit tests
* Update CI workflow to use .NET 8
* Apply suggested change from compile time warnings
* Fix digest tests
* Bump dependencies once more
* Update xunit
* Remove obsolete ISystemClock from TokenAuthHandler
* Update dependencies
* Add digest debug preprocessors back
* Maybe don't break #966
* Bump EF Driver and update various NET7 references
* Fix warnings in digest middleware tests
---------
Co-authored-by: Slendy <josh@slendy.pw>
* Migrate to GitInfo for embedding git information
* Adjust gitignore to reflect new git system
* Fix changes from broken merge
* Remove vestigial code in VersionHelper
---------
Co-authored-by: sudokoko <koko@drones.gay>
* Add missing moderation notifications
* Shorten temporary variable "commentEntity" to "c" for consistency
Didn't catch this when rider inserted these include statements
* Fix incorrect access of TargetUser
* Remove excess indent and random semicolon
* Implement notifications logic, basic calls, and admin command
* Remove unnecessary code
* Add ability to stack notifications and return manually created XML
* Remove test that is no longer needed and is causing failures
* Apply suggestions from code review
* Merge notifications with existing announcements page
* Order notifications by descending ID instead of ascending ID
* Move notification send task to moderation options under user
Also restyles the buttons to line up next to each other like in the slot pages.
* Style/position fixes with granted slots/notification partials
* Fix incorrect form POST route
* Prevent notification text area from breaking out of container
* Actually use builder result for notification text
* Minor restructuring of the notifications page
* Add notifications for team picks, publish issues, and moderation
* Mark notifications as dismissed instead of deleting them
* Add XMLdoc to SendNotification method
* Fix incorrect URL in announcements webhook
* Remove unnecessary inline style from granted slots partial
* Apply suggestions from code review
* Apply first batch of suggestions from code review
* Apply second batch of suggestions from code review
* Change notification icon depending on if user has unread notifications
* Show unread notification icon if there is an announcement posted
* Remove "potential" wording from definitive fixes in error docs
* Remove "Error code:" from publish notifications
* Send notification if user tries to unlock a mod-locked level
* Change notification timestamp format to include date
* Add clarification to level mod-lock notification message
* Change team pick notifications to moderation notifications
Apparently the MMPick type doesn't show a visual notification.
* Apply suggestions from code review
* Add obsolete to notification types that display nothing in-game
* Remove unused imports and remove icon switch case in favor of bell icon
* Last minute fixes
* Send notification upon earth wipe and clarify moderation case notifications
* Add check for empty/too long notification text
* Display link to source code and license in footer
* Remove " (fetch)" suffix in remote URL
* Use split instead of replace for getting the clean remote URL
* Open license link in new tab as well
* LINQ-ify things and handle potential errors
* Properly detect remote URL type and parse accordingly
Squashed 3 commits:
* Properly detect remote URL type and parse accordingly
* Actually fix broken source code link...maybe
* Attempt to fix broken source code link
* Fix a kokoism
Perhaps we should actually utilize the firstRemoteUnparsedUrl variable instead of getting the FirstOrDefault remote over and over
* Fix missing slash when using an SSH remote
* Assign null to parsed URL variable by default
Thank you clyde discord
* Only perform the null check on the unparsed URL once
Thank you again clyde discord
* Handle exception when there are no defined remotes
* Move remote determination to VersionHelper and format file
Squashed 4 commits:
* Nitpick variable naming and add XML doc
* Use preferred braces style
* Return null directly if unparsed URL is null
* Move remote determination to VersionHelper and format file
* Add param to include HTTPS prefix in DetermineRemoteUrl method
* Remove warnings from XML doc
Not needed as of c63284cb37
* Properly insert HTTPS prefix into SSH remotes
* Fix license layout and improve git remote parsing
---------
Co-authored-by: Slendy <josh@slendy.pw>
* Add pagination to moderation cases list and tweak case dismissal task
* Clean up case partial and add extended case status indicators
* Redirect back to cases list after dismissing a case
* Fix typo on cases list queue counter
* Fix dismissal queue counter
* Convert dismiss button check into pattern
* Turn down case dismissal task repeat interval to every 1 hour
* Use page 0 for case searching
* Implement pagination on the admin users list <3
* Fix pagination button padding and update colors to match existing role colors
* Fix typo in admin search placeholder
* Make cases searchable by user/slot ID instead of reason
Due to the current state of the moderation case entity, I can't directly query against the affected user name, so I've added the ability to search for the affected user/slot ID instead of reason.
* Actually apply the desired changes instead of just fixing the counts
* Grammatical nitpick in the search box placeholder
* Simplify website rank badges to use semantic classes
* Fix ambiguity between partial display types
* Add profile vanity tags and needed migration
* Make form field read only to non-administrators
* Display lock icon if user is not admin to minimize confusion
* Also display lock icon for username field since it's readonly
* Fix up naming consistency issues and edit migration accordingly
* Apply suggestions from code review
* Add space between placeholder property and ternary operator
* Initial work for score migration
* Finish score migration
* Implement suggested changes from code review
* Make Score Timestamp default the current time
* Chunk insertions to reduce packet size and give all scores the same Timestamp
* Fix serialization of GameScore
* Break score ties by time then scoreId
* Make lighthouse score migration not dependent on current score implementation
* 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