messages implemented

This commit is contained in:
2026-02-26 21:12:32 +01:00
parent d0aefc5ddc
commit 15b7b77d20
168 changed files with 14728 additions and 6786 deletions

View File

@@ -32,8 +32,40 @@ use App\Http\Controllers\User\ReceivedCommentsController;
use App\Http\Controllers\Web\BrowseCategoriesController;
use App\Http\Controllers\Web\GalleryController;
use App\Http\Controllers\Web\BrowseGalleryController;
use App\Http\Controllers\Web\DiscoverController;
use Inertia\Inertia;
// ── DISCOVER routes (/discover/*) ─────────────────────────────────────────────
Route::prefix('discover')->name('discover.')->group(function () {
Route::get('/trending', [DiscoverController::class, 'trending'])->name('trending');
Route::get('/fresh', [DiscoverController::class, 'fresh'])->name('fresh');
Route::get('/top-rated', [DiscoverController::class, 'topRated'])->name('top-rated');
Route::get('/most-downloaded', [DiscoverController::class, 'mostDownloaded'])->name('most-downloaded');
Route::get('/on-this-day', [DiscoverController::class, 'onThisDay'])->name('on-this-day');
// Artworks from people you follow (auth required)
Route::middleware('auth')->get('/following', [DiscoverController::class, 'following'])->name('following');
});
// ── CREATORS routes (/creators/*) ─────────────────────────────────────────────
Route::prefix('creators')->name('creators.')->group(function () {
// Top Creators → reuse existing top-authors controller
Route::get('/top', [\App\Http\Controllers\User\TopAuthorsController::class, 'index'])->name('top');
// Rising Creators → newest creators with recent uploads
Route::get('/rising', [\App\Http\Controllers\Web\DiscoverController::class, 'risingCreators'])->name('rising');
});
// Creator Stories → canonical rename of /interviews
Route::get('/stories', [\App\Http\Controllers\Community\InterviewController::class, 'index'])->name('stories');
// Tags listing page
Route::get('/tags', [\App\Http\Controllers\Web\TagController::class, 'index'])->name('tags.index');
// Following redirect (convenience shortcut for authenticated users)
Route::middleware('auth')->get('/following', function () {
return redirect()->route('dashboard.following');
})->name('following.redirect');
// Legacy route set migrated from routes/legacy.php into this file.
Route::get('/', [HomeController::class, 'index'])->name('legacy.home');
Route::get('/home', [HomeController::class, 'index']);
@@ -77,6 +109,11 @@ Route::middleware('ensure.onboarding.complete')->get('/forum.php', function (\Il
return redirect()->route('forum.thread.show', ['thread' => $threadId, 'slug' => $slug], 301);
})->name('forum.legacy.redirect');
// News/Announcements listing — redirect to forum index until a dedicated page exists
Route::get('/news', function () {
return redirect()->route('forum.index', [], 301);
})->name('news.index');
Route::get('/news/{id}/{slug?}', [NewsController::class, 'show'])->where('id', '\\d+')->name('legacy.news.show');
Route::get('/categories', [CategoryController::class, 'index'])->name('legacy.categories');
@@ -127,7 +164,10 @@ Route::get('/profile/{username}', [ProfileController::class, 'legacyByUsername']
->name('legacy.profile');
Route::get('/top-favourites', [TopFavouritesController::class, 'index'])->name('legacy.top_favourites');
Route::get('/top-authors', [TopAuthorsController::class, 'index'])->name('legacy.top_authors');
// /top-authors → 301 redirect to canonical /creators/top
Route::get('/top-authors', function () {
return redirect('/creators/top', 301);
})->name('legacy.top_authors');
Route::middleware('auth')->get('/mybuddies.php', [\App\Http\Controllers\User\MyBuddiesController::class, 'index'])->name('legacy.mybuddies.php');
Route::middleware('auth')->get('/mybuddies', [\App\Http\Controllers\User\MyBuddiesController::class, 'index'])->name('legacy.mybuddies');
@@ -160,7 +200,12 @@ Route::get('/monthly-commentators', [MonthlyCommentatorsController::class, 'inde
Route::get('/members', [MembersController::class, 'index'])->name('legacy.members');
Route::get('/latest', [LatestController::class, 'index'])->name('legacy.latest');
Route::get('/latest-comments', [LatestCommentsController::class, 'index'])->name('legacy.latest_comments');
Route::get('/interviews', [InterviewController::class, 'index'])->name('legacy.interviews');
// /interviews → 301 redirect to canonical /stories
Route::get('/interviews', function () {
return redirect('/stories', 301);
})->name('legacy.interviews');
Route::get('/authors/top', [\App\Http\Controllers\User\TopAuthorsController::class, 'index'])->name('authors.top');
Route::middleware(['auth'])->group(function () {
Route::get('/statistics', [StatisticsController::class, 'index'])->name('legacy.statistics');
@@ -184,6 +229,8 @@ Route::middleware(['auth', \App\Http\Middleware\NoIndexDashboard::class])->prefi
Route::get('/comments', [\App\Http\Controllers\Dashboard\CommentController::class, 'index'])->name('comments');
// Gallery (user uploads)
Route::get('/gallery', [\App\Http\Controllers\Dashboard\DashboardGalleryController::class, 'index'])->name('gallery');
// Awards received on the user's own artworks
Route::get('/awards', [\App\Http\Controllers\Dashboard\DashboardAwardsController::class, 'index'])->name('awards');
});
Route::middleware(['auth', 'normalize.username', 'ensure.onboarding.complete'])->group(function () {
@@ -316,4 +363,18 @@ Route::middleware(['auth'])->prefix('admin')->name('admin.')->group(function ()
})->middleware('admin.moderation')->name('usernames.moderation');
Route::resource('artworks', \App\Http\Controllers\Admin\ArtworkController::class)->except(['show']);
Route::get('reports', function () {
return view('admin.reports.queue');
})->middleware('admin.moderation')->name('reports.queue');
});
Route::middleware(['auth', 'ensure.onboarding.complete'])
->get('/messages/attachments/{id}', [\App\Http\Controllers\Api\Messaging\AttachmentController::class, 'show'])
->whereNumber('id')
->name('messages.attachments.show');
// ── Messages ──────────────────────────────────────────────────────────────────
Route::middleware(['auth', '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');
});