From d01091d5a6e042b872a4ad8f4ee3fecbc1f5767b Mon Sep 17 00:00:00 2001 From: Daan Meijer Date: Wed, 17 Jun 2026 00:27:37 +0200 Subject: [PATCH] split extra screens from dynamic single --- .../DynamicInvitationController.php | 14 ++ app/Http/Controllers/LedgerController.php | 8 +- resources/js/pages/Dynamics/Invite.vue | 172 ++++++++++++++++++ resources/js/pages/Dynamics/Show.vue | 87 ++------- resources/js/pages/Ledgers/Create.vue | 40 ++++ routes/web.php | 10 +- 6 files changed, 251 insertions(+), 80 deletions(-) create mode 100644 resources/js/pages/Dynamics/Invite.vue create mode 100644 resources/js/pages/Ledgers/Create.vue diff --git a/app/Http/Controllers/DynamicInvitationController.php b/app/Http/Controllers/DynamicInvitationController.php index 2253972..350fdbe 100644 --- a/app/Http/Controllers/DynamicInvitationController.php +++ b/app/Http/Controllers/DynamicInvitationController.php @@ -9,9 +9,23 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; +use Inertia\Inertia; class DynamicInvitationController extends Controller { + /** + * Show the form for creating a new invitation. + */ + public function create(Request $request, Dynamic $dynamic) + { + // Authorize - only owners can view the invite page! + $this->authorize('update', $dynamic); + + return Inertia::render('Dynamics/Invite', [ + 'dynamic' => $dynamic, + ]); + } + /** * Store a newly created invitation in storage. */ diff --git a/app/Http/Controllers/LedgerController.php b/app/Http/Controllers/LedgerController.php index 795e6ba..3ec97a4 100644 --- a/app/Http/Controllers/LedgerController.php +++ b/app/Http/Controllers/LedgerController.php @@ -25,9 +25,13 @@ class LedgerController extends Controller /** * Show the form for creating a new resource. */ - public function create() + public function create(Request $request, Dynamic $dynamic) { - // + $this->authorize('update', $dynamic); + + return Inertia::render('Ledgers/Create', [ + 'dynamic' => $dynamic, + ]); } /** diff --git a/resources/js/pages/Dynamics/Invite.vue b/resources/js/pages/Dynamics/Invite.vue new file mode 100644 index 0000000..7bb2212 --- /dev/null +++ b/resources/js/pages/Dynamics/Invite.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/resources/js/pages/Dynamics/Show.vue b/resources/js/pages/Dynamics/Show.vue index efbbb7d..f8d8019 100644 --- a/resources/js/pages/Dynamics/Show.vue +++ b/resources/js/pages/Dynamics/Show.vue @@ -77,82 +77,13 @@ function submitInvite() { - - - - -
-
-
-

- Invite User to Dynamic -

- -
-
- - -
- {{ inviteForm.errors.email }} -
-
- -
- - -
- {{ inviteForm.errors.role }} -
-
- -
- -
-
-
-
+
+ + Invite User + + + Create Ledger +
@@ -193,4 +124,8 @@ function submitInvite() { .c-dynamic-show__settings-btn { @apply inline-flex items-center rounded-md border border-transparent bg-gray-800 px-4 py-2 text-xs font-semibold tracking-widest text-white uppercase transition duration-150 ease-in-out hover:bg-gray-700 focus:bg-gray-700 focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:outline-none active:bg-gray-900 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-white dark:focus:bg-white dark:focus:ring-offset-gray-800 dark:active:bg-gray-300; } + +.c-dynamic-show__action-btn { + @apply inline-flex items-center rounded-md border border-transparent bg-gray-800 px-4 py-2 text-xs font-semibold tracking-widest text-white uppercase transition duration-150 ease-in-out hover:bg-gray-700 focus:bg-gray-700 focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:outline-none active:bg-gray-900 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-white dark:focus:bg-white dark:focus:ring-offset-gray-800 dark:active:bg-gray-300; +} diff --git a/resources/js/pages/Ledgers/Create.vue b/resources/js/pages/Ledgers/Create.vue new file mode 100644 index 0000000..1ae03de --- /dev/null +++ b/resources/js/pages/Ledgers/Create.vue @@ -0,0 +1,40 @@ + + + diff --git a/routes/web.php b/routes/web.php index a0d23a6..247c397 100644 --- a/routes/web.php +++ b/routes/web.php @@ -12,10 +12,16 @@ Route::inertia('/', 'Welcome')->name('home'); Route::middleware(['auth', 'verified'])->group(function () { Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard'); - Route::resource('dynamics', DynamicController::class); - Route::resource('dynamics.ledgers', LedgerController::class)->scoped(); + Route::resource('dynamics', DynamicController::class)->except(['edit', 'update']); + Route::get('/dynamics/{dynamic}/settings', [DynamicController::class, 'edit'])->name('dynamics.edit'); + Route::patch('/dynamics/{dynamic}/settings', [DynamicController::class, 'update'])->name('dynamics.update'); + + Route::resource('dynamics.ledgers', LedgerController::class)->scoped()->except(['create']); + Route::get('/dynamics/{dynamic}/ledgers/create', [LedgerController::class, 'create'])->name('dynamics.ledgers.create'); + Route::resource('dynamics.ledgers.mutations', MutationController::class)->scoped(); + Route::get('/dynamics/{dynamic}/invitations/create', [\App\Http\Controllers\DynamicInvitationController::class, 'create'])->name('dynamics.invitations.create'); Route::post('/dynamics/{dynamic}/invitations', [\App\Http\Controllers\DynamicInvitationController::class, 'store'])->name('dynamics.invitations.store'); Route::post('/chats/{chat}/messages', [MessageController::class, 'store'])->name('chats.messages.store');