Merge pull request #1700 from delyriand/v2-fix-1551

Fix #1551 - Redirect to the last page when current page is out of range
This commit is contained in:
Jeremy Benoist 2016-02-19 16:21:31 +01:00
commit a8c6b8ee0c
2 changed files with 19 additions and 1 deletions

View file

@ -3,6 +3,7 @@
namespace Wallabag\CoreBundle\Controller;
use Pagerfanta\Adapter\DoctrineORMAdapter;
use Pagerfanta\Exception\OutOfRangeCurrentPageException;
use Pagerfanta\Pagerfanta;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
@ -252,7 +253,13 @@ class EntryController extends Controller
$entries = new Pagerfanta($pagerAdapter);
$entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
$entries->setCurrentPage($page);
try {
$entries->setCurrentPage($page);
} catch (OutOfRangeCurrentPageException $e) {
if ($page > 1) {
return $this->redirect($this->generateUrl($type, array('page' => $entries->getNbPages())), 302);
}
}
return $this->render(
'WallabagCoreBundle:Entry:entries.html.twig',

View file

@ -216,6 +216,17 @@ class EntryControllerTest extends WallabagCoreTestCase
$this->assertEquals(200, $client->getResponse()->getStatusCode());
}
public function testRangeException()
{
$this->logInAs('admin');
$client = $this->getClient();
$client->request('GET', '/all/list/900');
$this->assertEquals(302, $client->getResponse()->getStatusCode());
$this->assertEquals('/all/list', $client->getResponse()->getTargetUrl());
}
/**
* @depends testPostNewOk
*/