diff --git a/app/Http/Controllers/Forum/TopicsController.php b/app/Http/Controllers/Forum/TopicsController.php index ce704bcfe5c..edf04477ae8 100644 --- a/app/Http/Controllers/Forum/TopicsController.php +++ b/app/Http/Controllers/Forum/TopicsController.php @@ -164,7 +164,7 @@ public function issueTag($id) $issueTag = presence(Request::input('issue_tag')); $state = get_bool(Request::input('state')); - $type = 'issue_tag_'.$issueTag; + $type = 'issue_tag_'.str_slug($issueTag); if ($issueTag === null || !$topic->isIssue() || !in_array($issueTag, $topic::ISSUE_TAGS, true)) { abort(422); diff --git a/app/Models/Forum/Topic.php b/app/Models/Forum/Topic.php index 1ba4dfd154c..f4c7b70bf48 100644 --- a/app/Models/Forum/Topic.php +++ b/app/Models/Forum/Topic.php @@ -98,6 +98,10 @@ class Topic extends Model implements AfterCommit 'duplicate', 'invalid', 'resolved', + + 'osu!lazer', + 'osu!stable', + 'osu!web', ]; const MAX_FIELD_LENGTHS = [ diff --git a/app/helpers.php b/app/helpers.php index 5960595cd21..c7f578fb3de 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -1017,20 +1017,25 @@ function make_blade_safe(HtmlString|string $text): HtmlString function issue_icon($issue) { - switch ($issue) { - case 'added': - return 'fas fa-cogs'; - case 'assigned': - return 'fas fa-user'; - case 'confirmed': - return 'fas fa-exclamation-triangle'; - case 'resolved': - return 'far fa-check-circle'; - case 'duplicate': - return 'fas fa-copy'; - case 'invalid': - return 'far fa-times-circle'; + $fa = match ($issue) { + 'added' => 'fas fa-cogs', + 'assigned' => 'fas fa-user', + 'confirmed' => 'fas fa-exclamation-triangle', + 'duplicate' => 'fas fa-copy', + 'invalid' => 'far fa-times-circle', + 'resolved' => 'far fa-check-circle', + default => null, + }; + + if ($fa !== null) { + return tag('i', ['class' => $fa]); } + + return match ($issue) { + 'osu!lazer' => 'lzr', + 'osu!stable' => 'stb', + 'osu!web' => 'web', + }; } function build_url($build) diff --git a/resources/css/bem/forum-issue-icon.less b/resources/css/bem/forum-issue-icon.less index ff1f99fabde..8c145fa52b3 100644 --- a/resources/css/bem/forum-issue-icon.less +++ b/resources/css/bem/forum-issue-icon.less @@ -9,6 +9,7 @@ font-size: 10px; color: #fff; text-shadow: 0 0 2px #000; + --platform-tag: hsl(var(--hsl-darkorange-1)); margin: 0 5px; @@ -35,4 +36,16 @@ &--resolved { background-color: @green-dark; } + + &--osulazer { + background-color: var(--platform-tag); + } + + &--osustable { + background-color: var(--platform-tag); + } + + &--osuweb { + background-color: var(--platform-tag); + } } diff --git a/resources/lang/en/forum.php b/resources/lang/en/forum.php index eb775a30652..b17f5ef3a4b 100644 --- a/resources/lang/en/forum.php +++ b/resources/lang/en/forum.php @@ -295,6 +295,27 @@ 'to_1_done' => 'Added "resolved" tag', ], + 'issue_tag_osulazer' => [ + 'to_0' => 'Remove "osu!lazer" tag', + 'to_0_done' => 'Removed "osu!lazer" tag', + 'to_1' => 'Add "osu!lazer" tag', + 'to_1_done' => 'Added "osu!lazer" tag', + ], + + 'issue_tag_osustable' => [ + 'to_0' => 'Remove "osu!stable" tag', + 'to_0_done' => 'Removed "osu!stable" tag', + 'to_1' => 'Add "osu!stable" tag', + 'to_1_done' => 'Added "osu!stable" tag', + ], + + 'issue_tag_osuweb' => [ + 'to_0' => 'Remove "osu!web" tag', + 'to_0_done' => 'Removed "osu!web" tag', + 'to_1' => 'Add "osu!web" tag', + 'to_1_done' => 'Added "osu!web" tag', + ], + 'lock' => [ 'is_locked' => 'This topic is locked and can not be replied to', 'to_0' => 'Unlock topic', diff --git a/resources/views/forum/forums/_topic.blade.php b/resources/views/forum/forums/_topic.blade.php index 85e44f2df29..6032b6799e4 100644 --- a/resources/views/forum/forums/_topic.blade.php +++ b/resources/views/forum/forums/_topic.blade.php @@ -89,9 +89,9 @@ class=" @foreach ($topic->issueTags() as $tag)
@endforeach diff --git a/resources/views/forum/topics/_issue_tag.blade.php b/resources/views/forum/topics/_issue_tag.blade.php index 4cfdeb216f3..2059b0123b9 100644 --- a/resources/views/forum/topics/_issue_tag.blade.php +++ b/resources/views/forum/topics/_issue_tag.blade.php @@ -4,18 +4,19 @@ --}} hasIssueTag($issueTag); + $slug = str_slug($issueTag); ?> diff --git a/resources/views/forum/topics/_issue_tag_osulazer.blade.php b/resources/views/forum/topics/_issue_tag_osulazer.blade.php new file mode 100644 index 00000000000..7c97debaf88 --- /dev/null +++ b/resources/views/forum/topics/_issue_tag_osulazer.blade.php @@ -0,0 +1,7 @@ +{{-- + Copyright (c) ppy Pty Ltd