public function save(ContentInterface $content) { if (!$content->getId()) { $content->setAuthor($this->tokenStorage->getToken()->getUser()); } return parent::save($content); }
/** * View a single content page * * This Controller action is being routed to from either our custom ContentRouter, * or the ExceptionController. * @see Opifer\SiteBundle\Router\ContentRouter * * @param Request $request * @param ContentInterface $content * @param int $statusCode * * @return Response * * @throws \Exception */ public function viewAction(Request $request, ContentInterface $content, $statusCode = 200) { $version = $request->query->get('_version'); $debug = $this->getParameter('kernel.debug'); $contentDate = $content->getUpdatedAt(); $templateDate = $content->getTemplate()->getUpdatedAt(); $date = $contentDate > $templateDate ? $contentDate : $templateDate; $response = new Response(); $response->setLastModified($date); $response->setPublic(); if (null === $version && false == $debug && $response->isNotModified($request)) { // return the 304 Response immediately return $response; } $version = $request->query->get('_version'); /** @var Environment $environment */ $environment = $this->get('opifer.content.block_environment'); $environment->setObject($content); $response->setStatusCode($statusCode); if (null !== $version && $this->isGranted('ROLE_ADMIN')) { $environment->setDraft(true); } $environment->load(); return $this->render($environment->getView(), $environment->getViewParameters(), $response); }
/** * View a single content page * * This Controller action is being routed to from either our custom ContentRouter, * or the ExceptionController. * @see Opifer\SiteBundle\Router\ContentRouter * * @param Request $request * @param ContentInterface $content * @param int $statusCode * * @return Response * * @throws \Exception */ public function viewAction(Request $request, ContentInterface $content, $statusCode = 200) { $version = $request->query->get('_version'); $response = new Response(); /** @var ContentEnvironment $environment */ $environment = $this->get('opifer.content.block_content_environment'); $response->setStatusCode($statusCode); if (null !== $version && $this->isGranted('ROLE_ADMIN')) { $this->getDoctrine()->getManager()->getFilters()->disable('draftversion'); $environment->load($content->getId(), $version); } else { $environment->load($content->getId()); } return $this->render($environment->getView(), $environment->getViewParameters()); }
/** * View a single content page * * This Controller action is being routed to from either our custom ContentRouter, * or the ExceptionController. * @see Opifer\SiteBundle\Router\ContentRouter * * @param Request $request * @param Content $content * * @return Response */ public function viewAction(Request $request, ContentInterface $content, $statusCode = 200) { $presentation = json_decode($content->getRealPresentation(), true); if (!$presentation) { throw new \Exception('The template ' . $content->getTemplate()->getName() . ' does not have a layout attached.'); } $layout = json_encode($presentation); $layout = $this->get('jms_serializer')->deserialize($layout, $this->container->getParameter('opifer_content.layout_class'), 'json'); // If the layout has an action, forward to that action and pass the layout // and the content. if ($layout->getAction()) { return $this->forward($layout->getAction(), ['content' => $content, 'layout' => $layout]); } $response = new Response(); $response->setStatusCode($statusCode); return $this->render($layout->getFilename(), ['content' => $content, 'layout' => $layout], $response); }
/** * View a single content page * * This Controller action is being routed to from either our custom ContentRouter, * or the ExceptionController. * @see Opifer\SiteBundle\Router\ContentRouter * * @param Request $request * @param ContentInterface $content * @param int $statusCode * * @return Response * * @throws \Exception */ public function viewAction(Request $request, ContentInterface $content, $statusCode = 200) { $version = $request->query->get('_version'); $response = new Response(); /** @var BlockManager $manager */ $manager = $this->get('opifer.content.block_manager'); $block = $content->getBlock(); $response->setStatusCode($statusCode); if (null !== $version && $this->isGranted('ROLE_ADMIN')) { $block = $content->getBlock(); $this->getDoctrine()->getManager()->getFilters()->disable('draftversion'); $manager->revert($block, $version); } /** @var BlockServiceInterface $service */ $service = $manager->getService($block); $service->setView($content->getTemplate()->getView()); return $service->execute($block); }
public function getBreadcrumbs(ContentInterface $content) { $return = []; $breadcrumbs = $content->getBreadcrumbs(); if (sizeof($breadcrumbs) == 1 && key($breadcrumbs) == 'index') { return $return; } $index = 0; foreach ($breadcrumbs as $slug => $title) { if (substr($slug, -6) == '/index') { continue; } $indexSlug = sizeof($breadcrumbs) - 1 == $index ? $slug : $slug . '/index'; if ($content = $this->contentManager->getRepository()->findOneBy(['slug' => $indexSlug])) { $return[$slug . '/'] = $content->getTitle(); } $index++; } return $return; }
/** * Duplicate a content item * * @param ContentInterface $content * * @return ContentInterface $duplicate */ public function duplicate(ContentInterface $content) { //duplicate content $duplicatedContent = clone $content; $duplicatedContent->setTitle(sprintf("%s copy %s", $duplicatedContent->getTitle(), date('r'))); $duplicatedContent->setSlug(null); $duplicatedContent->setActive(false); $duplicatedContent->setCreatedAt(new \DateTime()); //get valueset to clone if (null !== ($valueset = $content->getValueSet())) { //clone valueset $duplicatedValueset = clone $valueset; $this->detachAndPersist($duplicatedValueset); $duplicatedContent->setValueSet($duplicatedValueset); } $duplicatedContent->setBlocks(null); $this->detachAndPersist($duplicatedContent); if ($valueset) { //iterate values, clone each and assign duplicate valueset to it foreach ($valueset->getValues() as $value) { //skip empty attributes if (is_null($value->getId())) { continue; } $duplicatedValue = clone $value; $duplicatedValue->setValueSet($duplicatedValueset); $this->detachAndPersist($duplicatedValue); } } $this->em->flush(); return $duplicatedContent; }
/** * {@inheritDoc} */ protected function getMainBlock() { return $this->content->getBlock(); }
/** * Duplicate a content item * * @param ContentInterface $content */ public function duplicate(ContentInterface $content) { //get valueset to clone $valueset = $content->getValueSet(); //clone valueset $duplicatedValueset = clone $valueset; $this->detachAndPersist($duplicatedValueset); //duplicate content $duplicatedContent = clone $content; $duplicatedContent->setSlug(null); $duplicatedContent->setValueSet($duplicatedValueset); $this->detachAndPersist($duplicatedContent); //iterate values, clone each and assign duplicate valueset to it foreach ($valueset->getValues() as $value) { //skip empty attributes if (is_null($value->getId())) { continue; } $duplicatedValue = clone $value; $duplicatedValue->setValueSet($duplicatedValueset); $this->detachAndPersist($duplicatedValue); } $this->em->flush(); return $duplicatedContent->getId(); }
/** * @param string|ContentInterface $content * @param ContentInterface $child * * @return bool */ public function isParentOf($content, ContentInterface $child) { if ($child instanceof Template) { return false; } $parents = $child->getParents(); foreach ($parents as $parent) { if (is_string($content)) { if (substr($content, 0, strlen($parent->getSlug())) === $parent->getSlug()) { return true; } } else { if ($parent->getId() == $content->getId()) { return true; } } } return false; }
/** * Duplicate a content item * * @param ContentInterface $content * @param NestedValue $nestedIn */ public function duplicate(ContentInterface $content, NestedValue $nestedIn = null) { //get valueset to clone $valueset = $content->getValueSet(); //clone valueset $duplicatedValueset = clone $valueset; $this->detachAndPersist($duplicatedValueset); //duplicate content $duplicatedContent = clone $content; $duplicatedContent->setSlug(null); $duplicatedContent->setValueSet($duplicatedValueset); if (!is_null($nestedIn)) { $duplicatedContent->setNestedIn($nestedIn); } $this->detachAndPersist($duplicatedContent); //iterate values, clone each and assign duplicate valueset to it foreach ($valueset->getValues() as $value) { //skip empty attributes if (is_null($value->getId())) { continue; } $duplicatedValue = clone $value; $duplicatedValue->setValueSet($duplicatedValueset); $this->detachAndPersist($duplicatedValue); //if type nested, find content that has nested_in value same as id of value if ($value instanceof \Opifer\EavBundle\Entity\NestedValue) { $nestedContents = $this->getRepository()->findby(['nestedIn' => $value->getId()]); foreach ($nestedContents as $nestedContent) { $this->duplicate($nestedContent, $duplicatedValue); } } } $this->em->flush(); return $duplicatedContent->getId(); }
/** * {@inheritDoc} */ public function getMainBlock() { return $this->content->getBlock(); }