示例#1
0
 public function getOne(Criteria $criteria)
 {
     // overwrite config defaults?
     $mode = $criteria->getMode() ? $criteria->getMode() : $this->mode;
     // criteria
     $criteria->setMode($mode);
     // get all scribbles
     $allScribbles = $this->getDirectory()->load()->getScribbles();
     // filter and paginate
     $filter = new Filter();
     $scribbles = $filter->apply($allScribbles, $criteria)->getScribbles();
     return $scribbles->first();
 }
示例#2
0
 public function indexAction(Request $request, $template, $slug)
 {
     $criteria = new Criteria();
     $criteria->setSlug($slug);
     $repository = $this->getServices()->get('page.repository');
     $scribble = $repository->getOne($criteria);
     if (!$scribble) {
         throw new NotFoundHttpException();
     }
     $view = $this->getServices()->get('view');
     $vars = array('request' => $request, 'services' => $this->getServices(), 'scribble' => $scribble);
     return new Response($view->render($template, $vars));
 }
示例#3
0
 public function demoAction(Request $request, $template, $slug)
 {
     $criteria = new Criteria();
     $criteria->setSlug($slug);
     $repository = $this->getServices()->get('scribble.repository');
     $scribble = $repository->getOne($criteria);
     if (!$scribble) {
         throw new NotFoundHttpException();
     }
     $loader = new FilesystemLoader(array($this->getServices()->get('theme')->getTemplateDir() . '/%name%', $scribble->getDir() . '/%name%'));
     $view = new PhpEngine(new TemplateNameParser(), $loader);
     $vars = array('request' => $request, 'services' => $this->getServices(), 'scribble' => $scribble);
     return new Response($view->render($template, $vars));
 }
示例#4
0
 public function indexAction(Request $request)
 {
     $criteria = new Criteria();
     $criteria->setFind($request->query->get('find'));
     $params = array('page' => $request->query->get('page'), 'sorting' => 'created', 'descending' => true);
     $repository = $this->getServices()->get('scribble.repository');
     $scribbles = $repository->getList($criteria, $params);
     $scribbles->getPaginator()->setPageParam('page');
     $scribbles->getPaginator()->setBaseUrl($this->getServices()->get('urler')->generate('frontendScribbleIndex', array(), true));
     $scribbles->getPaginator()->addParam('find', $criteria->getFind());
     $data = array();
     foreach ($scribbles->getScribbles() as $scribble) {
         $data[] = array('title' => $scribble->getTitle(), 'lede' => $scribble->getLede(), 'url' => $this->getServices()->get('urler')->generate('frontendScribbleDetail', array('slug' => $scribble->getSlug()), true), 'created' => $scribble->getCreated()->format('c'), 'modified' => $scribble->getModified()->format('c'));
     }
     $response = new Response();
     $response->setContent(json_encode($data));
     $response->headers->set('Content-Type', 'application/json');
     return $response;
 }
示例#5
0
 protected function matchesCriteria(ScribbleFile $scribble, Criteria $criteria)
 {
     if (!$scribble) {
         return false;
     }
     if ($criteria->getSlug() !== null) {
         if ($scribble->getSlug() !== $criteria->getSlug()) {
             return false;
         }
     }
     // unpublished scribbles only
     if ($criteria->getMode() === Criteria::MODE_UNPUBLISHED) {
         if ($scribble->isPublished()) {
             return false;
         }
     } else {
         if ($criteria->getMode() === Criteria::MODE_ALL) {
         } else {
             if (!$scribble->isPublished()) {
                 return false;
             }
         }
     }
     foreach ($criteria->getTags() as $key => $tag) {
         if (!$scribble->getTags()->containsKey($key)) {
             return false;
         }
     }
     if ($criteria->getFind() && !$scribble->find($criteria->getFind())) {
         return false;
     }
     return true;
 }
示例#6
0
 public function testDefaultMode()
 {
     $criteria = new Criteria();
     $filter = new Filter();
     $filter->apply($this->scribbles, $criteria);
     $this->assertSame(3, $filter->getScribbles()->count());
     $criteria = new Criteria();
     $criteria->setMode(Criteria::MODE_PUBLISHED);
     $filter = new Filter();
     $filter->apply($this->scribbles, $criteria);
     $this->assertSame(3, $filter->getScribbles()->count());
     $criteria = new Criteria();
     $criteria->setMode(Criteria::MODE_UNPUBLISHED);
     $filter = new Filter();
     $filter->apply($this->scribbles, $criteria);
     $this->assertSame(1, $filter->getScribbles()->count());
     $criteria = new Criteria();
     $criteria->setMode(Criteria::MODE_ALL);
     $filter = new Filter();
     $filter->apply($this->scribbles, $criteria);
     $this->assertSame(4, $filter->getScribbles()->count());
 }
示例#7
0
 public function testTags()
 {
     $criteria = new Criteria();
     $criteria->setTags(array('abc*""def', '123'));
     $this->assertFalse(in_array('abc*""def', $criteria->getTags()->toArray()));
 }