예제 #1
0
 public static function onRender(RendererEvent $event)
 {
     $renderer = $event->getRenderer();
     self::$application = $event->getApplication();
     self::$em = self::$application->getEntityManager();
     $content = $renderer->getObject();
     $mediaRepository = self::$em->getRepository('BackBee\\ClassContent\\Media\\Image');
     $mediasParam = $content->getParamValue('medias');
     $linksParam = $content->getParamValue('links');
     $slides = [];
     $i = 0;
     foreach ($mediasParam as $mediaParam) {
         if (isset($mediaParam['uid'])) {
             $media = $mediaRepository->find($mediaParam['uid']);
             if (null !== $media) {
                 $slides[$i] = [];
                 $slides[$i]['media'] = $media;
                 if (isset($linksParam[$i])) {
                     $slides[$i]['link'] = self::getLink($linksParam[$i]);
                 }
             }
         }
         $i++;
     }
     $renderer->assign('slides', $slides);
 }
 public static function onRender(RendererEvent $event)
 {
     self::$renderer = $event->getRenderer();
     self::$application = self::$renderer->getApplication();
     self::$em = self::$application->getEntityManager();
     $content = $event->getTarget();
     $parentNode = self::getParentNode($content->getParamValue('parent_node'));
     $selector = ['parentnode' => [$parentNode !== null ? $parentNode->getUid() : null]];
     $contents = self::$em->getRepository('BackBee\\ClassContent\\AbstractClassContent')->getSelection($selector, in_array('multipage', $content->getParamValue('multipage')), in_array('recursive', $content->getParamValue('recursive')), (int) $content->getParamValue('start'), (int) $content->getParamValue('limit'), self::$application->getBBUserToken() === null, false, (array) $content->getParamValue('content_to_show'), (int) $content->getParamValue('delta'));
     $count = $contents instanceof Paginator ? $contents->count() : count($contents);
     self::$renderer->assign('contents', $contents);
     self::$renderer->assign('nbContents', $count);
     self::$renderer->assign('parentNode', $parentNode);
 }
예제 #3
0
 /**
  * Computes the URL of a page according to a scheme.
  *
  * @param array         $scheme  The scheme to apply
  * @param Page          $page    The page
  * @param  AbstractClassContent $content The optionnal main content of the page
  * @return string        The generated URL
  */
 private function doGenerate($scheme, Page $page, AbstractClassContent $content = null)
 {
     $replacement = ['$parent' => $page->isRoot() ? '' : $page->getParent()->getUrl(false), '$title' => StringUtils::urlize($page->getTitle()), '$datetime' => $page->getCreated()->format('ymdHis'), '$date' => $page->getCreated()->format('ymd'), '$time' => $page->getCreated()->format('His')];
     $matches = [];
     if (preg_match_all('/(\\$content->[a-z]+)/i', $scheme, $matches)) {
         foreach ($matches[1] as $pattern) {
             $property = explode('->', $pattern);
             $property = array_pop($property);
             try {
                 $replacement[$pattern] = StringUtils::urlize($content->{$property});
             } catch (\Exception $e) {
                 $replacement[$pattern] = '';
             }
         }
     }
     $matches = [];
     if (preg_match_all('/(\\$ancestor\\[([0-9]+)\\])/i', $scheme, $matches)) {
         foreach ($matches[2] as $level) {
             $ancestor = $this->application->getEntityManager()->getRepository('BackBee\\CoreDomain\\NestedNode\\Page')->getAncestor($page, $level);
             if (null !== $ancestor && $page->getLevel() > $level) {
                 $replacement['$ancestor[' . $level . ']'] = $ancestor->getUrl(false);
             } else {
                 $replacement['$ancestor[' . $level . ']'] = '';
             }
         }
     }
     $url = preg_replace('/\\/+/', '/', str_replace(array_keys($replacement), array_values($replacement), $scheme));
     return $this->getUniqueness($page, $url);
 }
예제 #4
0
 /**
  * Return the current root of the page to be rendered.
  *
  * @return null|BackBee\CoreDomain\NestedNode\Page
  */
 public function getCurrentRoot()
 {
     if (null !== $this->getCurrentPage()) {
         return $this->getCurrentPage()->getRoot();
     } elseif (null === $this->getCurrentSite()) {
         return;
     } else {
         return $this->application->getEntityManager()->getRepository('BackBee\\CoreDomain\\NestedNode\\Page')->getRoot($this->getCurrentSite());
     }
 }