Add tests for featured thumbnail generation; apply Pint formatting and related edits

This commit is contained in:
2026-05-06 18:55:40 +02:00
parent 7a8bc8e22a
commit 82f2b1f660
65 changed files with 11325 additions and 49545 deletions

View File

@@ -60,6 +60,7 @@ use App\Http\Controllers\User\MonthlyCommentatorsController;
use App\Http\Controllers\User\ProfileCollectionController;
use App\Http\Controllers\User\SavedCollectionController;
use App\Http\Controllers\User\CollectionSavedLibraryController;
use App\Http\Controllers\Moderation\Traffic\OnlineVisitorsController;
use App\Http\Controllers\Settings\CollectionAiController;
use App\Http\Controllers\Settings\CollectionInsightsController;
use App\Http\Controllers\Settings\CollectionManageController;
@@ -325,10 +326,10 @@ Route::prefix('news')->name('news.')->group(function () {
->name('author');
Route::get('category/{slug}', [FrontendNewsController::class, 'category'])->name('category');
Route::get('tag/{slug}', [FrontendNewsController::class, 'tag'])->name('tag');
Route::middleware('auth')->post('{slug}/comments', [NewsArticleCommentController::class, 'store'])
Route::middleware(['auth', 'verified'])->post('{slug}/comments', [NewsArticleCommentController::class, 'store'])
->where('slug', '[a-z0-9\-]+')
->name('comments.store');
Route::middleware('auth')->delete('{slug}/comments/{comment}', [NewsArticleCommentController::class, 'destroy'])
Route::middleware(['auth', 'verified'])->delete('{slug}/comments/{comment}', [NewsArticleCommentController::class, 'destroy'])
->where('slug', '[a-z0-9\-]+')
->whereNumber('comment')
->name('comments.destroy');
@@ -400,7 +401,7 @@ Route::get('/groups/{group}/{section}', [\App\Http\Controllers\GroupController::
Route::get('/groups/{group}/posts/{post}', [\App\Http\Controllers\GroupPostController::class, 'show'])
->name('groups.posts.show');
Route::middleware('auth')->group(function () {
Route::middleware(['auth', 'verified'])->group(function () {
Route::post('/me/saved/collections/lists', [CollectionSavedLibraryController::class, 'storeList'])
->name('me.saved.collections.lists.store');
Route::get('/me/saved/collections/lists/{listSlug}', [\App\Http\Controllers\User\SavedCollectionController::class, 'showList'])
@@ -459,11 +460,11 @@ Route::get('/@{username}', [ProfileController::class, 'showByUsername'])
->where('username', '[A-Za-z0-9_-]{3,20}')
->name('profile.show');
Route::middleware('auth')->post('/@{username}/follow', [ProfileController::class, 'toggleFollow'])
Route::middleware(['auth', 'verified'])->post('/@{username}/follow', [ProfileController::class, 'toggleFollow'])
->where('username', '[A-Za-z0-9_-]{3,20}')
->name('profile.follow');
Route::middleware('auth')->post('/@{username}/comment', [ProfileController::class, 'storeComment'])
Route::middleware(['auth', 'verified'])->post('/@{username}/comment', [ProfileController::class, 'storeComment'])
->where('username', '[A-Za-z0-9_-]{3,20}')
->name('profile.comment');
@@ -507,7 +508,7 @@ Route::middleware(['auth'])->get('/dashboard/profile', [ProfileController::class
Route::middleware(['auth'])->get('/settings/profile', [ProfileController::class, 'editSettings'])->name('settings.profile');
// ── STUDIO Pro (/studio/*) ────────────────────────────────────────────────────
Route::middleware(['auth', 'ensure.onboarding.complete'])->prefix('studio')->name('studio.')->group(function () {
Route::middleware(['auth', 'verified', 'ensure.onboarding.complete'])->prefix('studio')->name('studio.')->group(function () {
Route::get('/', [StudioController::class, 'index'])->name('index');
Route::get('/content', [StudioController::class, 'content'])->name('content');
Route::get('/artworks', [StudioController::class, 'artworks'])->name('artworks');
@@ -708,7 +709,7 @@ Route::get('/internal/nova-cards/render-frame/{uuid}', [\App\Http\Controllers\In
->where('uuid', '[0-9a-f\-]{36}')
->name('nova-cards.render-frame');
Route::middleware('auth')->group(function () {
Route::middleware(['auth', 'verified'])->group(function () {
Route::post('/cards/{card}/comments', [\App\Http\Controllers\NovaCardCommentController::class, 'store'])
->whereNumber('card')
->name('cards.comments.store');
@@ -756,7 +757,7 @@ Route::middleware(['artwork.maturity.access'])->prefix('cp/ai-biography')->name(
});
// ── SETTINGS / PROFILE EDIT ───────────────────────────────────────────────────
Route::middleware(['auth', 'normalize.username', 'ensure.onboarding.complete'])->group(function () {
Route::middleware(['auth', 'verified', 'normalize.username', 'ensure.onboarding.complete'])->group(function () {
Route::get('/profile', fn () => redirect()->route('dashboard.profile', [], 301))->name('legacy.profile.redirect');
Route::get('/settings', fn () => redirect()->route('dashboard.profile', [], 302))->name('settings');
Route::get('/profile/edit', fn () => redirect()->route('dashboard.profile', [], 302))->name('profile.edit');
@@ -993,12 +994,12 @@ Route::view('/data-deletion', 'privacy.data-deletion')->name('privacy.data_delet
Route::view('/blank', 'blank')->name('blank');
// ── MESSAGES ──────────────────────────────────────────────────────────────────
Route::middleware(['auth', 'ensure.onboarding.complete'])
Route::middleware(['auth', 'verified', 'ensure.onboarding.complete'])
->get('/messages/attachments/{id}', [\App\Http\Controllers\Api\Messaging\AttachmentController::class, 'show'])
->whereNumber('id')
->name('messages.attachments.show');
Route::middleware(['auth', 'ensure.onboarding.complete'])->prefix('messages')->name('messages.')->group(function () {
Route::middleware(['auth', 'verified', 'ensure.onboarding.complete'])->prefix('messages')->name('messages.')->group(function () {
Route::get('/', [\App\Http\Controllers\Messaging\MessagesPageController::class, 'index'])->name('index');
Route::get('/{id}', [\App\Http\Controllers\Messaging\MessagesPageController::class, 'show'])->whereNumber('id')->name('show');
});
@@ -1018,6 +1019,17 @@ Route::middleware(['auth'])
})->where('path', '.*');
});
Route::middleware(['auth', 'admin.access'])
->prefix('moderation')
->name('moderation.')
->group(function (): void {
Route::get('/traffic/online', [OnlineVisitorsController::class, 'index'])
->name('traffic.online');
Route::get('/traffic/online/data', [OnlineVisitorsController::class, 'data'])
->name('traffic.online.data');
});
// ── ADMIN PANEL ───────────────────────────────────────────────────────────────
Route::middleware(['auth', 'admin.access'])
->prefix('moderation')