use Wallabag\CoreBundle\Event\EntrySavedEvent;
use Wallabag\CoreBundle\Form\Type\EditEntryType;
use Wallabag\CoreBundle\Form\Type\EntryFilterType;
+use Wallabag\CoreBundle\Form\Type\EntrySortType;
use Wallabag\CoreBundle\Form\Type\NewEntryType;
use Wallabag\CoreBundle\Form\Type\SearchEntryType;
$repository = $this->get('wallabag_core.entry_repository');
$searchTerm = (isset($request->get('search_entry')['term']) ? $request->get('search_entry')['term'] : '');
$currentRoute = (null !== $request->query->get('currentRoute') ? $request->query->get('currentRoute') : '');
-
- // defined as null by default because each repository method have the right field as default value too
- // like `getBuilderForStarredByUser` will have `starredAt` sort by default
+ $direction = 'asc';
$sortBy = null;
- if (\in_array($request->get('sort', 'createdAt'), ['id', 'title', 'createdAt', 'updatedAt', 'starredAt', 'archivedAt'], true)) {
- $sortBy = $request->get('sort', null);
- }
- $direction = 'DESC' === $request->get('direction') ? 'DESC' : 'ASC';
+ if (null !== ($request->query->get('entry_sort'))) {
+ $direction = (null !== $request->query->get('entry_sort')['sortOrder'] ? $request->query->get('entry_sort')['sortOrder'] : 'asc');
+
+ // defined as null by default because each repository method have the right field as default value too
+ // like `getBuilderForStarredByUser` will have `starredAt` sort by default
+ if (\in_array($request->get('entry_sort')['sortType'], ['id', 'title', 'createdAt', 'updatedAt', 'starredAt', 'archivedAt'], true)) {
+ $sortBy = $request->get('entry_sort')['sortType'];
+ }
+ }
switch ($type) {
case 'search':
}
$form = $this->createForm(EntryFilterType::class);
+ $sortForm = $this->createForm(EntrySortType::class);
if ($request->query->has($form->getName())) {
// manually bind values from the request
$this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $qb);
}
+ if ($request->query->has($sortForm->getName())) {
+ // manually bind values from the request
+ $sortForm->submit($request->query->get($sortForm->getName()));
+ }
+
$pagerAdapter = new DoctrineORMAdapter($qb->getQuery(), true, false);
$entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')->prepare($pagerAdapter);
return $this->render(
'WallabagCoreBundle:Entry:entries.html.twig', [
'form' => $form->createView(),
+ 'sortForm' => $sortForm->createView(),
'entries' => $entries,
'currentPage' => $page,
'searchTerm' => $searchTerm,