/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }