diff --git a/app/Livewire/Pages/Articles/SinglePost.php b/app/Livewire/Pages/Articles/SinglePost.php
index 2d0d03fb..71c112f7 100644
--- a/app/Livewire/Pages/Articles/SinglePost.php
+++ b/app/Livewire/Pages/Articles/SinglePost.php
@@ -14,12 +14,12 @@ final class SinglePost extends Component
{
public Article $article;
- public function mount(Article $article): void
+ public function mount(): void
{
/** @var User $user */
$user = Auth::user();
- $article = $article->load(['media', 'user'])->loadCount('views');
+ $article = $this->article->load(['media', 'user'])->loadCount('views');
abort_unless(
$article->isPublished() || ($user && $article->isAuthoredBy($user)) || ($user && $user->hasAnyRole(['admin', 'moderator'])), // @phpstan-ignore-line
@@ -42,7 +42,6 @@ public function mount(Article $article): void
->twitterTitle($article->title)
->twitterDescription($article->excerpt(150))
->twitterImage($image)
- ->twitterSite('laravelcm')
->url($article->canonicalUrl());
$this->article = $article;
diff --git a/app/Livewire/Pages/Discussions/SingleDiscussion.php b/app/Livewire/Pages/Discussions/SingleDiscussion.php
index 5bde2432..47da73e5 100644
--- a/app/Livewire/Pages/Discussions/SingleDiscussion.php
+++ b/app/Livewire/Pages/Discussions/SingleDiscussion.php
@@ -23,22 +23,20 @@ final class SingleDiscussion extends Component implements HasActions, HasForms
public Discussion $discussion;
- public function mount(Discussion $discussion): void
+ public function mount(): void
{
- views($discussion)->cooldown(now()->addHours(2))->record();
+ views($this->discussion)->cooldown(now()->addHours(2))->record();
// @phpstan-ignore-next-line
seo()
- ->title($discussion->title)
- ->description($discussion->excerpt(100))
+ ->title($this->discussion->title)
+ ->description($this->discussion->excerpt(100))
->image(asset('images/socialcard.png'))
- ->twitterTitle($discussion->title)
- ->twitterDescription($discussion->excerpt(100))
- ->twitterImage(asset('images/socialcard.png'))
- ->twitterSite('laravelcm')
+ ->twitterTitle($this->discussion->title)
+ ->twitterDescription($this->discussion->excerpt(100))
->withUrl();
- $this->discussion = $discussion->load('tags', 'replies', 'reactions', 'replies.user');
+ $this->discussion->load('tags', 'replies', 'reactions', 'replies.user', 'user');
}
public function editAction(): Action
diff --git a/app/Livewire/Pages/Home.php b/app/Livewire/Pages/Home.php
index c8f994b5..f4a25232 100644
--- a/app/Livewire/Pages/Home.php
+++ b/app/Livewire/Pages/Home.php
@@ -19,14 +19,6 @@ public function render(): View
{
$ttl = now()->addDays(2);
- // @phpstan-ignore-next-line
- seo()
- ->description(__('pages/home.description'))
- ->twitterDescription(__('pages/home.description'))
- ->image(asset('/images/socialcard.png'))
- ->twitterSite('laravelcm')
- ->withUrl();
-
return view('livewire.pages.home', [
'plans' => Cache::remember(
key: 'plans',
diff --git a/app/Models/User.php b/app/Models/User.php
index f9b206ec..e3e368c0 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -117,6 +117,10 @@ final class User extends Authenticatable implements FilamentUser, HasAvatar, Has
'last_active_at' => 'datetime',
];
+ protected $with = [
+ 'providers',
+ ];
+
public function hasProvider(string $provider): bool
{
foreach ($this->providers as $p) {
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index ac5bb1d8..ee25d4e9 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -40,6 +40,16 @@ public function boot(): void
$this->bootEloquentMorphs();
$this->bootFilament();
+ // @phpstan-ignore-next-line
+ seo()
+ ->title(
+ default: __('pages/home.title'),
+ modify: fn (string $title) => $title.' | '.__('global.site_name')
+ )
+ ->description(default: __('global.site_description'))
+ ->image(default: fn () => asset('images/socialcard.png'))
+ ->twitterSite('@laravelcm');
+
FilamentColor::register([
'primary' => Color::Emerald,
'danger' => Color::Red,
diff --git a/app/View/Composers/InactiveDiscussionsComposer.php b/app/View/Composers/InactiveDiscussionsComposer.php
index 943d09a4..9b316ca8 100644
--- a/app/View/Composers/InactiveDiscussionsComposer.php
+++ b/app/View/Composers/InactiveDiscussionsComposer.php
@@ -14,8 +14,8 @@ public function compose(View $view): void
{
$discussions = Cache::remember(
key: 'inactive_discussions',
- ttl: now()->addDays(3),
- callback: fn () => Discussion::noComments()->limit(5)->get()
+ ttl: now()->addWeek(),
+ callback: fn () => Discussion::with('user')->noComments()->limit(5)->get()
);
$view->with('discussions', $discussions);
diff --git a/app/View/Composers/TopContributorsComposer.php b/app/View/Composers/TopContributorsComposer.php
index e6ee1464..c0855415 100644
--- a/app/View/Composers/TopContributorsComposer.php
+++ b/app/View/Composers/TopContributorsComposer.php
@@ -15,9 +15,9 @@ public function compose(View $view): void
$topContributors = Cache::remember(
key: 'contributors',
ttl: now()->addWeek(),
- callback: fn () => User::topContributors()
+ callback: fn () => User::query()->scopes('topContributors')
->get()
- ->filter(fn (User $contributor) => $contributor->loadCount('discussions')->discussions_count >= 1)
+ ->filter(fn (User $contributor) => $contributor->discussions_count >= 1)
->take(5)
);
diff --git a/composer.json b/composer.json
index 1128de76..a90ded22 100644
--- a/composer.json
+++ b/composer.json
@@ -10,6 +10,7 @@
"ext-json": "*",
"archtechx/laravel-seo": "^0.10",
"awcodes/filament-badgeable-column": "^2.3",
+ "barryvdh/laravel-debugbar": "^3.14",
"blade-ui-kit/blade-heroicons": "^2.4",
"codeat3/blade-phosphor-icons": "^2.0",
"cyrildewit/eloquent-viewable": "^7.0",
diff --git a/composer.lock b/composer.lock
index cec5c7c1..12bb7775 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "255123bf274b713735b09291084080af",
+ "content-hash": "6b11f598bdc899a012175d5a089c602c",
"packages": [
{
"name": "abraham/twitteroauth",
@@ -1068,6 +1068,90 @@
],
"time": "2024-03-07T20:37:19+00:00"
},
+ {
+ "name": "barryvdh/laravel-debugbar",
+ "version": "v3.14.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/barryvdh/laravel-debugbar.git",
+ "reference": "56b9bd235e3fe62e250124804009ce5bab97cc63"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/56b9bd235e3fe62e250124804009ce5bab97cc63",
+ "reference": "56b9bd235e3fe62e250124804009ce5bab97cc63",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/routing": "^9|^10|^11",
+ "illuminate/session": "^9|^10|^11",
+ "illuminate/support": "^9|^10|^11",
+ "maximebf/debugbar": "~1.23.0",
+ "php": "^8.0",
+ "symfony/finder": "^6|^7"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.3.3",
+ "orchestra/testbench-dusk": "^5|^6|^7|^8|^9",
+ "phpunit/phpunit": "^9.6|^10.5",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar"
+ },
+ "providers": [
+ "Barryvdh\\Debugbar\\ServiceProvider"
+ ]
+ },
+ "branch-alias": {
+ "dev-master": "3.14-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Barryvdh\\Debugbar\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Barry vd. Heuvel",
+ "email": "barryvdh@gmail.com"
+ }
+ ],
+ "description": "PHP Debugbar integration for Laravel",
+ "keywords": [
+ "debug",
+ "debugbar",
+ "laravel",
+ "profiler",
+ "webprofiler"
+ ],
+ "support": {
+ "issues": "https://github.com/barryvdh/laravel-debugbar/issues",
+ "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.14.10"
+ },
+ "funding": [
+ {
+ "url": "https://fruitcake.nl",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/barryvdh",
+ "type": "github"
+ }
+ ],
+ "time": "2024-12-23T10:10:42+00:00"
+ },
{
"name": "blade-ui-kit/blade-heroicons",
"version": "2.5.0",
@@ -6428,6 +6512,74 @@
},
"time": "2024-03-31T07:05:07+00:00"
},
+ {
+ "name": "maximebf/debugbar",
+ "version": "v1.23.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-debugbar/php-debugbar.git",
+ "reference": "eeabd61a1f19ba5dcd5ac4585a477130ee03ce25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/eeabd61a1f19ba5dcd5ac4585a477130ee03ce25",
+ "reference": "eeabd61a1f19ba5dcd5ac4585a477130ee03ce25",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2|^8",
+ "psr/log": "^1|^2|^3",
+ "symfony/var-dumper": "^4|^5|^6|^7"
+ },
+ "require-dev": {
+ "dbrekelmans/bdi": "^1",
+ "phpunit/phpunit": "^8|^9",
+ "symfony/panther": "^1|^2.1",
+ "twig/twig": "^1.38|^2.7|^3.0"
+ },
+ "suggest": {
+ "kriswallsmith/assetic": "The best way to manage assets",
+ "monolog/monolog": "Log using Monolog",
+ "predis/predis": "Redis storage"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.23-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "DebugBar\\": "src/DebugBar/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Maxime Bouroumeau-Fuseau",
+ "email": "maxime.bouroumeau@gmail.com",
+ "homepage": "http://maximebf.com"
+ },
+ {
+ "name": "Barry vd. Heuvel",
+ "email": "barryvdh@gmail.com"
+ }
+ ],
+ "description": "Debug bar in the browser for php application",
+ "homepage": "https://github.com/maximebf/php-debugbar",
+ "keywords": [
+ "debug",
+ "debugbar"
+ ],
+ "support": {
+ "issues": "https://github.com/php-debugbar/php-debugbar/issues",
+ "source": "https://github.com/php-debugbar/php-debugbar/tree/v1.23.5"
+ },
+ "time": "2024-12-15T19:20:42+00:00"
+ },
{
"name": "maxmind-db/reader",
"version": "v1.12.0",
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index 7d9ebe7a..314d949f 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -13,12 +13,9 @@
{{ isset($title) ? $title . ' | ' : '' }} {{ config('app.name') }}
{{ is_active('home') ? '- '. __('pages/home.title') : '' }}
-
+
-
-
-
- @include('partials._og')
+