diff --git a/app/Http/Controllers/WriterController.php b/app/Http/Controllers/WriterController.php index 660188f..0c55f09 100644 --- a/app/Http/Controllers/WriterController.php +++ b/app/Http/Controllers/WriterController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Models\Article; use Illuminate\Http\Request; use Illuminate\Contracts\View\View; use Illuminate\Support\Facades\Auth; @@ -47,4 +48,29 @@ class WriterController extends Controller { return view('writer.new-article'); } + + public function livePreview(Request $request): View + { + // Upload the file + $header_image_path = $request->headerImage->storeAs('header-image-previews'); + $article_empty = new Article(); + $article_empty->markdown_body = $request->markdownBody; + $article_empty->generateMarkupFromMarkdown(); + + $article = [ + 'title' => $request->title ?? null, + 'header_image_url' => $header_image_path ?? null, + 'subtitle' => $request->subtitle ?? null, + 'author' => [ + 'display_name' => auth()->user()->author->displayName, + ], + 'published_at' => $request->publicationDate ?? null, + 'primary_link' => $request->primary_link ?? null, + 'secondary_link' => $request->secondary_link ?? null, + 'mastodon_handle' => $request->mastodon_handle ?? null, + 'body' => $article_empty->body, + ]; + + return view('guest.article', ['article' => $article]); + } } diff --git a/resources/views/writer/new-article.blade.php b/resources/views/writer/new-article.blade.php index cc48233..b1e2282 100644 --- a/resources/views/writer/new-article.blade.php +++ b/resources/views/writer/new-article.blade.php @@ -3,7 +3,69 @@ @section('title', 'Write New Article') @section('content') -
- New Article + + + + +
+
+
+ + + + + + + + + + + + + + +
+ +
+
+

Enjoy a live(ish) preview of what your article will look like

+
+ @if(isset($article_preview)) +
+ @else +

Nothing to see yet!

+ @endif +
+
@endsection diff --git a/routes/web.php b/routes/web.php index aade2ee..6c3f91d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -50,4 +50,5 @@ Route::middleware('auth')->group(function () { Route::get('/writer', [WriterController::class, 'dashboard'])->name('dashboard'); Route::post('/logout', [WriterController::class, 'logout'])->name('logout'); Route::get('writer/new-article', [WriterController::class, 'newArticle'])->name('new_article'); + Route::post('writer/live-preview', [WriterController::class, 'livePreview'])->name('live_preview'); });