diff options
author | Jeremy Benoist <jeremy.benoist@gmail.com> | 2015-12-27 21:28:48 +0100 |
---|---|---|
committer | Jeremy Benoist <jeremy.benoist@gmail.com> | 2015-12-28 13:42:50 +0100 |
commit | 2863bf2ab58a4903128f60751aa416130db93e52 (patch) | |
tree | 42c40d24baab371f5dd41eda12d3cbdbe6445a51 /src/Wallabag/CoreBundle/Controller | |
parent | 71eff67f8b65a8337bd169fe8c271957ddd0aba0 (diff) | |
download | wallabag-2863bf2ab58a4903128f60751aa416130db93e52.tar.gz wallabag-2863bf2ab58a4903128f60751aa416130db93e52.tar.zst wallabag-2863bf2ab58a4903128f60751aa416130db93e52.zip |
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.
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller')
-rw-r--r-- | src/Wallabag/CoreBundle/Controller/EntryController.php | 14 |
1 files changed, 12 insertions, 2 deletions
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; | |||
5 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | 5 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; |
6 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | 6 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
7 | use Symfony\Component\HttpFoundation\Request; | 7 | use Symfony\Component\HttpFoundation\Request; |
8 | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | ||
8 | use Wallabag\CoreBundle\Entity\Entry; | 9 | use Wallabag\CoreBundle\Entity\Entry; |
9 | use Wallabag\CoreBundle\Form\Type\NewEntryType; | 10 | use Wallabag\CoreBundle\Form\Type\NewEntryType; |
10 | use Wallabag\CoreBundle\Form\Type\EditEntryType; | 11 | use Wallabag\CoreBundle\Form\Type\EditEntryType; |
@@ -316,7 +317,7 @@ class EntryController extends Controller | |||
316 | } | 317 | } |
317 | 318 | ||
318 | /** | 319 | /** |
319 | * Deletes entry and redirect to the homepage. | 320 | * Deletes entry and redirect to the homepage or the last viewed page. |
320 | * | 321 | * |
321 | * @param Entry $entry | 322 | * @param Entry $entry |
322 | * | 323 | * |
@@ -328,6 +329,14 @@ class EntryController extends Controller | |||
328 | { | 329 | { |
329 | $this->checkUserAction($entry); | 330 | $this->checkUserAction($entry); |
330 | 331 | ||
332 | // generates the view url for this entry to check for redirection later | ||
333 | // to avoid redirecting to the deleted entry. Ugh. | ||
334 | $url = $this->generateUrl( | ||
335 | 'view', | ||
336 | array('id' => $entry->getId()), | ||
337 | UrlGeneratorInterface::ABSOLUTE_URL | ||
338 | ); | ||
339 | |||
331 | $em = $this->getDoctrine()->getManager(); | 340 | $em = $this->getDoctrine()->getManager(); |
332 | $em->remove($entry); | 341 | $em->remove($entry); |
333 | $em->flush(); | 342 | $em->flush(); |
@@ -337,7 +346,8 @@ class EntryController extends Controller | |||
337 | 'Entry deleted' | 346 | 'Entry deleted' |
338 | ); | 347 | ); |
339 | 348 | ||
340 | return $this->redirect($request->headers->get('referer')); | 349 | // don't redirect user to the deleted entry |
350 | return $this->redirect($url !== $request->headers->get('referer') ?: $this->generateUrl('homepage')); | ||
341 | } | 351 | } |
342 | 352 | ||
343 | /** | 353 | /** |