diff options
Diffstat (limited to 'src/Wallabag/AnnotationBundle/Controller')
-rw-r--r-- | src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php b/src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php index c13a034f..2b4b0e8d 100644 --- a/src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php +++ b/src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php | |||
@@ -7,6 +7,8 @@ use Symfony\Component\HttpFoundation\JsonResponse; | |||
7 | use Symfony\Component\HttpFoundation\Request; | 7 | use Symfony\Component\HttpFoundation\Request; |
8 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; | 8 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; |
9 | use Wallabag\AnnotationBundle\Entity\Annotation; | 9 | use Wallabag\AnnotationBundle\Entity\Annotation; |
10 | use Wallabag\AnnotationBundle\Form\EditAnnotationType; | ||
11 | use Wallabag\AnnotationBundle\Form\NewAnnotationType; | ||
10 | use Wallabag\CoreBundle\Entity\Entry; | 12 | use Wallabag\CoreBundle\Entity\Entry; |
11 | 13 | ||
12 | class WallabagAnnotationController extends FOSRestController | 14 | class WallabagAnnotationController extends FOSRestController |
@@ -49,25 +51,25 @@ class WallabagAnnotationController extends FOSRestController | |||
49 | $data = json_decode($request->getContent(), true); | 51 | $data = json_decode($request->getContent(), true); |
50 | 52 | ||
51 | $em = $this->getDoctrine()->getManager(); | 53 | $em = $this->getDoctrine()->getManager(); |
52 | |||
53 | $annotation = new Annotation($this->getUser()); | 54 | $annotation = new Annotation($this->getUser()); |
55 | $annotation->setEntry($entry); | ||
54 | 56 | ||
55 | $annotation->setText($data['text']); | 57 | $form = $this->get('form.factory')->createNamed('', NewAnnotationType::class, $annotation, [ |
56 | if (array_key_exists('quote', $data)) { | 58 | 'csrf_protection' => false, |
57 | $annotation->setQuote($data['quote']); | 59 | 'allow_extra_fields' => true, |
58 | } | 60 | ]); |
59 | if (array_key_exists('ranges', $data)) { | 61 | $form->submit($data); |
60 | $annotation->setRanges($data['ranges']); | ||
61 | } | ||
62 | 62 | ||
63 | $annotation->setEntry($entry); | 63 | if ($form->isValid()) { |
64 | $em->persist($annotation); | ||
65 | $em->flush(); | ||
64 | 66 | ||
65 | $em->persist($annotation); | 67 | $json = $this->get('serializer')->serialize($annotation, 'json'); |
66 | $em->flush(); | ||
67 | 68 | ||
68 | $json = $this->get('serializer')->serialize($annotation, 'json'); | 69 | return JsonResponse::fromJsonString($json); |
70 | } | ||
69 | 71 | ||
70 | return (new JsonResponse())->setJson($json); | 72 | return $form; |
71 | } | 73 | } |
72 | 74 | ||
73 | /** | 75 | /** |
@@ -86,16 +88,23 @@ class WallabagAnnotationController extends FOSRestController | |||
86 | { | 88 | { |
87 | $data = json_decode($request->getContent(), true); | 89 | $data = json_decode($request->getContent(), true); |
88 | 90 | ||
89 | if (!is_null($data['text'])) { | 91 | $form = $this->get('form.factory')->createNamed('', EditAnnotationType::class, $annotation, [ |
90 | $annotation->setText($data['text']); | 92 | 'csrf_protection' => false, |
91 | } | 93 | 'allow_extra_fields' => true, |
94 | ]); | ||
95 | $form->submit($data); | ||
92 | 96 | ||
93 | $em = $this->getDoctrine()->getManager(); | 97 | if ($form->isValid()) { |
94 | $em->flush(); | 98 | $em = $this->getDoctrine()->getManager(); |
99 | $em->persist($annotation); | ||
100 | $em->flush(); | ||
95 | 101 | ||
96 | $json = $this->get('serializer')->serialize($annotation, 'json'); | 102 | $json = $this->get('serializer')->serialize($annotation, 'json'); |
97 | 103 | ||
98 | return (new JsonResponse())->setJson($json); | 104 | return JsonResponse::fromJsonString($json); |
105 | } | ||
106 | |||
107 | return $form; | ||
99 | } | 108 | } |
100 | 109 | ||
101 | /** | 110 | /** |