From 2863bf2ab58a4903128f60751aa416130db93e52 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sun, 27 Dec 2015 21:28:48 +0100 Subject: Don't redirect to the content page after deletion Fix #1512 We generate the url of the removed content and compare it to the referer url. If they matche, we redirect user to the homepage otherwise to the referer url. --- src/Wallabag/CoreBundle/Controller/EntryController.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/Wallabag/CoreBundle/Controller') diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 6769799b..2f3fd6a9 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -5,6 +5,7 @@ namespace Wallabag\CoreBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Wallabag\CoreBundle\Entity\Entry; use Wallabag\CoreBundle\Form\Type\NewEntryType; use Wallabag\CoreBundle\Form\Type\EditEntryType; @@ -316,7 +317,7 @@ class EntryController extends Controller } /** - * Deletes entry and redirect to the homepage. + * Deletes entry and redirect to the homepage or the last viewed page. * * @param Entry $entry * @@ -328,6 +329,14 @@ class EntryController extends Controller { $this->checkUserAction($entry); + // generates the view url for this entry to check for redirection later + // to avoid redirecting to the deleted entry. Ugh. + $url = $this->generateUrl( + 'view', + array('id' => $entry->getId()), + UrlGeneratorInterface::ABSOLUTE_URL + ); + $em = $this->getDoctrine()->getManager(); $em->remove($entry); $em->flush(); @@ -337,7 +346,8 @@ class EntryController extends Controller 'Entry deleted' ); - return $this->redirect($request->headers->get('referer')); + // don't redirect user to the deleted entry + return $this->redirect($url !== $request->headers->get('referer') ?: $this->generateUrl('homepage')); } /** -- cgit v1.2.3