/** * Remove a note from an outline (without removing the note itself) * * @param int $outlineId The outline ID * @param int $noteId The note ID * * @return Response A JSON encoded response message */ public function getOutlineDetachNote($outlineId, $noteId) { if (!$outlineId || !$noteId) { return response()->json(['message', 'Some ID was empty'], 404); } $outline = Outline::find($outlineId); $outline->notes()->detach($noteId); return response()->json(['message', 'Removed note from outliner']); }
/** * Inserts a post into the database * * @param Request $request * * @return Response */ public function postCreate(Request $request) { // Insert a note into the db // New tags have ID = -1! $validator = Validator::make($request->all(), ['title' => 'required|max:255', 'content' => 'required|min:50']); if ($validator->fails()) { if ($request->outlineId > 0) { return redirect('/notes/create/' . $request->outlineId)->withErrors($validator)->withInput(); } else { return redirect('/notes/create')->withErrors($validator)->withInput(); } } $note = new Note(); $note->title = $request->title; $note->content = $request->content; $note->save(); // Now fill the join table if (count($request->tags) > 0) { foreach ($request->tags as $tagname) { $tag = Tag::firstOrCreate(["name" => $tagname]); $note->tags()->attach($tag->id); } } if (count($request->references) > 0) { foreach ($request->references as $referenceId) { try { Reference::findOrFail($referenceId); // If this line is executed the model exists $note->references()->attach($referenceId); } catch (ModelNotFoundException $e) { // Do nothing } } } if ($request->outlineId > 0) { $outline = Outline::find($request->outlineId); // Which index should we use? Of course the last. $noteIndex = count($outline->customFields) + count($outline->notes) + 1; // Attach to this outline $outline = Outline::find($request->outlineId)->notes()->attach($note, ['index' => $noteIndex]); return redirect(url('/notes/create/' . $request->outlineId)); } // Now redirect to note create as the user // definitely wants to add another note. return redirect(url('/notes/create')); }
public function get($id) { $outlines = Outline::find($id); return $outlines; }
/** * Updates an outline record in the database * * @param Request $request * @param integer $id Outline id * * @return Response */ public function postEdit(Request $request, $id) { if (!$id || $id <= 0) { return redirect('outlines/create')->withInput(); } $validator = Validator::make($request->all(), ['name' => 'required|min:3|max:255', 'description' => 'min:3']); if ($validator->fails()) { return redirect('/outlines/edit/' . $id)->withErrors($validator)->withInput(); } // If everything passed let's edit! $outline = Outline::find($id); if (count($request->tags) > 0) { $tagIDs = []; foreach ($request->tags as $tagname) { $tag = Tag::firstOrCreate(["name" => $tagname]); $tagIDs[] = $tag->id; } // Sync tag list $outline->tags()->sync($tagIDs); } else { // Sync with empty array to remove all $outline->tags()->sync([]); } if (count($request->references) > 0) { // Same for references $referenceIDs = []; foreach ($request->references as $referenceId) { try { $ref = Reference::findOrFail($referenceId); // If this line is executed the model exists $referenceIDs[] = $ref->id; } catch (ModelNotFoundException $e) { // Do nothing } } $outline->references()->sync($referenceIDs); } else { // Sync with empty array to remove all $outline->references()->sync([]); } $outline->name = $request->name; $outline->description = $request->description; $outline->save(); if ($request->noteAction == 3) { foreach ($outline->notes as $note) { foreach ($outline->references as $reference) { if (!$note->references->contains($reference->id)) { $note->references()->attach($reference->id); } } foreach ($outline->tags as $tag) { if (!$note->tags->contains($tag->id)) { $note->tags()->attach($tag->id); } } } } elseif ($request->noteAction == 2) { $ref = []; $t = []; foreach ($outline->references as $reference) { $ref[] = $reference->id; } foreach ($outline->tags as $tag) { $t[] = $tag->id; } foreach ($outline->notes as $note) { $note->references()->sync($ref); $note->tags()->sync($t); } } return redirect(url('/outlines/show/' . $id)); }