Ejemplo n.º 1
0
 public function getClassContentClassnamesByCategory($name)
 {
     $category = $this->getCategory($name);
     if (null === $category) {
         throw new \InvalidArgumentException("`{$name}` is not a valid classcontent category.");
     }
     $classnames = [];
     foreach ($category->getBlocks() as $block) {
         $classnames[] = AbstractClassContent::getClassnameByContentType($block->type);
     }
     return $classnames;
 }
 /**
  * Creates classcontent according to provided type.
  *
  * @param string  $type
  * @param Request $request
  *
  * @return Symfony\Component\HttpFoundation\Response
  *
  * @Rest\Security("is_fully_authenticated() & has_role('ROLE_API_USER')")
  */
 public function postAction($type, Request $request)
 {
     $classname = AbstractClassContent::getClassnameByContentType($type);
     $content = new $classname();
     $this->granted('CREATE', $content);
     $this->getDoctrine()->getManager()->persist($content);
     $content->setDraft($this->getClassContentManager()->getDraft($content, true));
     $this->getDoctrine()->getManager()->flush();
     $data = $request->request->all();
     if (0 < count($data)) {
         $data = array_merge($data, ['type' => $type, 'uid' => $content->getUid()]);
         $this->updateClassContent($type, $data['uid'], $data);
         $this->getDoctrine()->getManager()->flush();
     }
     return $this->createJsonResponse(null, 201, ['BB-RESOURCE-UID' => $content->getUid(), 'Location' => $this->get('router')->generate('bb.rest.classcontent.get', ['version' => $request->attributes->get('version'), 'type' => $type, 'uid' => $content->getUid()])]);
 }
 /**
  * Returns classcontent if couple (type;uid) is valid.
  *
  * @param string $type short namespace of a classcontent
  *                     (full: BackBee\ClassContent\Block\paragraph => short: Block/paragraph)
  * @param string $uid
  *
  * @return AbstractClassContent
  */
 public function findOneByTypeAndUid($type, $uid)
 {
     $content = null;
     $classname = AbstractClassContent::getClassnameByContentType($type);
     if (null === ($content = $this->findOneBy(['_uid' => $uid]))) {
         throw new \InvalidArgumentException(sprintf('No `%s` exists with uid `%s`.', $classname, $uid));
     }
     return $content;
 }
Ejemplo n.º 4
0
 /**
  * Returns every pages that contains provided classcontent.
  *
  * @param string $contentType
  * @param string $contentUid
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 private function doGetCollectionByContent($contentType, $contentUid)
 {
     $content = null;
     $classname = AbstractClassContent::getClassnameByContentType($contentType);
     $em = $this->getDoctrine()->getManager();
     try {
         $content = $em->find($classname, $contentUid);
     } catch (ClassNotFoundException $e) {
         throw new NotFoundHttpException("No classcontent found with provided type (:{$contentType})");
     }
     if (null === $content) {
         throw new NotFoundHttpException("No `{$classname}` exists with uid `{$contentUid}`");
     }
     $pages = $em->getRepository("BackBee\\CoreDomain\\ClassContent\\AbstractClassContent")->findPagesByContent($content);
     $response = $this->createResponse($this->formatCollection($pages));
     if (0 < count($pages)) {
         $response->headers->set('Content-Range', '0-' . (count($pages) - 1) . '/' . count($pages));
     }
     return $response;
 }
Ejemplo n.º 5
0
 /**
  * Runs revert post action on content and its draft.
  *
  * @param  AbstractClassContent $content
  * @param  Revision             $draft
  *
  * @return ClassContentManager
  */
 private function revertPostProcess(AbstractClassContent $content, Revision $draft)
 {
     $data = $draft->jsonSerialize();
     if (0 === count($data['parameters']) && (0 === count($data['elements']) || $content instanceof ContentSet && $data['elements']['current'] === $data['elements']['draft'])) {
         $this->entityManager->remove($draft);
         if (AbstractClassContent::STATE_NEW === $content->getState()) {
             $classname = AbstractClassContent::getClassnameByContentType($content->getContentType());
             $this->entityManager->getRepository($classname)->deleteContent($content);
         }
     }
     return $this;
 }
 /**
  * Occurs on rest.controller.classcontentcontroller.getAction.postcall events.
  *
  * @param Event $event
  */
 public function onPostCall(Event $event)
 {
     $response = $event->getResponse();
     if ($response->headers->get('content-type') === 'text/html') {
         return;
     }
     $application = $event->getApplication();
     $renderer = $application->getRenderer();
     $content = json_decode($response->getContent());
     $result = false;
     if ($content instanceof \StdClass) {
         if (isset($content->type) && isset($content->parameters)) {
             if (isset($content->parameters->rendermode)) {
                 $result = true;
             }
         }
     }
     if (!$result) {
         return;
     }
     $rendermodeParam = $content->parameters->rendermode;
     $classname = AbstractClassContent::getClassnameByContentType($content->type);
     $modes = ['default' => 'Default mode'];
     foreach ($renderer->getAvailableRenderMode(new $classname()) as $mode) {
         $modes[$mode] = ucfirst(str_replace('_', ' ', $mode));
     }
     $rendermodeParam->options = $modes;
     $response->setContent(json_encode($content));
 }