Skip to content

Commit c1432d2

Browse files
committed
wip
1 parent 8669a6a commit c1432d2

File tree

16 files changed

+284
-213
lines changed

16 files changed

+284
-213
lines changed

app/Http/Controllers/HomeController.php

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
use App\Models\Plan;
1010
use App\Models\Thread;
1111
use Illuminate\Contracts\View\View;
12+
use Illuminate\Support\Collection;
1213
use Illuminate\Support\Facades\Cache;
1314

14-
final class HomeController extends Controller
15+
final class HomeController
1516
{
1617
public function __invoke(): View
1718
{
@@ -21,37 +22,31 @@ public function __invoke(): View
2122
->get();
2223
});
2324

24-
$latestArticles = Cache::remember('latestArticles', now()->addHour(), function () {
25-
return Article::with(['tags', 'user', 'user.transactions'])
26-
->published()
27-
->orderByDesc('sponsored_at')
28-
->orderByDesc('published_at')
29-
->orderByViews()
30-
->trending()
31-
->limit(4)
32-
->get();
33-
});
34-
35-
$latestThreads = Cache::remember('latestThreads', now()->addHour(), function () {
36-
return Thread::with(['user', 'user.transactions'])->whereNull('solution_reply_id')
37-
->whereBetween('threads.created_at', [now()->subMonths(3), now()])
38-
->inRandomOrder()
39-
->limit(4)
40-
->get();
41-
});
42-
43-
$latestDiscussions = Cache::remember('latestDiscussions', now()->addHour(), function () {
44-
return Discussion::with(['user', 'user.transactions'])
45-
->recent()
46-
->orderByViews()
47-
->limit(3)
48-
->get();
49-
});
25+
$latestArticles = Cache::remember('latestArticles', now()->addMinute(), fn (): Collection => Article::with(['tags', 'user', 'user.transactions'])
26+
->published()
27+
->orderByDesc('sponsored_at')
28+
->orderByDesc('published_at')
29+
->orderByViews()
30+
->trending()
31+
->limit(4)
32+
->get());
33+
34+
$latestThreads = Cache::remember('latestThreads', now()->addMinute(), fn (): Collection => Thread::with(['user', 'user.transactions'])->whereNull('solution_reply_id')
35+
->whereBetween('threads.created_at', [now()->subMonths(3), now()])
36+
->inRandomOrder()
37+
->limit(4)
38+
->get());
39+
40+
$latestDiscussions = Cache::remember('latestDiscussions', now()->addMinute(), fn (): Collection => Discussion::with(['user', 'user.transactions'])
41+
->recent()
42+
->orderByViews()
43+
->limit(3)
44+
->get());
5045

5146
// @phpstan-ignore-next-line
5247
seo()
53-
->description('Laravel Cameroun est le portail de la communauté de développeurs PHP & Laravel au Cameroun, On partage, on apprend, on découvre et on construit une grande communauté.')
54-
->twitterDescription('Laravel Cameroun est le portail de la communauté de développeurs PHP & Laravel au Cameroun, On partage, on apprend, on découvre et on construit une grande communauté.')
48+
->description(__('pages/home.description'))
49+
->twitterDescription(__('pages/home.description'))
5550
->image(asset('/images/socialcard.png'))
5651
->twitterSite('laravelcm')
5752
->withUrl();

database/seeders/Fixtures/ArticleTableSeeder.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public function run(): void
128128
'user_id' => (int) array_rand($usersIds),
129129
]);
130130
$article1->syncTags(array_rand($tagsIds, 3));
131-
$article1->addMediaFromUrl("https://source.unsplash.com/random/1200x640/?img={$article1->id}")
131+
$article1->addMediaFromUrl("https://unsplash.it/1920/1080?random={$article1->id}")
132132
->toMediaCollection('media');
133133

134134
/** @var Article $article2 */
@@ -395,7 +395,7 @@ public function run(): void
395395
'user_id' => (int) array_rand($usersIds),
396396
]);
397397
$article2->syncTags(array_rand($tagsIds, 3));
398-
$article2->addMediaFromUrl("https://source.unsplash.com/random/1200x640/?img={$article2->id}")
398+
$article2->addMediaFromUrl("https://unsplash.it/1920/1080?random={$article2->id}")
399399
->toMediaCollection('media');
400400

401401
/** @var Article $article3 */
@@ -518,7 +518,7 @@ public function run(): void
518518
'user_id' => (int) array_rand($usersIds),
519519
]);
520520
$article3->syncTags(array_rand($tagsIds, 3));
521-
$article3->addMediaFromUrl("https://source.unsplash.com/random/1200x640/?img={$article3->id}")
521+
$article3->addMediaFromUrl("https://unsplash.it/1920/1080?random={$article3->id}")
522522
->toMediaCollection('media');
523523

524524
/** @var Article $article4 */
@@ -1102,7 +1102,7 @@ public function run(): void
11021102
'user_id' => (int) array_rand($usersIds),
11031103
]);
11041104
$article4->syncTags(array_rand($tagsIds, 3));
1105-
$article4->addMediaFromUrl("https://source.unsplash.com/random/1200x640/?img={$article4->id}")
1105+
$article4->addMediaFromUrl("https://unsplash.it/1920/1080?random={$article4->id}")
11061106
->toMediaCollection('media');
11071107

11081108
/** @var Article $article5 */
@@ -1176,7 +1176,7 @@ public function run(): void
11761176
'user_id' => (int) array_rand($usersIds),
11771177
]);
11781178
$article5->syncTags(array_rand($tagsIds, 3));
1179-
$article5->addMediaFromUrl("https://source.unsplash.com/random/1200x640/?img={$article5->id}")
1179+
$article5->addMediaFromUrl("https://unsplash.it/1920/1080?random={$article5->id}")
11801180
->toMediaCollection('media');
11811181

11821182
/** @var Article $article6 */
@@ -1254,7 +1254,7 @@ public function run(): void
12541254
'user_id' => (int) array_rand($usersIds),
12551255
]);
12561256
$article6->syncTags(array_rand($tagsIds, 3));
1257-
$article6->addMediaFromUrl("https://source.unsplash.com/random/1200x640/?img={$article6->id}")
1257+
$article6->addMediaFromUrl("https://unsplash.it/1920/1080?random={$article6->id}")
12581258
->toMediaCollection('media');
12591259
}
12601260
}

lang/en/global.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,12 @@
3232
'title' => 'Join us',
3333
'description' => 'Integrate our various communication platforms, receive tutorials, articles and podcasts on web design and programming.',
3434
],
35+
'ask' => 'asked',
36+
'posted_by' => 'Posted by',
37+
'members' => 'Members',
38+
'developers' => 'Développeurs PHP & Laravel',
39+
'event_rates' => 'Taux de participation aux événements',
40+
'stars' => 'stars',
41+
'sponsor_thanks' => "We'd like to thank these amazing companies for supporting us",
3542

3643
];

lang/en/pages/auth.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
return [
6+
7+
'login' => [
8+
'page_title' => 'Se connecter',
9+
'title' => 'Se connecter à son compte',
10+
'forgot_password' => 'Mot de passe oublié ?',
11+
'remember_me' => 'Se souvenir de moi',
12+
],
13+
14+
];

lang/en/pages/home.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,33 @@
1313
],
1414
'join_community' => 'Join the community',
1515
'visit_forum' => 'Visit the forum',
16+
'work_associations' => 'Nous travaillons avec d’autres communautés et startups',
17+
'view_logo_question' => 'Votre logo ici ?',
18+
'popular_posts' => [
19+
'title' => 'Popular Posts',
20+
'description' => 'Découvrez les articles les plus appréciés et partagés par les membres de la communauté',
21+
],
22+
'view_posts' => 'Voir tous les articles',
23+
'threads' => [
24+
'title' => 'On apprend aussi en aidant les autres',
25+
'description' => 'En rejoignant la communauté, vous pouvez consulter les dernières questions non résolues et apporter votre pierre à l’édifice.',
26+
'show' => 'Afficher la question',
27+
'show_all' => 'Voir tous les sujets',
28+
],
29+
'discussions' => [
30+
'title' => 'Ou venez juste discuter',
31+
'description' => 'Dans la communauté on partage aussi des sujets de discussions dans divers domaines, pour nous édifier tous ensemble. Rejoins nous en participant',
32+
'read' => 'Lire la discussion',
33+
'show_all' => 'Voir toutes les discussions',
34+
],
35+
'about' => [
36+
'heading' => "Nous construisons une communauté Open Source d'apprenants et d'enseignants",
37+
'everybody_learn' => 'Tout le monde enseigne, tout le monde apprend',
38+
'community_spirit' => "Tel est l'esprit qui est derrière la communauté. Une communauté qui se veut grandissante et qui donne la possibilité à tout le monde de partager ses connaissances et d'apprendre.",
39+
'join_members' => 'qui ont rejoint les différents groupes de la communauté',
40+
'developers_location' => 'dans l’ensemble du territoire national.',
41+
'young_community' => 'car la communauté est encore très jeune.',
42+
'projects' => 'sur les projets réalisés par les développeurs camerounais sur Github.',
43+
],
1644

1745
];

lang/fr/global.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,12 @@
3232
'title' => 'Rejoignez nous',
3333
'description' => 'Intégrez nos différentes plateformes de communication, recevez des tutoriels, articles et podcasts sur le design et la programmation web.',
3434
],
35+
'ask' => 'a posé',
36+
'posted_by' => 'Posté par',
37+
'members' => 'Membres',
38+
'developers' => 'Développeurs PHP & Laravel',
39+
'event_rates' => 'Taux de participation aux événements',
40+
'stars' => 'stars',
41+
'sponsor_thanks' => 'Nous disons à merci à ces entreprises et communautés pour leur soutien',
3542

3643
];

lang/fr/pages/home.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,33 @@
1313
],
1414
'join_community' => 'Rejoindre la communauté',
1515
'visit_forum' => 'Visiter le Forum',
16+
'work_associations' => 'Nous travaillons avec d’autres communautés et startups',
17+
'view_logo_question' => 'Votre logo ici ?',
18+
'popular_posts' => [
19+
'title' => 'Articles Populaires',
20+
'description' => 'Découvrez les articles les plus appréciés et partagés par les membres de la communauté',
21+
],
22+
'view_posts' => 'Voir tous les articles',
23+
'threads' => [
24+
'title' => 'On apprend aussi en aidant les autres',
25+
'description' => 'En rejoignant la communauté, vous pouvez consulter les dernières questions non résolues et apporter votre pierre à l’édifice.',
26+
'show' => 'Afficher la question',
27+
'show_all' => 'Voir tous les sujets',
28+
],
29+
'discussions' => [
30+
'title' => 'Ou venez juste discuter',
31+
'description' => 'Dans la communauté on partage aussi des sujets de discussions dans divers domaines, pour nous édifier tous ensemble. Rejoins nous en participant',
32+
'read' => 'Lire la discussion',
33+
'show_all' => 'Voir toutes les discussions',
34+
],
35+
'about' => [
36+
'heading' => "Nous construisons une communauté Open Source d'apprenants et d'enseignants",
37+
'everybody_learn' => 'Tout le monde enseigne, tout le monde apprend',
38+
'community_spirit' => "Tel est l'esprit qui est derrière la communauté. Une communauté qui se veut grandissante et qui donne la possibilité à tout le monde de partager ses connaissances et d'apprendre.",
39+
'join_members' => 'qui ont rejoint les différents groupes de la communauté',
40+
'developers_location' => 'dans l’ensemble du territoire national.',
41+
'young_community' => 'car la communauté est encore très jeune.',
42+
'projects' => 'sur les projets réalisés par les développeurs camerounais sur Github.',
43+
],
1644

1745
];

resources/views/auth/forgot-password.blade.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,13 @@ class="mt-1 block w-full"
3131
</div>
3232

3333
<div class="mt-4 flex items-center justify-end">
34-
<x-button type="submit" class="relative w-full">Réinitialisation du mot de passe</x-button>
34+
<x-buttons.primary type="submit" class="relative w-full">
35+
Réinitialisation du mot de passe
36+
</x-buttons.primary>
3537
</div>
3638
</form>
3739
</div>
3840
</div>
41+
42+
<x-join-sponsors :title="__('global.sponsor_thanks')" />
3943
</x-app-layout>

resources/views/auth/login.blade.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</div>
99
<form class="space-y-6" action="{{ route('login') }}" method="POST">
1010
@csrf
11-
<div class="space-y-4 rounded-md shadow-sm">
11+
<div class="space-y-4 rounded-lg">
1212
<div>
1313
<label for="email-address" class="sr-only">Adresse E-mail</label>
1414
<x-email
@@ -37,37 +37,36 @@
3737
id="remember_me"
3838
name="remember_me"
3939
type="checkbox"
40-
class="size-4 rounded border-skin-input bg-skin-input text-green-600 focus:ring-green-500"
40+
class="size-4 rounded border-gray-300 bg-white text-green-600 focus:ring-green-500"
4141
/>
42-
<label for="remember_me" class="ml-2 block cursor-pointer text-sm font-normal text-gray-500 dark:text-gray-400">
42+
<label for="remember_me" class="ml-2 block cursor-pointer text-sm text-gray-500 dark:text-gray-400">
4343
Se souvenir de moi
4444
</label>
4545
</div>
4646

4747
<div class="text-sm">
48-
<a
48+
<x-link
4949
href="{{ route('password.request') }}"
5050
class="font-medium text-green-600 hover:text-green-500"
5151
>
5252
Mot de passe oublié ?
53-
</a>
53+
</x-link>
5454
</div>
5555
</div>
5656

5757
<div>
58-
<button
59-
type="submit"
60-
class="button group relative flex w-full justify-center rounded-md border border-transparent bg-green-600 px-4 py-2 text-sm font-medium text-white hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2"
61-
>
62-
<span class="absolute inset-y-0 left-0 flex items-center pl-3">
58+
<x-buttons.primary type="submit" class="group relative w-full">
59+
<span class="absolute pointer-events-none inset-y-0 left-0 flex items-center pl-3">
6360
<x-heroicon-s-lock-closed class="size-5 text-green-500 group-hover:text-green-400" />
6461
</span>
6562
Se connecter
66-
</button>
63+
</x-buttons.primary>
6764
</div>
6865
</form>
6966

7067
@include('partials._socials-link')
7168
</div>
7269
</div>
70+
71+
<x-join-sponsors :title="__('global.sponsor_thanks')" />
7372
</x-app-layout>

resources/views/auth/register.blade.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<x-app-layout title="Créer un compte">
2-
<div class="mx-auto flex w-full items-center justify-between py-6 sm:max-w-4xl sm:py-9">
2+
<div class="mx-auto flex w-full items-center justify-between py-12 sm:max-w-4xl sm:py-16">
33
<div class="hidden lg:block lg:w-90">
44
<h3 class="text-lg font-semibold leading-6 text-gray-900">
55
Ouvrez votre esprit pour découvrir de nouveaux horizons.
@@ -130,4 +130,6 @@ class="group relative flex w-full justify-center rounded-md border border-transp
130130
@include('partials._socials-link')
131131
</div>
132132
</div>
133+
134+
<x-join-sponsors :title="__('global.sponsor_thanks')" />
133135
</x-app-layout>

resources/views/components/articles/card.blade.php

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,39 @@
55
])
66

77
<div
8-
@class(['space-y-6', 'lg:grid lg:grid-cols-3 lg:items-start lg:gap-6 lg:space-y-0' => $isSummary])
8+
@class(['relative group space-y-6', 'lg:grid lg:grid-cols-3 lg:items-start lg:gap-6 lg:space-y-0' => $isSummary])
99
>
10-
<a href="{{ route('articles.show', $article) }}" class="group">
11-
<div class="aspect-h-2 aspect-w-3">
12-
<img
13-
class="rounded-lg object-cover shadow-lg group-hover:opacity-75"
14-
src="{{ $article->getFirstMediaUrl('media') }}"
15-
alt="{{ $article->title }}"
16-
/>
17-
</div>
18-
</a>
10+
<div class="aspect-h-2 aspect-w-3">
11+
<img
12+
class="rounded-lg object-cover shadow-lg group-hover:opacity-75"
13+
src="{{ $article->getFirstMediaUrl('media') }}"
14+
alt="{{ $article->title }}"
15+
/>
16+
</div>
1917
<div @class(['space-y-4', 'sm:col-span-2' => $isSummary])>
2018
<div>
2119
<time
2220
datetime="{{ $article->publishedAt()->format('Y-m-d') }}"
23-
class="font-sans text-sm capitalize leading-5 text-gray-500 dark:text-gray-400"
21+
class="text-sm capitalize leading-5 text-gray-500 dark:text-gray-400"
2422
>
2523
{{ $article->publishedAt()->isoFormat('LL') }}
2624
</time>
27-
<a href="{{ route('articles.show', $article) }}" class="group mt-2 flex items-center justify-between">
28-
<h4 class="font-sans text-lg font-semibold leading-6 text-gray-900 group-hover:text-primary-600">
25+
<x-link :href="route('articles.show', $article)" class="group mt-0.5 flex items-center justify-between gap-2">
26+
<h4 class="text-lg font-semibold leading-6 text-gray-900 transition duration-200 ease-in-out group-hover:text-primary-600">
2927
{{ $article->title }}
3028
</h4>
3129
@if ($iconLink)
32-
<x-untitledui-link-external-01 class="ml-2 size-5 text-gray-500 dark:text-gray-400" />
30+
<x-untitledui-link-external-01 class="size-5 text-gray-500 dark:text-gray-400" aria-hidden="true" />
3331
@endif
34-
</a>
35-
<p class="mt-1 font-normal leading-6 text-gray-500 dark:text-gray-400">
32+
<span class="absolute inset-0"></span>
33+
</x-link>
34+
<p class="mt-1 line-clamp-3 leading-6 text-gray-500 dark:text-gray-400">
3635
{!! $article->excerpt(150) !!}
3736
</p>
3837
</div>
39-
<div class="flex items-center space-x-3">
38+
<div class="flex items-center gap-3">
4039
@if ($article->tags->isNotEmpty())
41-
<div class="flex items-center space-x-2">
40+
<div class="flex items-center gap-2">
4241
@foreach ($article->tags as $tag)
4342
<x-tag :tag="$tag" />
4443
@endforeach

resources/views/components/buttons/primary.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
@if ($link)
44
<x-link
5-
href="{{ $link }}"
5+
:href="$link"
66
{{ $attributes->twMerge(['class' => 'inline-flex items-center justify-center py-2 px-4 border-0 text-sm font-medium rounded-lg text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-white focus:ring-green-500 dark:ring-offset-gray-900']) }}
77
>
88
{{ $slot }}

0 commit comments

Comments
 (0)