Profile: store covers in object storage (WebP); add covers config; remember artworks categories content-type preference

This commit is contained in:
2026-03-29 09:22:36 +02:00
parent cab4fbd83e
commit 1da7d3bf88
27 changed files with 703 additions and 448 deletions

View File

@@ -33,7 +33,7 @@ Route::redirect('/browse-categories', '/categories', 301)->name('browse.categori
// /Skins/BrowserBob/210
// /Skins/BrowserBob/sdsdsdsd/210
Route::get('/{group}/{slug}/{id}', CategoryRedirectController::class)
->where('group', '(?i:skins|wallpapers|photography|other|members)')
->where('group', '(?i:skins|wallpapers|photography|other|digital-art|members)')
->where('slug', '[^/]+(?:/[^/]+)*')
->whereNumber('id')
->name('legacy.category.short');

View File

@@ -79,10 +79,10 @@ Route::prefix('explore')->name('explore.')->group(function () {
Route::get('/members', fn () => redirect()->route('creators.top', request()->query(), 301))->name('members.redirect');
Route::get('/memebers', fn () => redirect()->route('creators.top', request()->query(), 301))->name('memebers.redirect');
Route::get('/{type}', [ExploreController::class, 'byType'])
->where('type', 'artworks|wallpapers|skins|photography|other')
->where('type', 'artworks|wallpapers|skins|photography|digital-art|other')
->name('type');
Route::get('/{type}/{mode}', [ExploreController::class, 'byTypeMode'])
->where('type', 'artworks|wallpapers|skins|photography|other')
->where('type', 'artworks|wallpapers|skins|photography|digital-art|other')
->where('mode', 'trending|new-hot|best|latest')
->name('type.mode');
});
@@ -140,10 +140,10 @@ Route::middleware('throttle:60,1')->group(function () {
Route::prefix('rss/explore')->name('rss.explore.')->group(function () {
Route::get('/{type}', [ExploreFeedController::class, 'byType'])
->where('type', 'artworks|wallpapers|skins|photography|other')
->where('type', 'artworks|wallpapers|skins|photography|digital-art|other')
->name('type');
Route::get('/{type}/{mode}', [ExploreFeedController::class, 'byTypeMode'])
->where('type', 'artworks|wallpapers|skins|photography|other')
->where('type', 'artworks|wallpapers|skins|photography|digital-art|other')
->where('mode', 'trending|latest|best')
->name('type.mode');
});
@@ -551,7 +551,7 @@ Route::middleware(['auth', 'normalize.username', 'ensure.onboarding.complete'])-
// ── UPLOAD ────────────────────────────────────────────────────────────────────
Route::middleware(['auth', 'ensure.onboarding.complete'])->group(function () {
Route::get('/upload', function () {
$contentTypes = ContentType::with(['rootCategories.children'])->get()->map(function ($ct) {
$contentTypes = ContentType::with(['rootCategories.children'])->ordered()->get()->map(function ($ct) {
return [
'id' => $ct->id,
'name' => $ct->name,
@@ -580,7 +580,7 @@ Route::middleware(['auth', 'ensure.onboarding.complete'])->group(function () {
})->name('upload');
Route::get('/upload/draft/{id}', function (string $id) {
$contentTypes = ContentType::with(['rootCategories.children'])->get()->map(function ($ct) {
$contentTypes = ContentType::with(['rootCategories.children'])->ordered()->get()->map(function ($ct) {
return [
'id' => $ct->id,
'name' => $ct->name,
@@ -666,12 +666,12 @@ Route::bind('artwork', function ($value) {
});
Route::get('/{contentTypeSlug}/{categoryPath}/{artwork}', [BrowseGalleryController::class, 'showArtwork'])
->where('contentTypeSlug', 'photography|wallpapers|skins|other')
->where('contentTypeSlug', 'photography|wallpapers|skins|other|digital-art')
->where('categoryPath', '[^/]+(?:/[^/]+)*')
->name('artworks.show');
Route::get('/{contentTypeSlug}/{path?}', [BrowseGalleryController::class, 'content'])
->where('contentTypeSlug', 'photography|wallpapers|skins|other')
->where('contentTypeSlug', 'photography|wallpapers|skins|other|digital-art')
->where('path', '.*')
->name('content.route');