Esempio n. 1
0
 /**
  * {@inheritdoc}
  */
 public function generate(PageCollection $pageCollection, \Closure $messageCallback)
 {
     $generatedPages = new PageCollection();
     $sections = [];
     // collects sections
     /* @var $page Page */
     foreach ($pageCollection as $page) {
         if ($page->getSection() != '') {
             $sections[$page->getSection()][] = $page;
         }
     }
     // adds node pages to collection
     if (count($sections) > 0) {
         $menuWeight = 100;
         foreach ($sections as $section => $pages) {
             if (!$pageCollection->has($section . '/index')) {
                 usort($pages, 'PHPoole\\Util::sortByDate');
                 $page = (new Page())->setId(Page::urlize(sprintf('%s/index', $section)))->setPathname(Page::urlize(sprintf('%s', $section)))->setTitle(ucfirst($section))->setNodeType(NodeType::SECTION)->setVariable('pages', $pages)->setVariable('menu', ['main' => ['weight' => $menuWeight]]);
                 $generatedPages->add($page);
             }
             $menuWeight += 10;
         }
     }
     return $generatedPages;
 }
Esempio n. 2
0
 /**
  * {@inheritdoc}
  */
 public function generate(PageCollection $pageCollection, \Closure $messageCallback)
 {
     $generatedPages = new PageCollection();
     if (!$pageCollection->has('index')) {
         $filteredPages = $pageCollection->filter(function (Page $page) {
             return $page->getNodeType() === null && $page->getSection() == $this->config->get('site.paginate.homepage.section') && !empty($page->getBody());
         });
         $pages = $filteredPages->sortByDate()->toArray();
         /* @var $page Page */
         $page = (new Page())->setId('index')->setNodeType(NodeType::HOMEPAGE)->setPathname(Page::urlize(''))->setTitle('Home')->setVariable('pages', $pages)->setVariable('menu', ['main' => ['weight' => 1]]);
         $generatedPages->add($page);
     }
     return $generatedPages;
 }
Esempio n. 3
0
 /**
  * {@inheritdoc}
  */
 public function generate(PageCollection $pageCollection, \Closure $messageCallback)
 {
     $generatedPages = new PageCollection();
     $filteredPages = $pageCollection->filter(function (Page $page) {
         return false !== $page->getTitle();
     });
     /* @var $page Page */
     foreach ($filteredPages as $page) {
         $alteredPage = clone $page;
         $alteredPage->setTitle(strtoupper($page->getTitle()));
         $generatedPages->add($alteredPage);
     }
     return $generatedPages;
 }
Esempio n. 4
0
 /**
  * {@inheritdoc}
  */
 public function generate(PageCollection $pageCollection, \Closure $messageCallback)
 {
     $generatedPages = new PageCollection();
     $filteredPages = $pageCollection->filter(function (Page $page) {
         return in_array($page->getNodeType(), [NodeType::HOMEPAGE, NodeType::SECTION]);
     });
     /* @var $page Page */
     foreach ($filteredPages as $page) {
         if ($this->config->get('site.paginate.disabled')) {
             return $generatedPages;
         }
         $paginateMax = intval($this->config->get('site.paginate.max'));
         $paginatePath = $this->config->get('site.paginate.path');
         $pages = $page->getVariable('pages');
         $path = $page->getPathname();
         // paginate
         if (count($pages) > $paginateMax) {
             $paginateCount = ceil(count($pages) / $paginateMax);
             for ($i = 0; $i < $paginateCount; $i++) {
                 $pagesInPagination = array_slice($pages, $i * $paginateMax, $paginateMax);
                 $alteredPage = clone $page;
                 // first page
                 if ($i == 0) {
                     $alteredPage->setId(Page::urlize(sprintf('%s/index', $path)))->setPathname(Page::urlize(sprintf('%s', $path)))->setVariable('aliases', [sprintf('%s/%s/%s', $path, $paginatePath, 1)]);
                 } else {
                     $alteredPage->setId(Page::urlize(sprintf('%s/%s/%s/index', $path, $paginatePath, $i + 1)))->setPathname(Page::urlize(sprintf('%s/%s/%s', $path, $paginatePath, $i + 1)))->unVariable('menu');
                 }
                 // pagination
                 $pagination = ['pages' => $pagesInPagination];
                 if ($i > 0) {
                     $pagination += ['prev' => Page::urlize(sprintf('%s/%s/%s', $path, $paginatePath, $i))];
                 }
                 if ($i < $paginateCount - 1) {
                     $pagination += ['next' => Page::urlize(sprintf('%s/%s/%s', $path, $paginatePath, $i + 2))];
                 }
                 $alteredPage->setVariable('pagination', $pagination);
                 $generatedPages->add($alteredPage);
             }
         }
     }
     return $generatedPages;
 }
Esempio n. 5
0
 /**
  * {@inheritdoc}
  */
 public function generate(PageCollection $pageCollection, \Closure $messageCallback)
 {
     $generatedPages = new PageCollection();
     $filteredPages = $pageCollection->filter(function (Page $page) {
         return false !== $page->getVariable('external');
     });
     /* @var $page Page */
     foreach ($filteredPages as $page) {
         try {
             $pageContent = file_get_contents($page->getVariable('external'), false);
             $html = (new Converter())->convertBody($pageContent);
             $page->setHtml($html);
             $generatedPages->add($page);
         } catch (\Exception $e) {
             $error = sprintf('Cannot get contents from %s', $page->getVariable('external'));
             $message = sprintf("> Unable to generate '%s': %s", $page->getId(), $error);
             call_user_func_array($messageCallback, ['GENERATE_PROGRESS', $message]);
         }
     }
     return $generatedPages;
 }
Esempio n. 6
0
 /**
  * {@inheritdoc}
  */
 public function generate(PageCollection $pageCollection, \Closure $messageCallback)
 {
     $generatedPages = new PageCollection();
     /* @var $page Page */
     foreach ($pageCollection as $page) {
         $aliases = [];
         if ($page->hasVariable('aliases')) {
             $aliases = $page->getVariable('aliases');
         }
         if ($page->hasVariable('alias')) {
             $aliases[] = $page->getVariable('alias');
         }
         if (!empty($aliases)) {
             foreach ($aliases as $alias) {
                 /* @var $aliasPage Page */
                 $aliasPage = (new Page())->setId($alias . '/redirect')->setPathname(Page::urlize($alias))->setTitle($alias)->setLayout('redirect.html')->setVariable('destination', $page->getPermalink());
                 $generatedPages->add($aliasPage);
             }
         }
     }
     return $generatedPages;
 }