From 2a731505869c48f2a3bad7e896f3725104de770e Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 4 Jun 2018 00:07:40 -0600 Subject: [PATCH] Update comment url structure --- app/Http/Controllers/CommentController.php | 4 ++-- app/Http/Controllers/StatusController.php | 2 +- app/Status.php | 7 ++++++- routes/web.php | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php index b6851442e..1815914c3 100644 --- a/app/Http/Controllers/CommentController.php +++ b/app/Http/Controllers/CommentController.php @@ -10,10 +10,10 @@ use App\{Comment, Profile, Status}; class CommentController extends Controller { - public function show(Request $request, $username, int $id) + public function show(Request $request, $username, int $id, int $cid) { $user = Profile::whereUsername($username)->firstOrFail(); - $status = Status::whereProfileId($user->id)->whereNotNull('in_reply_to_id')->findOrFail($id); + $status = Status::whereProfileId($user->id)->whereInReplyToId($id)->findOrFail($cid); return view('status.reply', compact('user', 'status')); } diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index e1db420c8..d687b6bdf 100644 --- a/app/Http/Controllers/StatusController.php +++ b/app/Http/Controllers/StatusController.php @@ -17,7 +17,7 @@ class StatusController extends Controller ->withCount('likes') ->findOrFail($id); if(!$status->media_path && $status->in_reply_to_id) { - return view('status.reply', compact('user', 'status')); + return redirect($status->url()); } return view('status.show', compact('user', 'status')); } diff --git a/app/Status.php b/app/Status.php index aa1146280..3bf4fc9ca 100644 --- a/app/Status.php +++ b/app/Status.php @@ -32,7 +32,12 @@ class Status extends Model { $id = $this->id; $username = $this->profile->username; - return url(config('app.url') . "/p/{$username}/{$id}"); + $path = config('app.url') . "/p/{$username}/{$id}"; + if(!is_null($this->in_reply_to_id)) { + $pid = $this->in_reply_to_id; + $path = config('app.url') . "/p/{$username}/{$pid}/c/{$id}"; + } + return url($path); } public function mediaUrl() diff --git a/routes/web.php b/routes/web.php index adc8f74c9..bac723e7d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -125,6 +125,7 @@ Route::domain(config('pixelfed.domain.app'))->group(function() { Route::view('libraries', 'site.libraries')->name('site.libraries'); }); + Route::get('p/{username}/{id}/c/{cid}', 'CommentController@show'); Route::get('p/{username}/{id}', 'StatusController@show'); Route::get('{username}/saved', 'ProfileController@savedBookmarks'); Route::get('{username}/followers', 'ProfileController@followers');