21 lines
1.2 KiB
PHP
21 lines
1.2 KiB
PHP
<?php
|
|
namespace Modules\Content\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
use Modules\Content\Models\ContentDocument;
|
|
|
|
final class ContentDocumentController extends Controller
|
|
{
|
|
public function index(): View { return view('content::admin.index',['documents'=>ContentDocument::query()->with('type')->withCount('placements')->orderBy('title')->paginate(30)]); }
|
|
public function edit(ContentDocument $document): View { $document->load('type','placements'); return view('content::admin.edit',['document'=>$document]); }
|
|
public function update(Request $request, ContentDocument $document): RedirectResponse
|
|
{
|
|
$validated=$request->validate(['title'=>['required','string','max:255'],'status'=>['required','in:draft,published'],'data_json'=>['required','json']]);
|
|
$document->update(['title'=>$validated['title'],'status'=>$validated['status'],'published_at'=>$validated['status']==='published'?($document->published_at??now()):null,'data'=>json_decode($validated['data_json'],true,512,JSON_THROW_ON_ERROR),'updated_by'=>$request->user()?->id]);
|
|
return back()->with('status','Content document updated.');
|
|
}
|
|
}
|