From 9f6024049bf0d44997a46479550773f1c4cffbdc Mon Sep 17 00:00:00 2001 From: afornerot Date: Wed, 17 Jun 2020 11:44:47 +0200 Subject: [PATCH] =?UTF-8?q?r=C3=A9ponse=20sur=20commentaire=20d'article=20?= =?UTF-8?q?de=20blog=20(ref=20#157)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/BlogcommentController.php | 53 ++++++++++++++ .../PortalBundle/Entity/Blogcomment.php | 73 +++++++++++++++++++ .../PortalBundle/Resources/config/routing.yml | 8 ++ .../views/Blogarticle/view.html.twig | 39 +++++++--- 4 files changed, 164 insertions(+), 9 deletions(-) diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/BlogcommentController.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/BlogcommentController.php index f0e044a3..d034eb18 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/BlogcommentController.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/BlogcommentController.php @@ -83,6 +83,59 @@ class BlogcommentController extends Controller ]); } + public function replyAction(Request $request,$idarticle,$idcomment,$access="config") + { + $em = $this->getDoctrine()->getManager(); + + $entity = new Blogcomment(); + + // Recherche de l'article associé + $blogarticle=$em->getRepository("CadolesPortalBundle:Blogarticle")->find($idarticle); + if($blogarticle) $entity->setBlogarticle($blogarticle); + + // Recherche du commentaire parent + $parent=$em->getRepository("CadolesPortalBundle:Blogcomment")->find($idcomment); + if($parent) $entity->setParent($parent); + + $entity->setName("Réponse"); + + $form = $this->entityForm($entity,$access); + $form->handleRequest($request); + + if ($form->isValid()) { + $entity->setUser($this->getUser()); + $entity->setSubmit(new \Datetime()); + + $em->persist($entity); + $em->flush(); + + foreach($entity->getBlogarticle()->getBlog()->getGroups() as $group) { + if($group->getFgcanshare()) { + $url=$this->generateUrl('cadoles_core_redirect', ['route'=>'cadoles_portal_user_blogarticle_view','id'=>$entity->getBlogarticle()->getId()], UrlGeneratorInterface::ABSOLUTE_URL); + $message="Création commentaire article
".$entity->getName().""; + $usergroup=$em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$this->getUser()]); + if($usergroup) { + $key=$usergroup->getKeyvalue(); + $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key,$this->getUser()->getId(),$group->getId(),$message); + } + } + } + + return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_blogarticle_view',["id"=>$entity->getBlogarticle()->getId()])); + } + + return $this->render($this->labelentity.':edit.html.twig', [ + 'useheader' => ($access=="config"), + 'usemenu' => false, + 'usesidebar' => ($access=="config"), + 'maxwidth' => ($access=="user"), + 'entity' => $entity, + 'mode' => "submit", + 'access' => $access, + 'form' => $form->createView() + ]); + } + public function updateAction(Request $request, $id,$access="config") { $em = $this->getDoctrine()->getManager(); diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Entity/Blogcomment.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Entity/Blogcomment.php index 0280a481..84119154 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Entity/Blogcomment.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Entity/Blogcomment.php @@ -56,7 +56,15 @@ class Blogcomment */ private $blogarticle; + /** + * @ORM\ManyToOne(targetEntity="Cadoles\PortalBundle\Entity\Blogcomment", inversedBy="childs") + */ + private $parent; + /** + * @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Blogcomment", mappedBy="parent", cascade={"persist"}, orphanRemoval=true) + */ + protected $childs; /** * Get id @@ -188,4 +196,69 @@ class Blogcomment { return $this->blogarticle; } + /** + * Constructor + */ + public function __construct() + { + $this->childs = new \Doctrine\Common\Collections\ArrayCollection(); + } + + /** + * Set parent + * + * @param \Cadoles\PortalBundle\Entity\Blogcomment $parent + * + * @return Blogcomment + */ + public function setParent(\Cadoles\PortalBundle\Entity\Blogcomment $parent = null) + { + $this->parent = $parent; + + return $this; + } + + /** + * Get parent + * + * @return \Cadoles\PortalBundle\Entity\Blogcomment + */ + public function getParent() + { + return $this->parent; + } + + /** + * Add child + * + * @param \Cadoles\PortalBundle\Entity\Blogcomment $child + * + * @return Blogcomment + */ + public function addChild(\Cadoles\PortalBundle\Entity\Blogcomment $child) + { + $this->childs[] = $child; + + return $this; + } + + /** + * Remove child + * + * @param \Cadoles\PortalBundle\Entity\Blogcomment $child + */ + public function removeChild(\Cadoles\PortalBundle\Entity\Blogcomment $child) + { + $this->childs->removeElement($child); + } + + /** + * Get childs + * + * @return \Doctrine\Common\Collections\Collection + */ + public function getChilds() + { + return $this->childs; + } } diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/config/routing.yml b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/config/routing.yml index b1f73f56..187670a7 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/config/routing.yml +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/config/routing.yml @@ -566,6 +566,10 @@ cadoles_portal_config_blogcomment_submit: path: /config/blogcomment/submit/{idarticle} defaults: { _controller: CadolesPortalBundle:Blogcomment:submit, access: config} +cadoles_portal_config_blogcomment_reply: + path: /config/blogcomment/reply/{idarticle}/{idcomment} + defaults: { _controller: CadolesPortalBundle:Blogcomment:reply, access: config} + cadoles_portal_config_blogcomment_update: path: /config/blogcomment/update/{id} defaults: { _controller: CadolesPortalBundle:Blogcomment:update, access: config } @@ -583,6 +587,10 @@ cadoles_portal_user_blogcomment_submit: path: /user/blogcomment/submit/{idarticle} defaults: { _controller: CadolesPortalBundle:Blogcomment:submit, access: user } +cadoles_portal_user_blogcomment_reply: + path: /user/blogcomment/reply/{idarticle}/{idcomment} + defaults: { _controller: CadolesPortalBundle:Blogcomment:reply, access: user} + cadoles_portal_user_blogcomment_update: path: /user/blogcomment/update/{id} defaults: { _controller: CadolesPortalBundle:Blogcomment:update, access: user } diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Blogarticle/view.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Blogarticle/view.html.twig index 796d5b8e..5297d934 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Blogarticle/view.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Blogarticle/view.html.twig @@ -78,16 +78,37 @@ {% endif %} {% if not entity.blogcomments is empty %} {% for comment in entity.blogcomments|reverse %} -
-

{{comment.name}}

- publié par {{ comment.user.username }} le {{ comment.submit|date("d/m/Y à H:i") }} - {% if canadd or app.user==comment.user%} - + {% if comment.parent is empty %} +
+

{{comment.name}}

+ publié par {{ comment.user.username }} le {{ comment.submit|date("d/m/Y à H:i") }} + {% if canadd or app.user==comment.user%} + + {% endif %} +
+
+ {{ comment.description | raw }} +
+ +
+ {% for reply in comment.childs|reverse %} +
+

{{reply.name}}

+ publié par {{ reply.user.username }} le {{ reply.submit|date("d/m/Y à H:i") }} + {% if canadd or app.user==reply.user%} + + {% endif %} +
+
+ {{ reply.description | raw }} +
+ {% endfor %} +
+ + {% if entity.fgcomment %} + Répondre {% endif %} -
-
- {{ comment.description | raw }} -
+ {% endif %} {% endfor %} {% endif %}