From f442bf54b78ec9466ad56239b275a47704882eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Fri, 19 Aug 2016 21:36:35 +0200 Subject: [PATCH] implements the preview of search --- Resources/config/services.yml | 1 + Resources/views/Person/list.html.twig | 18 ++++++++++++++++++ Search/PersonSearch.php | 26 ++++++++++++++++++++++---- 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/Resources/config/services.yml b/Resources/config/services.yml index 5f36aabf5..d2ae37056 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -23,6 +23,7 @@ services: - "@doctrine.orm.entity_manager" - "@security.token_storage" - "@chill.main.security.authorization.helper" + - "@chill_main.paginator_factory" calls: - ['setContainer', ["@service_container"]] tags: diff --git a/Resources/views/Person/list.html.twig b/Resources/views/Person/list.html.twig index 654b49ddf..04b06b9d9 100644 --- a/Resources/views/Person/list.html.twig +++ b/Resources/views/Person/list.html.twig @@ -18,6 +18,8 @@

{{ '%total% persons matching the search %pattern%'|transchoice( total, {'%pattern%': pattern, '%total%' : total}) }}

+

{{ 'Results %start%-%end% of %total%'|trans({ '%start%' : start, '%end%': start + persons|length, '%total%' : total } ) }}

+ {% if persons|length > 0 %} @@ -55,4 +57,20 @@ {% endfor %}
+ + + {% endif %} diff --git a/Search/PersonSearch.php b/Search/PersonSearch.php index eceabd4ab..922d35d3a 100644 --- a/Search/PersonSearch.php +++ b/Search/PersonSearch.php @@ -22,13 +22,14 @@ namespace Chill\PersonBundle\Search; use Chill\MainBundle\Search\AbstractSearch; use Doctrine\ORM\EntityManagerInterface; use Chill\PersonBundle\Entity\Person; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Chill\MainBundle\Search\SearchInterface; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerAwareTrait; use Chill\MainBundle\Search\ParsingException; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Chill\MainBundle\Security\Authorization\AuthorizationHelper; use Symfony\Component\Security\Core\Role\Role; +use Chill\MainBundle\Pagination\PaginatorFactory; class PersonSearch extends AbstractSearch implements ContainerAwareInterface { @@ -52,13 +53,25 @@ class PersonSearch extends AbstractSearch implements ContainerAwareInterface */ private $helper; + /** + * + * @var PaginatorFactory + */ + protected $paginatorFactory; - public function __construct(EntityManagerInterface $em, - TokenStorage $tokenStorage, AuthorizationHelper $helper) + const NAME = "person_regular"; + + + public function __construct( + EntityManagerInterface $em, + TokenStorage $tokenStorage, + AuthorizationHelper $helper, + PaginatorFactory $paginatorFactory) { $this->em = $em; $this->user = $tokenStorage->getToken()->getUser(); $this->helper = $helper; + $this->paginatorFactory = $paginatorFactory; // throw an error if user is not a valid user if (!$this->user instanceof \Chill\MainBundle\Entity\User) { @@ -96,13 +109,18 @@ class PersonSearch extends AbstractSearch implements ContainerAwareInterface */ public function renderResult(array $terms, $start = 0, $limit = 50, array $options = array()) { + $total = $this->count($terms); + $paginator = $this->paginatorFactory->create($total); return $this->container->get('templating')->render('ChillPersonBundle:Person:list.html.twig', array( 'persons' => $this->search($terms, $start, $limit, $options), 'pattern' => $this->recomposePattern($terms, array('nationality', 'firstname', 'lastname', 'birthdate', 'gender'), $terms['_domain']), - 'total' => $this->count($terms) + 'total' => $total, + 'start' => $start, + 'search_name' => self::NAME, + 'preview' => $options[SearchInterface::SEARCH_PREVIEW] )); }