public function onDocuments(CarewEvent $event) { $document = new Document(); $document->setLayout('index.atom.twig')->setPath('feed/atom.xml')->setFilePath('feed/atom'); $documents = $event->getSubject(); $documents[$document->getFilePath()] = $document; $event->setSubject($documents); $globals = $event['globals']; $globals->documents = array_replace($globals->documents, $documents); }
public function onDocuments(CarewEvent $event) { $documents = $event->getSubject(); $globals = $event['globals']; foreach ($globals->tags as $tagName => $documentList) { $documentList = array_filter($documentList, function (Document $document) { return $document->isTypePost(); }); $document = new Document(); $document->setLayout('index.atom.twig')->setPath(sprintf('tags/%s/feed/atom.xml', $this->inflector->urlize($tagName)))->setFilePath(sprintf('tags/%s/feed/atom', $tagName))->setVar('post', $documentList); $documents[$document->getFilePath()] = $document; } $event->setSubject($documents); $globals->documents = array_replace($globals->documents, $documents); }
/** * @param Author $author * @return Document[] */ public function generateAuthorIndices(Author $author) { $indexes = array(); foreach ($this->getLayouts() as $layout) { $file = $layout->getBasename(); preg_match('#authors\\.(.+?)\\.twig$#', $file, $match); $format = $match[1]; $document = new Document(); $document->setLayout((string) $file); $document->setPath(sprintf('authors/%s.%s', $author->getHandle(), $format)); $document->setTitle(sprintf('Author: %s (%s)', $author->get('name'), $author->getHandle())); $document->setVars(array('author' => $author)); $indexes[] = $document; } return $indexes; }
public function onDocuments(CarewEvent $event) { $documents = $event->getSubject(); $globals = $event['globals']; $tags = array(); foreach ($globals->tags as $tagName => $documentList) { $tagDocument = new Document(); $tagDocument->setLayout('default.html.twig')->setBody('{{ render_documents(carew.documents) }}')->setPath(sprintf('tags/%s.html', $this->inflector->urlize($tagName)))->setTitle('Tag #' . $tagName)->setFilePath('tags/' . $tagName)->setNavigations(array('tags', 'sub-tags'))->setVar('documents', $documentList); $documents[$tagDocument->getFilePath()] = $tagDocument; $tags[$tagDocument->getFilePath()] = $tagDocument; } $tagsDocument = new Document(); $tagsDocument->setLayout('default.html.twig')->setBody('{{ render_documents(carew.tags) }}')->setPath('tags/index.html')->setTitle('Tags')->setFilePath('tags')->setNavigations('tags')->setVar('tags', $tags); $documents[$tagsDocument->getFilePath()] = $tagsDocument; $globals->documents = array_replace($globals->documents, $documents); $event->setSubject($documents); }
/** * @expectedException RuntimeException * @expectedExceptionMessage Unexpected "}" in a string template line 1. */ public function testPreRenderThrowExceptionOnRender() { $document = new Document(); $document->setLayout('default'); $document->setBody(<<<EOL Hello {{ foobar }} {% set text = '{{ foobar }' %} {{ template_from_string(text) }} EOL ); $event = new CarewEvent(array($document)); $this->twigListenner->preRender($event); $this->assertSame('foobar', $document->getBody()); }