Builder administration area

* Page builder foundation
* Form builder document type
* Dashboard builder document type
* Report builder document type
* Menu builder document type
* Email builder document type
* Query builder document type
* Workflow builder document type
* Reusable component registry
* Form-field registry
* Dashboard-widget registry
* Hero, heading, and rich-content components
* JSON document schema
* Saved builder documents
* Draft, published, and archived states
* Document version history
* Reusable builder templates
* Component rendering service
* Extensible BuilderComponent contract
* Authenticated Builder REST endpoints
* Administration navigation
* Builder permissions
* Module registration and test
This commit is contained in:
Mark Gregory
2026-07-24 13:29:58 +01:00
parent f30fb6384a
commit 412e8134a1
25 changed files with 335 additions and 43 deletions
@@ -0,0 +1,16 @@
<?php
namespace Modules\Builder\Services;
use Illuminate\Support\Facades\DB;
use Modules\Builder\Models\BuilderDocument;
final class BuilderDocumentService
{
public function save(BuilderDocument $document, array $payload, ?int $userId=null): BuilderDocument
{
return DB::transaction(function () use ($document,$payload,$userId) {
if ($document->exists && $document->isDirty()) $document->versions()->create(['version'=>$document->version,'document'=>$document->getOriginal('document') ?: [],'settings'=>$document->getOriginal('settings') ?: [],'created_by'=>$userId]);
$document->fill($payload); $document->updated_by=$userId;
if (!$document->exists) $document->created_by=$userId; else $document->version++;
$document->save(); return $document->refresh();
});
}
}