From efaef9362f54c96f816251b12283e030431dbeb0 Mon Sep 17 00:00:00 2001 From: Arthur Monney Date: Wed, 1 Jan 2025 02:39:03 +0100 Subject: [PATCH 1/4] feat: [LAR-150] add forum leaderboard page --- app/Livewire/{ => Components}/Reactions.php | 4 +- app/Livewire/{ => Components}/ReportSpam.php | 2 +- app/Livewire/Pages/Forum/Index.php | 4 +- app/Livewire/Pages/Forum/Leaderboard.php | 29 +++++ app/Models/User.php | 2 +- app/View/Composers/TopMembersComposer.php | 24 ---- lang/en/global.php | 5 + lang/fr/global.php | 6 + resources/css/app.css | 8 +- resources/css/file-upload.css | 69 ----------- resources/css/forum.css | 22 ++++ resources/css/toc.css | 18 --- .../views/components/forum/leader.blade.php | 88 ++++++++++++++ .../views/components/forum/thread.blade.php | 2 +- .../components/icon/trophies/first.blade.php | 20 +++ .../components/icon/trophies/second.blade.php | 26 ++++ .../components/icon/trophies/third.blade.php | 16 +++ resources/views/layouts/forum.blade.php | 38 +++--- .../livewire/components/forum/reply.blade.php | 2 +- .../{ => components}/reactions.blade.php | 0 .../discussions/single-discussion.blade.php | 4 +- .../pages/forum/detail-thread.blade.php | 4 +- .../livewire/pages/forum/index.blade.php | 44 ++++--- .../pages/forum/leaderboard.blade.php | 114 ++++++++++++++++++ routes/features/forum.php | 1 + tailwind.config.js | 9 +- tests/Feature/Livewire/ReportSpamTest.php | 2 +- 27 files changed, 397 insertions(+), 166 deletions(-) rename app/Livewire/{ => Components}/Reactions.php (92%) rename app/Livewire/{ => Components}/ReportSpam.php (98%) create mode 100644 app/Livewire/Pages/Forum/Leaderboard.php delete mode 100644 app/View/Composers/TopMembersComposer.php delete mode 100644 resources/css/file-upload.css create mode 100644 resources/css/forum.css delete mode 100644 resources/css/toc.css create mode 100644 resources/views/components/forum/leader.blade.php create mode 100644 resources/views/components/icon/trophies/first.blade.php create mode 100644 resources/views/components/icon/trophies/second.blade.php create mode 100644 resources/views/components/icon/trophies/third.blade.php rename resources/views/livewire/{ => components}/reactions.blade.php (100%) create mode 100644 resources/views/livewire/pages/forum/leaderboard.blade.php diff --git a/app/Livewire/Reactions.php b/app/Livewire/Components/Reactions.php similarity index 92% rename from app/Livewire/Reactions.php rename to app/Livewire/Components/Reactions.php index 0dd238a0..3685cda1 100644 --- a/app/Livewire/Reactions.php +++ b/app/Livewire/Components/Reactions.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Livewire; +namespace App\Livewire\Components; use App\Contracts\ReactableInterface; use App\Models\Reaction; @@ -40,6 +40,6 @@ public function userReacted(string $reaction): void public function render(): View { - return view('livewire.reactions'); + return view('livewire.components.reactions'); } } diff --git a/app/Livewire/ReportSpam.php b/app/Livewire/Components/ReportSpam.php similarity index 98% rename from app/Livewire/ReportSpam.php rename to app/Livewire/Components/ReportSpam.php index 707a017d..8a2caf54 100644 --- a/app/Livewire/ReportSpam.php +++ b/app/Livewire/Components/ReportSpam.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Livewire; +namespace App\Livewire\Components; use App\Actions\ReportSpamAction; use App\Contracts\SpamReportableContract; diff --git a/app/Livewire/Pages/Forum/Index.php b/app/Livewire/Pages/Forum/Index.php index 2578af6c..8a8d64f7 100644 --- a/app/Livewire/Pages/Forum/Index.php +++ b/app/Livewire/Pages/Forum/Index.php @@ -24,10 +24,10 @@ final class Index extends Component use WithoutUrlPagination; use WithPagination; - #[Url(as: 'channel')] + #[Url] public ?string $channel = null; - #[Url(as: 'solved')] + #[Url] public ?string $solved = null; #[Url(as: 'me')] diff --git a/app/Livewire/Pages/Forum/Leaderboard.php b/app/Livewire/Pages/Forum/Leaderboard.php new file mode 100644 index 00000000..f6924bc0 --- /dev/null +++ b/app/Livewire/Pages/Forum/Leaderboard.php @@ -0,0 +1,29 @@ + Cache::remember( + key: 'leaderboard', + ttl: now()->addWeek(), + callback: fn () => User::mostSolutionsInLastDays(365) + ->take(30) + ->get() + ->reject(fn ($leaderboard) => $leaderboard->solutions_count === 0) // @phpstan-ignore-line + ), + ]); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index c57646a5..f9b206ec 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -420,7 +420,7 @@ public function countThreads(): int public function scopeMostSolutions(Builder $query, ?int $inLastDays = null): Builder { return $query->withCount(['replyAble as solutions_count' => function ($query) use ($inLastDays) { - $query->where('replyable_type', 'threads') + $query->where('replyable_type', 'thread') ->join('threads', 'threads.solution_reply_id', '=', 'replies.id'); if ($inLastDays) { diff --git a/app/View/Composers/TopMembersComposer.php b/app/View/Composers/TopMembersComposer.php deleted file mode 100644 index 73a0f954..00000000 --- a/app/View/Composers/TopMembersComposer.php +++ /dev/null @@ -1,24 +0,0 @@ -with( - 'topMembers', - Cache::remember( - key: 'topMembers', - ttl: now()->addWeek(), - callback: fn () => User::mostSolutionsInLastDays(365)->take(5)->get() - ) - ); - } -} diff --git a/lang/en/global.php b/lang/en/global.php index 3bfe4144..42caa7bc 100644 --- a/lang/en/global.php +++ b/lang/en/global.php @@ -107,5 +107,10 @@ 'language' => 'Language', 'french' => 'French', 'english' => 'English', + 'experience' => 'Experience', + 'last_active' => 'Last active', + 'first_place' => '1st place', + 'second_place' => '2nd place', + 'third_place' => '3rd place', ]; diff --git a/lang/fr/global.php b/lang/fr/global.php index f98b8444..f78db1ab 100644 --- a/lang/fr/global.php +++ b/lang/fr/global.php @@ -107,4 +107,10 @@ 'language' => 'Langue', 'french' => 'Français', 'english' => 'Anglais', + 'experience' => 'Expérience', + 'last_active' => 'Dernière activité', + 'first_place' => '1ere place', + 'second_place' => '2e place', + 'third_place' => '3e place', + ]; diff --git a/resources/css/app.css b/resources/css/app.css index b0d4a4dc..4e4a288a 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -6,9 +6,15 @@ @import 'tag.css'; @import 'forms.css'; @import 'torchlight.css'; -@import 'toc.css'; +@import 'forum.css'; @import 'header.css'; +@property --border-angle { + inherits: false; + initial-value: 0deg; + syntax: ''; +} + :root { --laravel: #F56857; --livewire: #fb70a9; diff --git a/resources/css/file-upload.css b/resources/css/file-upload.css deleted file mode 100644 index 60314a39..00000000 --- a/resources/css/file-upload.css +++ /dev/null @@ -1,69 +0,0 @@ -.filepond--root { - @apply mb-0 overflow-hidden; -} - -.filepond--panel-root { - @apply rounded-lg border border-gray-300 bg-gray-200 shadow-sm; -} - -.filepond--drip-blob { - @apply bg-white; -} - -.filepond--drop-label { - @apply text-gray-400 dark:text-gray-500; -} - -/* Compact-only styles, excluding compact circle layouts */ - -.filepond--root[data-style-panel-layout='compact'] .filepond--item { - @apply mb-0.5; -} - -.filepond--root[data-style-panel-layout='compact'] .filepond--drop-label label { - @apply text-sm; -} - -.filepond--root[data-style-panel-layout='compact'] .filepond--drop-label { - min-height: 2.625em; -} - -.filepond--root[data-style-panel-layout='compact'] .filepond--file { - padding-top: 0.5em; - padding-bottom: 0.5em; -} - -/* Grid styles */ - -.filepond--root[data-style-panel-layout='grid'] .filepond--item { - width: calc(50% - 0.5em); - display: inline; -} - -@media screen(lg) { - .filepond--root[data-style-panel-layout='grid'] .filepond--item { - width: calc(33.33% - 0.5em); - } -} - -/* Download button styles */ - -.filepond--download-icon { - @apply pointer-events-auto mr-1 inline-block size-4 bg-white align-bottom hover:bg-white/70; - -webkit-mask-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItZG93bmxvYWQiPjxwYXRoIGQ9Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00Ij48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz0iNyAxMCAxMiAxNSAxNyAxMCI+PC9wb2x5bGluZT48bGluZSB4MT0iMTIiIHkxPSIxNSIgeDI9IjEyIiB5Mj0iMyI+PC9saW5lPjwvc3ZnPg=='); - mask-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItZG93bmxvYWQiPjxwYXRoIGQ9Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00Ij48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz0iNyAxMCAxMiAxNSAxNyAxMCI+PC9wb2x5bGluZT48bGluZSB4MT0iMTIiIHkxPSIxNSIgeDI9IjEyIiB5Mj0iMyI+PC9saW5lPjwvc3ZnPg=='); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 100%; - mask-size: 100%; -} - -.filepond--open-icon { - @apply pointer-events-auto mr-1 inline-block size-4 bg-white align-bottom hover:bg-white/70; - -webkit-mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTRNMTQgNGg2bTAgMHY2bTAtNkwxMCAxNCIgLz4KPC9zdmc+Cg==); - mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTRNMTQgNGg2bTAgMHY2bTAtNkwxMCAxNCIgLz4KPC9zdmc+Cg==); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 100%; - mask-size: 100%; -} diff --git a/resources/css/forum.css b/resources/css/forum.css new file mode 100644 index 00000000..27468651 --- /dev/null +++ b/resources/css/forum.css @@ -0,0 +1,22 @@ +#leaderboard { + *, *::before, *::after { + box-sizing: border-box; + transform-style: preserve-3d; + } + + .leaderboard { + place-items: center; + transform: perspective(400px); + transform-style: preserve-3d; + } + + .leaderboard > .stage { + @apply relative w-full rounded-t-lg; + transform: rotateX(70deg); + } + + .leaderboard > .stage > .stage-front { + @apply absolute w-full rounded-b-lg origin-top top-full; + transform: rotateX(-80deg); + } +} diff --git a/resources/css/toc.css b/resources/css/toc.css deleted file mode 100644 index 7cfbf87e..00000000 --- a/resources/css/toc.css +++ /dev/null @@ -1,18 +0,0 @@ -.toc li a { - @apply relative flex items-center rounded-md py-1.5 text-sm font-medium leading-5 text-gray-500 transition duration-150 ease-in-out dark:text-gray-400; -} -.toc li a:hover { - @apply text-gray-700; -} -.toc li a:focus { - @apply outline-none; -} -.toc li > ul > li { - @apply pl-4; -} -.toc li.active > a { - @apply text-primary-500; -} -.toc li:not(.active) > ul > li.active a { - @apply text-primary-500; -} diff --git a/resources/views/components/forum/leader.blade.php b/resources/views/components/forum/leader.blade.php new file mode 100644 index 00000000..2f2506fb --- /dev/null +++ b/resources/views/components/forum/leader.blade.php @@ -0,0 +1,88 @@ +@props([ + 'user', + 'position', +]) + +@php + $icon = match ($position) { + 1 => 'icon.trophies.first', + 2 => 'icon.trophies.second', + 3 => 'icon.trophies.third', + default => 'phosphor-trophy-duotone', + }; + + $ranking = match ($position) { + 1 => __('global.first_place'), + 2 => __('global.second_place'), + 3 => __('global.third_place'), + default => 'N/A', + }; + + $color = match ($position) { + 1 => 'success', + 2 => 'warning', + 3 => 'danger', + default => 'gray', + }; +@endphp + +
+
+
+ + {{ $ranking }} + + +
+
+ {{ $user->name }} +
+ + {{ '@' . $user->username }} + +
+
+
+
+
+
+
+ + {{ __('global.experience') }} + + + {{ $user->getPoints() }} + +
+
+ + {{ __('global.answers') }} + + + {{ $user->solutions_count }} + +
+ @if($position === 1) +
+ + {{ __('global.last_active') }} + + + + {{ $user->last_active_at?->diffForHumans() }} + +
+ @else +
+ + {{ __('global.last_active') }} + + + + {{ $user->last_active_at?->diffForHumans() }} + +
+ @endif +
+
diff --git a/resources/views/components/forum/thread.blade.php b/resources/views/components/forum/thread.blade.php index 2f1e77f5..ffeaa4b7 100644 --- a/resources/views/components/forum/thread.blade.php +++ b/resources/views/components/forum/thread.blade.php @@ -36,7 +36,7 @@ class="inline-flex items-center rounded-xl gap-1 px-2 py-0.5 font-medium bg-prim - {{ __('global.ask') }} + diff --git a/resources/views/components/icon/trophies/first.blade.php b/resources/views/components/icon/trophies/first.blade.php new file mode 100644 index 00000000..3f009137 --- /dev/null +++ b/resources/views/components/icon/trophies/first.blade.php @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/components/icon/trophies/second.blade.php b/resources/views/components/icon/trophies/second.blade.php new file mode 100644 index 00000000..4b26519a --- /dev/null +++ b/resources/views/components/icon/trophies/second.blade.php @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/components/icon/trophies/third.blade.php b/resources/views/components/icon/trophies/third.blade.php new file mode 100644 index 00000000..0488e2cb --- /dev/null +++ b/resources/views/components/icon/trophies/third.blade.php @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/resources/views/layouts/forum.blade.php b/resources/views/layouts/forum.blade.php index 174aab87..deb6fb5a 100644 --- a/resources/views/layouts/forum.blade.php +++ b/resources/views/layouts/forum.blade.php @@ -18,60 +18,60 @@ {{ __('pages/forum.navigation.channels') }} @auth {{ __('pages/forum.navigation.me') }} {{ __('pages/forum.navigation.following') }} @endauth {{ __('pages/forum.navigation.solve') }} {{ __('pages/forum.navigation.unresolved') }} diff --git a/resources/views/livewire/components/forum/reply.blade.php b/resources/views/livewire/components/forum/reply.blade.php index f59e4627..c5db092a 100644 --- a/resources/views/livewire/components/forum/reply.blade.php +++ b/resources/views/livewire/components/forum/reply.blade.php @@ -66,7 +66,7 @@ class="mt-5 prose prose-green !prose-heading-off max-w-none space-y-3 text-gray- @endcan @can('report', $reply) - + @endcan @endif diff --git a/resources/views/livewire/reactions.blade.php b/resources/views/livewire/components/reactions.blade.php similarity index 100% rename from resources/views/livewire/reactions.blade.php rename to resources/views/livewire/components/reactions.blade.php diff --git a/resources/views/livewire/pages/discussions/single-discussion.blade.php b/resources/views/livewire/pages/discussions/single-discussion.blade.php index 1cc3a5ca..d65499a4 100644 --- a/resources/views/livewire/pages/discussions/single-discussion.blade.php +++ b/resources/views/livewire/pages/discussions/single-discussion.blade.php @@ -83,7 +83,7 @@ class="mx-auto mt-6 text-sm prose prose-sm prose-green max-w-none dark:prose-inv />
- + @endcan
diff --git a/resources/views/livewire/pages/forum/detail-thread.blade.php b/resources/views/livewire/pages/forum/detail-thread.blade.php index d087808c..e235fb56 100644 --- a/resources/views/livewire/pages/forum/detail-thread.blade.php +++ b/resources/views/livewire/pages/forum/detail-thread.blade.php @@ -28,7 +28,7 @@ class="size-10 ring-4 ring-white dark:ring-white/20" span="-right-1 size-3.5 -top-1" />
- + @endcan
diff --git a/resources/views/livewire/pages/forum/index.blade.php b/resources/views/livewire/pages/forum/index.blade.php index badfb3ff..cfb902fe 100644 --- a/resources/views/livewire/pages/forum/index.blade.php +++ b/resources/views/livewire/pages/forum/index.blade.php @@ -12,31 +12,35 @@ class="gap-2 w-full justify-center py-2.5" -
+
+
- +
+
+ - - - -
+ + + +
- - - - - + + + + + +
diff --git a/resources/views/livewire/pages/forum/leaderboard.blade.php b/resources/views/livewire/pages/forum/leaderboard.blade.php new file mode 100644 index 00000000..9f52c44e --- /dev/null +++ b/resources/views/livewire/pages/forum/leaderboard.blade.php @@ -0,0 +1,114 @@ +
+ + + {{ __('pages/forum.new_thread') }} + + + + + + @php + $top3 = $leaderboard->slice(0, 3); + $lists = $leaderboard->reject(fn ($user) => in_array($user->id, $top3->pluck('id')->toArray())) + @endphp + +
+ @php + $first = $top3->first(); + $second = $top3->get(1); + $third = $top3->last(); + @endphp + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+

+

+
+
+
+
+ +
+
+
+
+ {{ __('Rang') }} +
+
+ {{ __('Utilisateur') }} +
+ +
+ {{ __('global.answers') }} +
+ +
+ @foreach($lists as $user) +
+
+
+
+ + + {{ '@' . $user->username }} + +
+ +
+ {{ $user->solutions_count }} +
+ +
+ @endforeach +
+
+
+
diff --git a/routes/features/forum.php b/routes/features/forum.php index 7d97be21..924800ab 100644 --- a/routes/features/forum.php +++ b/routes/features/forum.php @@ -7,4 +7,5 @@ Route::get('/', Forum\Index::class)->name('index'); Route::get('/channels', Forum\Channels::class)->name('channels'); +Route::get('/leaderboard', Forum\Leaderboard::class)->name('leaderboard'); Route::get('/{thread}', Forum\DetailThread::class)->name('show'); diff --git a/tailwind.config.js b/tailwind.config.js index 0f1e6bb8..ca474d76 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -37,6 +37,7 @@ export default { 'spin-reverse-slow': 'spin-reverse 4s linear infinite', 'spin-reverse-slower': 'spin-reverse 6s linear infinite', 'scroll-slow': 'scroll 30s linear infinite', + rotate: "rotate 8s linear infinite", }, keyframes: { 'fade-in': { @@ -64,7 +65,11 @@ export default { to: { transform: 'translateX(-100%)', } - } + }, + rotate: { + "0%": { transform: "rotate(0deg) scale(10)" }, + "100%": { transform: "rotate(-360deg) scale(10)" }, + }, }, colors: { flag: { @@ -121,7 +126,7 @@ export default { }, }, }, - }) + }), }, }, plugins: [ diff --git a/tests/Feature/Livewire/ReportSpamTest.php b/tests/Feature/Livewire/ReportSpamTest.php index a7eb76b6..fafb8b9d 100644 --- a/tests/Feature/Livewire/ReportSpamTest.php +++ b/tests/Feature/Livewire/ReportSpamTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -use App\Livewire\ReportSpam; +use App\Livewire\Components\ReportSpam; use App\Models\SpamReport; use App\Models\Thread; use App\Notifications\ReportedSpamToTelegram; From e28c13bad489ca70b85e0279ea51180c82593668 Mon Sep 17 00:00:00 2001 From: Arthur Monney Date: Wed, 1 Jan 2025 02:44:58 +0100 Subject: [PATCH 2/4] chore: [LAR-150] add translations words --- lang/en/global.php | 3 +++ lang/fr/global.php | 3 +++ resources/views/livewire/pages/forum/leaderboard.blade.php | 6 +++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lang/en/global.php b/lang/en/global.php index 42caa7bc..0898967f 100644 --- a/lang/en/global.php +++ b/lang/en/global.php @@ -112,5 +112,8 @@ 'first_place' => '1st place', 'second_place' => '2nd place', 'third_place' => '3rd place', + 'ranking_updated' => 'The rankings are updated weekly.', + 'place' => 'Place', + 'user' => 'User', ]; diff --git a/lang/fr/global.php b/lang/fr/global.php index f78db1ab..9dbad24c 100644 --- a/lang/fr/global.php +++ b/lang/fr/global.php @@ -112,5 +112,8 @@ 'first_place' => '1ere place', 'second_place' => '2e place', 'third_place' => '3e place', + 'ranking_updated' => 'Ce classement est mis à jour toutes les semaines.', + 'place' => 'Position', + 'user' => 'Utilisateur', ]; diff --git a/resources/views/livewire/pages/forum/leaderboard.blade.php b/resources/views/livewire/pages/forum/leaderboard.blade.php index 9f52c44e..9786df8b 100644 --- a/resources/views/livewire/pages/forum/leaderboard.blade.php +++ b/resources/views/livewire/pages/forum/leaderboard.blade.php @@ -59,7 +59,7 @@ class="animate-rotate absolute inset-0 h-full w-full rounded-full bg-[conic-grad

@@ -70,10 +70,10 @@ class="animate-rotate absolute inset-0 h-full w-full rounded-full bg-[conic-grad
- {{ __('Rang') }} + {{ __('global.place') }}
- {{ __('Utilisateur') }} + {{ __('global.user') }}