mirror of
https://github.com/wallabag/wallabag.git
synced 2025-04-24 02:44:19 +00:00
parent
f2e5fdc366
commit
af497a641c
5 changed files with 104 additions and 4 deletions
|
@ -344,7 +344,9 @@ class EntryController extends Controller
|
||||||
$message
|
$message
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->redirect($request->headers->get('referer'));
|
$redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
|
||||||
|
|
||||||
|
return $this->redirect($redirectUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -374,7 +376,9 @@ class EntryController extends Controller
|
||||||
$message
|
$message
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->redirect($request->headers->get('referer'));
|
$redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
|
||||||
|
|
||||||
|
return $this->redirect($redirectUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -408,7 +412,11 @@ class EntryController extends Controller
|
||||||
);
|
);
|
||||||
|
|
||||||
// don't redirect user to the deleted entry
|
// don't redirect user to the deleted entry
|
||||||
return $this->redirect($url !== $request->headers->get('referer') ? $request->headers->get('referer') : $this->generateUrl('homepage'));
|
$to = ($url !== $request->headers->get('referer') ? $request->headers->get('referer') : $this->generateUrl('homepage'));
|
||||||
|
|
||||||
|
$redirectUrl = $this->get('wallabag_core.helper.redirect')->to($to);
|
||||||
|
|
||||||
|
return $this->redirect($redirectUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -65,7 +65,9 @@ class TagController extends Controller
|
||||||
}
|
}
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
return $this->redirect($request->headers->get('referer'));
|
$redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
|
||||||
|
|
||||||
|
return $this->redirect($redirectUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
36
src/Wallabag/CoreBundle/Helper/Redirect.php
Normal file
36
src/Wallabag/CoreBundle/Helper/Redirect.php
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Wallabag\CoreBundle\Helper;
|
||||||
|
|
||||||
|
use Symfony\Component\Routing\Router;
|
||||||
|
|
||||||
|
class Redirect
|
||||||
|
{
|
||||||
|
private $router;
|
||||||
|
|
||||||
|
public function __construct(Router $router)
|
||||||
|
{
|
||||||
|
$this->router = $router;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $url URL to redirect
|
||||||
|
* @param string $fallback Fallback URL if $url is null
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function to($url, $fallback = '')
|
||||||
|
{
|
||||||
|
$returnUrl = $url;
|
||||||
|
|
||||||
|
if (null === $url) {
|
||||||
|
if ('' !== $fallback) {
|
||||||
|
$returnUrl = $fallback;
|
||||||
|
} else {
|
||||||
|
$returnUrl = $this->router->generate('homepage');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $returnUrl;
|
||||||
|
}
|
||||||
|
}
|
|
@ -114,3 +114,8 @@ services:
|
||||||
class: Wallabag\CoreBundle\Operator\Doctrine\Matches
|
class: Wallabag\CoreBundle\Operator\Doctrine\Matches
|
||||||
tags:
|
tags:
|
||||||
- { name: rulerz.operator, executor: rulerz.executor.doctrine, operator: matches, inline: true }
|
- { name: rulerz.operator, executor: rulerz.executor.doctrine, operator: matches, inline: true }
|
||||||
|
|
||||||
|
wallabag_core.helper.redirect:
|
||||||
|
class: Wallabag\CoreBundle\Helper\Redirect
|
||||||
|
arguments:
|
||||||
|
- "@router"
|
||||||
|
|
49
src/Wallabag/CoreBundle/Tests/Helper/RedirectTest.php
Normal file
49
src/Wallabag/CoreBundle/Tests/Helper/RedirectTest.php
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Wallabag\CoreBundle\Tests\Helper;
|
||||||
|
|
||||||
|
use Wallabag\CoreBundle\Helper\Redirect;
|
||||||
|
|
||||||
|
class RedirectTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
/** @var \Symfony\Component\Routing\Router */
|
||||||
|
private $routerMock;
|
||||||
|
|
||||||
|
/** @var Redirect */
|
||||||
|
private $redirect;
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
$this->routerMock = $this->getRouterMock();
|
||||||
|
$this->redirect = new Redirect($this->routerMock);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRedirectToNullWithFallback()
|
||||||
|
{
|
||||||
|
$redirectUrl = $this->redirect->to(null, 'fallback');
|
||||||
|
|
||||||
|
$this->assertEquals('fallback', $redirectUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRedirectToNullWithoutFallback()
|
||||||
|
{
|
||||||
|
$redirectUrl = $this->redirect->to(null);
|
||||||
|
|
||||||
|
$this->assertEquals($this->routerMock->generate('homepage'), $redirectUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRedirectToValidUrl()
|
||||||
|
{
|
||||||
|
$redirectUrl = $this->redirect->to('/unread/list');
|
||||||
|
|
||||||
|
$this->assertEquals('/unread/list', $redirectUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getRouterMock()
|
||||||
|
{
|
||||||
|
return $this->getMockBuilder('Symfony\Component\Routing\Router')
|
||||||
|
->setMethods(['generate'])
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue