$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') : '');
- $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
+ $direction = 'asc';
$sortBy = null;
- if (\in_array($request->get('entry_sort')['sortType'], ['id', 'title', 'createdAt', 'updatedAt', 'starredAt', 'archivedAt'], true)) {
- $sortBy = $request->get('entry_sort')['sortType'];
+
+ 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) {
<!-- Sort -->
{% if sortForm is not null %}
<div id="sort" class="side-nav right-aligned">
- <form action="{{ previousRoute }}">
+ <form>
<h4 class="center">{{ 'entry.sort.title'|trans }}</h4>
<div class="row">
</div>
<div class="col s12">
- <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
+ <button class="btn waves-effect waves-light" type="submit" id="submit-sort" value="sort">{{ 'entry.sort.action.sort'|trans }}</button>
</div>
</div>
</form>
$this->assertCount(2, $crawler->filter('li.entry'));
}
+ public function testSortOnTitle()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $crawler = $client->request('GET', '/unread/list');
+ $form = $crawler->filter('button[id=submit-sort]')->form();
+ $data = [
+ 'entry_sort[sortType]' => 'title',
+ 'entry_sort[sortOrder]' => 'asc',
+ ];
+ $crawler = $client->submit($form, $data);
+
+ $this->assertCount(4, $crawler->filter('li.entry'));
+
+ $matches = [];
+ preg_match_all('/test title entry([0-9])/', $client->getResponse()->getContent(), $matches);
+
+ $results = array_values(array_unique($matches[0]));
+
+ $ids = [1, 2, 4, 5];
+
+ foreach ($results as $key => $result) {
+ $this->assertSame('test title entry' . $ids[$key], $result);
+ }
+
+ rsort($ids);
+
+ $crawler = $client->request('GET', '/unread/list');
+ $form = $crawler->filter('button[id=submit-sort]')->form();
+ $data = [
+ 'entry_sort[sortType]' => 'title',
+ 'entry_sort[sortOrder]' => 'desc',
+ ];
+ $crawler = $client->submit($form, $data);
+
+ $matches = [];
+ preg_match_all('/test title entry([0-9])/', $client->getResponse()->getContent(), $matches);
+
+ $results = array_values(array_unique($matches[0]));
+
+ foreach ($results as $key => $result) {
+ $this->assertSame('test title entry' . $ids[$key], $result);
+ }
+ }
+
public function testShareEntryPublicly()
{
$this->logInAs('admin');