This commit is contained in:
Mark Gregory
2026-07-24 10:30:36 +01:00
parent 10e9c25d6c
commit 395e4dc545
94 changed files with 619 additions and 160 deletions
@@ -0,0 +1 @@
<x-layouts.app :title="isset($record) ? 'Edit Blog' : 'Create Blog'"><form method="POST" action="{{ isset($record) ? route('administration.blog.update',$record) : route('administration.blog.store') }}" class="space-y-5">@csrf @isset($record) @method('PUT') @endisset <div class="grid gap-5 md:grid-cols-2"><flux:input name="title" label="Title" value="{{ old('title',$record->title ?? '') }}" required/><flux:input name="slug" label="Slug" value="{{ old('slug',$record->slug ?? '') }}" required/><flux:select name="author_id" label="Author"><option value="">None</option>@foreach($authors as $author)<option value="{{ $author->id }}" @selected(old('author_id',$record->author_id ?? null)==$author->id)>{{ $author->name }}</option>@endforeach</flux:select><flux:select name="category_id" label="Category"><option value="">None</option>@foreach($categories as $category)<option value="{{ $category->id }}" @selected(old('category_id',$record->category_id ?? null)==$category->id)>{{ $category->name }}</option>@endforeach</flux:select><flux:select name="status" label="Status">@foreach(['draft','review','published','archived'] as $status)<option @selected(old('status',$record->status ?? 'draft')===$status)>{{ $status }}</option>@endforeach</flux:select><flux:input type="datetime-local" name="published_at" label="Publish at" value="{{ old('published_at',isset($record->published_at)?$record->published_at->format('Y-m-d\TH:i'):'') }}"/><flux:input type="datetime-local" name="expires_at" label="Expires at" value="{{ old('expires_at',isset($record->expires_at)?$record->expires_at->format('Y-m-d\TH:i'):'') }}"/><flux:input name="featured_image" label="Featured image path" value="{{ old('featured_image',$record->featured_image ?? '') }}"/></div><flux:textarea name="excerpt" label="Excerpt">{{ old('excerpt',$record->excerpt ?? '') }}</flux:textarea><flux:textarea name="content" label="Content" rows="16">{{ old('content',$record->content ?? '') }}</flux:textarea><div><label class="text-sm font-medium">Tags</label><div class="mt-2 grid gap-2 md:grid-cols-3">@foreach($tags as $tag)<label><input type="checkbox" name="tag_ids[]" value="{{ $tag->id }}" @checked(in_array($tag->id,old('tag_ids',isset($record)?$record->tags->pluck('id')->all():[])))> {{ $tag->name }}</label>@endforeach</div></div><flux:checkbox name="is_featured" value="1" label="Featured" :checked="old('is_featured',$record->is_featured ?? false)"/><flux:input name="meta_title" label="SEO title" value="{{ old('meta_title',$record->meta_title ?? '') }}"/><flux:textarea name="meta_description" label="SEO description">{{ old('meta_description',$record->meta_description ?? '') }}</flux:textarea><flux:button type="submit" variant="primary">Save</flux:button></form></x-layouts.app>
@@ -0,0 +1 @@
<x-layouts.app :title="__('Blog')"><div class="flex items-center justify-between mb-6"><div><h1 class="text-2xl font-semibold">Blog</h1><p class="text-sm text-zinc-500">Manage publishing blog.</p></div><flux:button variant="primary" :href="route('administration.blog.create')" wire:navigate>Create</flux:button></div>@if(session('status'))<div class="mb-4 rounded border border-green-300 bg-green-50 p-3 text-green-800">{{ session('status') }}</div>@endif<div class="overflow-hidden rounded-xl border border-zinc-200 bg-white"><table class="w-full text-sm"><thead class="bg-zinc-50"><tr><th class="p-3 text-left">Name / title</th><th class="p-3 text-left">Status</th><th class="p-3 text-right">Actions</th></tr></thead><tbody>@forelse($records as $record)<tr class="border-t"><td class="p-3 font-medium">{{ $record->title ?? $record->name }}</td><td class="p-3">{{ $record->status ?? ($record->is_active ? 'Active' : 'Inactive') }}</td><td class="p-3 text-right"><flux:button size="sm" :href="route('administration.blog.edit', $record)" wire:navigate>Edit</flux:button><form class="inline" method="POST" action="{{ route('administration.blog.destroy', $record) }}">@csrf @method('DELETE')<flux:button size="sm" variant="danger" type="submit">Delete</flux:button></form></td></tr>@empty<tr><td colspan="3" class="p-6 text-center text-zinc-500">No records yet.</td></tr>@endforelse</tbody></table></div><div class="mt-4">{{ $records->links() }}</div></x-layouts.app>
@@ -0,0 +1 @@
<x-layouts.app :title="__('Blog')"><div class="mx-auto max-w-5xl"><h1 class="mb-8 text-4xl font-bold">Blog</h1><div class="grid gap-6 md:grid-cols-2">@foreach($records as $record)<article class="rounded-xl border p-6"><h2 class="text-xl font-semibold"><a href="{{ route('blog.public.show',$record->slug) }}">{{ $record->title }}</a></h2><p class="mt-2 text-zinc-600">{{ $record->excerpt }}</p></article>@endforeach</div><div class="mt-8">{{ $records->links() }}</div></div></x-layouts.app>
@@ -0,0 +1 @@
<x-layouts.app :title="$record->title"><article class="mx-auto max-w-3xl"><h1 class="text-4xl font-bold">{{ $record->title }}</h1><p class="mt-3 text-zinc-500">{{ optional($record->published_at)->format('j F Y') }}</p><div class="prose mt-8 max-w-none">{!! nl2br(e($record->content)) !!}</div></article></x-layouts.app>