]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Controller/EntryController.php
First draft for tests
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / EntryController.php
index 5157653c6480f05cbb106e34547eb5c350e678cd..56759adba0625ad5b71b74680bde2dbb1ad980d6 100644 (file)
@@ -15,6 +15,7 @@ use Wallabag\CoreBundle\Event\EntryDeletedEvent;
 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;
 
@@ -531,15 +532,18 @@ class EntryController extends Controller
         $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':
@@ -565,6 +569,7 @@ class EntryController extends Controller
         }
 
         $form = $this->createForm(EntryFilterType::class);
+        $sortForm = $this->createForm(EntrySortType::class);
 
         if ($request->query->has($form->getName())) {
             // manually bind values from the request
@@ -574,6 +579,11 @@ class EntryController extends Controller
             $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);
@@ -592,6 +602,7 @@ class EntryController extends Controller
         return $this->render(
             'WallabagCoreBundle:Entry:entries.html.twig', [
                 'form' => $form->createView(),
+                'sortForm' => $sortForm->createView(),
                 'entries' => $entries,
                 'currentPage' => $page,
                 'searchTerm' => $searchTerm,