示例#1
0
 /**
  * Displays the list of article.
  *
  * @param \Symfony\Component\HttpFoundation\Request $request request object
  * @param \eZ\Publish\Core\MVC\Symfony\View\ContentView $view
  *
  * @return \Symfony\Component\HttpFoundation\Response $location is flagged as invisible
  */
 public function showFolderListAction(Request $request, ContentView $view)
 {
     $languages = $this->getConfigResolver()->getParameter('languages');
     // Using the criteria helper (a demobundle custom service) to generate our query's criteria.
     // This is a good practice in order to have less code in your controller.
     $criteria = $this->get('ezdemo.criteria_helper')->generateListFolderCriterion($view->getLocation(), $this->container->getParameter('ezdemo.folder.folder_view.excluded_content_types'), $languages);
     // Generating query
     $query = new LocationQuery();
     $query->query = $criteria;
     $query->sortClauses = array(new SortClause\DatePublished());
     // Initialize pagination.
     $pager = new Pagerfanta(new ContentSearchAdapter($query, $this->getRepository()->getSearchService()));
     $pager->setMaxPerPage($this->container->getParameter('ezdemo.folder.folder_list.limit'));
     $pager->setCurrentPage($request->get('page', 1));
     $includedContentTypeIdentifiers = $this->container->getParameter('ezdemo.folder.folder_tree.included_content_types');
     // Get sub folder structure
     $subContentCriteria = $this->get('ezdemo.criteria_helper')->generateSubContentCriterion($view->getLocation(), $includedContentTypeIdentifiers, $languages);
     $subContentQuery = new LocationQuery();
     $subContentQuery->query = $subContentCriteria;
     $subContentQuery->sortClauses = array(new SortClause\ContentName());
     $searchService = $this->getRepository()->getSearchService();
     $subContent = $searchService->findLocations($subContentQuery);
     $treeItems = array();
     foreach ($subContent->searchHits as $hit) {
         $treeItems[] = $hit->valueObject;
     }
     $view->addParameters(['pagerFolder' => $pager, 'treeItems' => $treeItems]);
     return $view;
 }
 /**
  * @covers \eZ\Publish\Core\MVC\Symfony\View\ContentView::__construct
  * @covers \eZ\Publish\Core\MVC\Symfony\View\ContentView::setParameters
  * @covers \eZ\Publish\Core\MVC\Symfony\View\ContentView::getParameters
  */
 public function testAddParameters()
 {
     $params = array('bar' => 'baz', 'fruit' => 'apple');
     $contentView = new ContentView('foo', $params);
     $additionalParams = array('truc' => 'muche', 'laurel' => 'hardy');
     $contentView->addParameters($additionalParams);
     self::assertSame($params + $additionalParams, $contentView->getParameters());
 }
 public function listRidesAction(ContentView $view)
 {
     $searchService = $this->get('ezpublish.api.service.search');
     $query = new LocationQuery();
     $query->filter = new Criterion\LogicalAnd([new Criterion\Visibility(Criterion\Visibility::VISIBLE), new Criterion\ContentTypeIdentifier('ride')]);
     $query->sortClauses = [new SortClause\DatePublished()];
     $result = $searchService->findLocations($query);
     $view->addParameters(['rides_list' => $result->searchHits]);
     return $view;
 }
 /**
  * Displays the gallery.
  *
  * @param \eZ\Publish\Core\MVC\Symfony\View\ContentView $view
  * @param \Symfony\Component\HttpFoundation\Request $request
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function displayGalleryAction(ContentView $view, Request $request)
 {
     $languages = $this->configResolver->getParameter('languages');
     $location = $view->getLocation();
     $query = new Query();
     $query->query = $this->childrenCriteria->generateChildCriterion($location, $languages);
     $pager = new Pagerfanta(new ContentSearchAdapter($query, $this->searchService));
     $pager->setMaxPerPage($this->galleryImagesLimit);
     $pager->setCurrentPage($request->get('page', 1));
     $view->addParameters(['location' => $location, 'content' => $this->contentService->loadContentByContentInfo($view->getLocation()->getContentInfo()), 'images' => $pager]);
     return $view;
 }
示例#5
0
 /**
  * Builds a ContentView object from $viewConfig.
  *
  * @param array $viewConfig
  *
  * @return ContentView
  */
 protected function buildContentView(array $viewConfig)
 {
     $view = new ContentView();
     $view->setConfigHash($viewConfig);
     if (isset($viewConfig['template'])) {
         $view->setTemplateIdentifier($viewConfig['template']);
     }
     if (isset($viewConfig['controller'])) {
         $view->setControllerReference(new ControllerReference($viewConfig['controller']));
     }
     if (isset($viewConfig['params']) && is_array($viewConfig['params'])) {
         $view->addParameters($viewConfig['params']);
     }
     return $view;
 }
 /**
  * Displays the feedback form, and processes posted data.
  * The signature of this method follows the one from the default view controller, and adds the Request, since
  * we use to handle form data.
  *
  * @param \Symfony\Component\HttpFoundation\Request $request
  * @param \eZ\Publish\Core\MVC\Symfony\View\ContentView $view
  *
  * @return View
  */
 public function showFeedbackFormAction(Request $request, ContentView $view)
 {
     // Creating a form using Symfony's form component
     $feedback = new Feedback();
     $form = $this->createForm($this->get('ezdemo.form.type.feedback'), $feedback);
     if ($request->isMethod('POST')) {
         $form->handleRequest($request);
         if ($form->isValid()) {
             /** @var EmailHelper $emailHelper */
             $emailHelper = $this->get('ezdemo.email_helper');
             $emailHelper->sendFeebackMessage($feedback, $this->container->getParameter('ezdemo.feedback_form.email_from'), $this->container->getParameter('ezdemo.feedback_form.email_to'));
             // Adding the confirmation flash message to the session
             $this->get('session')->getFlashBag()->add('notice', $this->get('translator')->trans('Thank you for your message, we will get back to you as soon as possible.'));
             return $this->redirect($this->generateUrl($view->getLocation()));
         }
     }
     $view->addParameters(['form' => $form->createView()]);
     return $view;
 }
示例#7
0
 /**
  * Action used to display a blog_post
  *  - Adds the content's author to the response.
  * Note: This is a partly customized controller action. It is executed just before the original
  *       Viewcontroller's viewLocation method. To be able to do that, we need to implement it's
  *       full signature.
  *
  * @param ContentView $view
  *
  * @return View
  */
 public function showBlogPostAction(ContentView $view)
 {
     $author = $this->getRepository()->getUserService()->loadUser($view->getContent()->contentInfo->ownerId);
     $view->addParameters(['author' => $author]);
     return $view;
 }
 /**
  * Adds a hash of parameters to the existing parameters.
  *
  * @param array $parameters
  */
 public function addParameters(array $parameters)
 {
     $this->contentView->addParameters($parameters);
 }
 /**
  * Displays blog posts and gallery images on home page.
  *
  * @param \eZ\Publish\Core\MVC\Symfony\View\ContentView $view
  *
  * @return \eZ\Publish\Core\MVC\Symfony\View\ContentView
  */
 public function showAction(ContentView $view)
 {
     $view->addParameters(['content' => $this->contentService->loadContentByContentInfo($view->getLocation()->getContentInfo()), 'blogPosts' => $this->fetchItems($this->blogLocationId, $this->blogPostLimit), 'galleryImages' => $this->fetchItems($this->galleryLocationId, $this->galleryImageLimit), 'galleryLocationId' => $this->galleryLocationId]);
     return $view;
 }
示例#10
0
 /**
  * Displays blog post content with random selected blog posts.
  *
  * @param \eZ\Publish\Core\MVC\Symfony\View\ContentView $view
  *
  * @return \eZ\Publish\Core\MVC\Symfony\View\ContentView
  */
 public function showBlogPostAction(ContentView $view)
 {
     $languages = $this->configResolver->getParameter('languages');
     $location = $this->locationService->loadLocation($view->getLocation()->parentLocationId);
     $query = new Query();
     $query->query = $this->childrenCriteria->generateChildCriterion($location, $languages);
     $query->performCount = false;
     $query->sortClauses = [new SortClause\DatePublished(Query::SORT_DESC)];
     $results = $this->searchService->findContent($query);
     $randomPosts = [];
     foreach ($results->searchHits as $item) {
         $randomPosts[] = $item->valueObject;
     }
     shuffle($randomPosts);
     $view->addParameters(['location' => $location, 'content' => $this->contentService->loadContentByContentInfo($view->getLocation()->getContentInfo()), 'randomPosts' => array_slice($randomPosts, 0, $this->randomPostsLimit, true)]);
     return $view;
 }