implements the preview of search

This commit is contained in:
Julien Fastré 2016-08-19 21:36:35 +02:00
parent 52fb5f56be
commit f442bf54b7
3 changed files with 41 additions and 4 deletions

View File

@ -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:

View File

@ -18,6 +18,8 @@
<p>{{ '%total% persons matching the search %pattern%'|transchoice( total, {'%pattern%': pattern, '%total%' : total}) }}</p>
<p>{{ 'Results %start%-%end% of %total%'|trans({ '%start%' : start, '%end%': start + persons|length, '%total%' : total } ) }}</p>
{% if persons|length > 0 %}
<table>
@ -55,4 +57,20 @@
{% endfor %}
</tbody>
</table>
<ul class="record_actions">
<li>
<a href="{{ path('chill_person_new') }}" class="sc-button btn-create">
{{ 'Add a person'|trans }}
</a>
</li>
{% if preview == true and persons|length < total %}
<li>
<a href="{{ path('chill_main_search', { "name": search_name, "q" : pattern }) }}" class="sc-button">
{{ 'See all results'|trans }}
</a>
</li>
{% endif %}
</ul>
{% endif %}

View File

@ -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]
));
}