Skip to content

Commit 7fcd767

Browse files
committed
feat: merge update admin into badge
2 parents 104cb4e + b16c016 commit 7fcd767

File tree

34 files changed

+727
-565
lines changed

34 files changed

+727
-565
lines changed

.github/actions/setup/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ runs:
2121
shell: sh
2222
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
2323
- name: Cache dependencies
24-
uses: actions/cache@v3
24+
uses: actions/cache@v4
2525
with:
2626
path: ${{ steps.composer-cache.outputs.dir }}
2727
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}

.github/workflows/update-changelog.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ on:
77
jobs:
88
update:
99
runs-on: ubuntu-latest
10+
permissions:
11+
contents: write
1012

1113
steps:
1214
- name: Checkout code

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ composer.phar
2121
/public/hot
2222
/public/storage
2323
/public/media
24+
public/css/
25+
public/js/
2426
/public/**/*.xml
2527
/storage/*.key
2628
/storage/framework/cache

app/Actions/Article/CreateArticleAction.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use App\Data\ArticleData;
88
use App\Models\Article;
9+
use App\Models\User;
910
use Carbon\Carbon;
1011
use Illuminate\Support\Facades\Auth;
1112

@@ -27,15 +28,19 @@ public function execute(ArticleData $articleData): Article
2728
);
2829
}
2930

31+
/** @var User $user */
32+
$user = Auth::user();
33+
3034
// @phpstan-ignore-next-line
3135
return Article::query()->create([
3236
'title' => $articleData->title,
3337
'slug' => $articleData->slug,
3438
'body' => $articleData->body,
3539
'published_at' => $articleData->published_at,
3640
'submitted_at' => $articleData->submitted_at,
41+
'approved_at' => $articleData->approved_at,
3742
'canonical_url' => $articleData->canonical_url,
38-
'user_id' => Auth::id(),
43+
'user_id' => $user->id,
3944
]);
4045
}
4146
}

app/Data/ArticleData.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ public function __construct(
1818
public ?Carbon $published_at = null,
1919
public ?Carbon $submitted_at = null,
2020
public ?Carbon $declined_at = null,
21+
public ?Carbon $approved_at = null,
2122
) {}
2223
}

app/Filament/Resources/ArticleResource.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ public static function table(Table $table): Table
102102

103103
return '';
104104
})
105-
->searchable()
106105
->sortable(),
107106
])
108107
->actions([

app/Livewire/Components/Slideovers/ArticleForm.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
use App\Exceptions\UnverifiedUserException;
1111
use App\Livewire\Traits\WithAuthenticatedUser;
1212
use App\Models\Article;
13-
use Carbon\Carbon;
1413
use Filament\Forms;
1514
use Filament\Forms\Concerns\InteractsWithForms;
1615
use Filament\Forms\Contracts\HasForms;
1716
use Filament\Forms\Form;
1817
use Filament\Notifications\Notification;
1918
use Illuminate\Contracts\View\View;
19+
use Illuminate\Database\Eloquent\Builder;
2020
use Illuminate\Support\Facades\Auth;
2121
use Illuminate\Support\Facades\Blade;
2222
use Illuminate\Support\HtmlString;
@@ -91,7 +91,7 @@ public function form(Form $form): Form
9191
->helperText(__('pages/article.draft_help')),
9292
Forms\Components\DatePicker::make('published_at')
9393
->label(__('pages/article.form.published_at'))
94-
->minDate(now())
94+
->closeOnDateSelection()
9595
->prefixIcon('untitledui-calendar-date')
9696
->native(false)
9797
->visible(fn (Forms\Get $get): bool => $get('is_draft') === false)
@@ -110,7 +110,7 @@ public function form(Form $form): Form
110110
->relationship(
111111
name: 'tags',
112112
titleAttribute: 'name',
113-
modifyQueryUsing: fn ($query) => $query->whereJsonContains('concerns', 'post')
113+
modifyQueryUsing: fn (Builder $query): Builder => $query->whereJsonContains('concerns', 'post')
114114
)
115115
->preload()
116116
->required()
@@ -173,10 +173,8 @@ public function save(): void
173173
$state = $this->form->getState();
174174

175175
$publishedFields = [
176-
'published_at' => data_get($state, 'published_at')
177-
? new Carbon(data_get($state, 'published_at'))
178-
: null,
179-
'submitted_at' => data_get($state, 'is_draft') ? null : now(),
176+
'published_at' => data_get($state, 'published_at') ?? null,
177+
'submitted_at' => data_get($state, 'is_draft') ?? null,
180178
];
181179

182180
if ($this->article?->id) {

app/Models/Article.php

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,21 @@
3131
* @property bool $show_toc
3232
* @property bool $is_pinned
3333
* @property int $is_sponsored
34-
* @property string | null $canonical_url
35-
* @property string | null $reason
36-
* @property int | null $tweet_id
34+
* @property string|null $canonical_url
35+
* @property string|null $reason
36+
* @property int|null $tweet_id
3737
* @property int $user_id
38-
* @property string | null $locale
38+
* @property string|null $locale
3939
* @property-read User $user
40-
* @property Carbon | null $published_at
41-
* @property Carbon | null $submitted_at
42-
* @property Carbon | null $approved_at
43-
* @property Carbon | null $shared_at
44-
* @property Carbon | null $declined_at
45-
* @property Carbon | null $sponsored_at
46-
* @property Carbon $created_at
47-
* @property Carbon $updated_at
48-
* @property \Illuminate\Database\Eloquent\Collection | Tag[] $tags
40+
* @property-read \Illuminate\Support\Carbon|null $published_at
41+
* @property-read \Illuminate\Support\Carbon|null $submitted_at
42+
* @property-read \Illuminate\Support\Carbon|null $approved_at
43+
* @property-read \Illuminate\Support\Carbon|null $shared_at
44+
* @property-read \Illuminate\Support\Carbon|null $declined_at
45+
* @property-read \Illuminate\Support\Carbon|null $sponsored_at
46+
* @property-read \Illuminate\Support\Carbon $created_at
47+
* @property-read \Illuminate\Support\Carbon $updated_at
48+
* @property \Illuminate\Database\Eloquent\Collection<int, Tag> $tags
4949
*/
5050
final class Article extends Model implements HasMedia, ReactableInterface, Sitemapable, Viewable
5151
{

app/Providers/Filament/AdminPanelProvider.php

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,23 @@
44

55
namespace App\Providers\Filament;
66

7-
use App\Filament\Resources\ArticleResource\Widgets\ArticleStatsOverview;
8-
use App\Filament\Resources\ArticleResource\Widgets\MostLikedPostsChart;
9-
use App\Filament\Resources\ArticleResource\Widgets\MostViewedPostsChart;
10-
use App\Filament\Resources\UserResource\Widgets\UserActivityWidget;
11-
use App\Filament\Resources\UserResource\Widgets\UserChartWidget;
12-
use App\Filament\Resources\UserResource\Widgets\UserStatsOverview;
7+
use App\Filament\Resources\ArticleResource\Widgets as ArticleWidgets;
8+
use App\Filament\Resources\UserResource\Widgets;
139
use Filament\Http\Middleware\Authenticate;
1410
use Filament\Http\Middleware\DisableBladeIconComponents;
1511
use Filament\Http\Middleware\DispatchServingFilamentEvent;
1612
use Filament\Pages;
1713
use Filament\Panel;
1814
use Filament\PanelProvider;
1915
use Filament\SpatieLaravelTranslatablePlugin;
20-
use Filament\Support\Colors\Color;
2116
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
2217
use Illuminate\Cookie\Middleware\EncryptCookies;
2318
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
2419
use Illuminate\Routing\Middleware\SubstituteBindings;
2520
use Illuminate\Session\Middleware\AuthenticateSession;
2621
use Illuminate\Session\Middleware\StartSession;
27-
use Illuminate\Support\Facades\Blade;
2822
use Illuminate\View\Middleware\ShareErrorsFromSession;
23+
use Vormkracht10\FilamentMails\Facades\FilamentMails;
2924
use Vormkracht10\FilamentMails\FilamentMailsPlugin;
3025

3126
final class AdminPanelProvider extends PanelProvider
@@ -38,38 +33,34 @@ public function panel(Panel $panel): Panel
3833
->path('cp')
3934
->login()
4035
->colors([
41-
'primary' => Color::Green,
36+
'primary' => '#099170',
4237
])
4338
->sidebarWidth('18.75rem')
39+
->sidebarCollapsibleOnDesktop()
4440
->viteTheme('resources/css/filament/admin/theme.css')
4541
->brandLogo(fn () => view('filament.brand'))
4642
->favicon(asset('images/favicons/favicon-32x32.png'))
43+
->spa()
4744
->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
4845
->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
4946
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')
5047
->pages([
5148
Pages\Dashboard::class,
5249
])
5350
->widgets([
54-
UserStatsOverview::class,
55-
UserChartWidget::class,
56-
UserActivityWidget::class,
57-
ArticleStatsOverview::class,
58-
MostLikedPostsChart::class,
59-
MostViewedPostsChart::class,
51+
Widgets\UserStatsOverview::class,
52+
Widgets\UserChartWidget::class,
53+
Widgets\UserActivityWidget::class,
54+
ArticleWidgets\ArticleStatsOverview::class,
55+
ArticleWidgets\MostLikedPostsChart::class,
56+
ArticleWidgets\MostViewedPostsChart::class,
6057
])
6158
->plugins([
6259
SpatieLaravelTranslatablePlugin::make()
6360
->defaultLocales(['fr', 'en']),
6461
FilamentMailsPlugin::make(),
6562
])
66-
->renderHook(
67-
'body.start',
68-
fn (): string => Blade::render('@livewire(\'livewire-ui-modal\')'),
69-
)
70-
->databaseNotifications()
71-
->databaseNotificationsPolling('3600s')
72-
->spa()
63+
->routes(fn () => FilamentMails::routes())
7364
->middleware([
7465
EncryptCookies::class,
7566
AddQueuedCookiesToResponse::class,

composer.json

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
],
99
"license": "MIT",
1010
"require": {
11-
"php": "^8.2",
11+
"php": "^8.3",
1212
"ext-fileinfo": "*",
1313
"ext-json": "*",
1414
"archtechx/laravel-seo": "^0.10",
@@ -37,9 +37,8 @@
3737
"laravelcm/gamify": "*",
3838
"laravelcm/laravel-subscriptions": "^1.3",
3939
"laravelcm/livewire-slide-overs": "^1.0",
40-
"livewire/livewire": "^3.5",
4140
"livewire/volt": "^1.6",
42-
"mckenziearts/blade-untitledui-icons": "^1.3",
41+
"mckenziearts/blade-untitledui-icons": "^1.4",
4342
"notchpay/notchpay-php": "^1.6",
4443
"ramsey/uuid": "^4.7.4",
4544
"sentry/sentry-laravel": "^4.10",
@@ -65,10 +64,10 @@
6564
"laravel/pint": "^1.18",
6665
"mockery/mockery": "^1.6.2",
6766
"nunomaduro/collision": "^8.1",
68-
"pestphp/pest": "^2.32",
69-
"pestphp/pest-plugin-laravel": "^2.1",
70-
"pestphp/pest-plugin-livewire": "^2.1",
71-
"phpunit/phpunit": "^10.0",
67+
"pestphp/pest": "^3.8",
68+
"pestphp/pest-plugin-laravel": "^3.0",
69+
"pestphp/pest-plugin-livewire": "^3.0",
70+
"phpunit/phpunit": "^11.0",
7271
"spatie/laravel-ignition": "^2.0",
7372
"spatie/test-time": "^1.3.2"
7473
},
@@ -90,11 +89,11 @@
9089
"scripts": {
9190
"post-autoload-dump": [
9291
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
93-
"@php artisan package:discover --ansi"
92+
"@php artisan package:discover --ansi",
93+
"@php artisan filament:upgrade"
9494
],
9595
"post-update-cmd": [
96-
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
97-
"@php artisan filament:upgrade"
96+
"Illuminate\\Foundation\\ComposerScripts::postUpdate"
9897
],
9998
"post-root-package-install": [
10099
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""

0 commit comments

Comments
 (0)