frame('calendar.settings.subscribe'); } /* show “Subscribe to a calendar” form */ public function subscribeForm() { return $this->frame( 'calendar.settings.subscribe', [ 'title' => 'Subscribe to a calendar', 'sub' => 'Add an `.ics` calender from another service' ]); } /* handle POST from the subscribe form */ public function subscribeStore(Request $request) { $data = $request->validate([ 'source' => ['required', 'url'], 'displayname' => ['nullable', 'string', 'max:100'], 'color' => ['nullable', 'regex:/^#[0-9A-F]{6}$/i'], ]); // create the calendarsubscription and calendar_meta rows in one call via Subscription model Subscription::createWithMeta( $request->user(), [ 'source' => $data['source'], 'displayname' => $data['displayname'] ?: $data['source'], 'calendarcolor' => $data['color'] ?? '#1a1a1a', // you can add 'refreshrate' => 'P1D' here if you like ] ); return redirect() ->route('calendar.index') ->with('toast', __('Subscription added successfully!')); } /** * content frame handler */ private function frame(?string $view = null, array $data = []) { return view('calendar.settings.index', [ 'view' => $view, 'data' => $data, ]); } }