mirror of
https://github.com/wallabag/wallabag.git
synced 2025-01-10 17:05:26 +00:00
If reload content failed, don’t update it
In case user wants a fresh version of the current one and the website isn’t available, don’t erase it with a boring message saying wallabag wasn’t able to refresh the content.
This commit is contained in:
parent
7180aaed45
commit
2297d60f10
6 changed files with 55 additions and 2 deletions
|
@ -50,6 +50,7 @@ wallabag_core:
|
||||||
rss_limit: 50
|
rss_limit: 50
|
||||||
reading_speed: 1
|
reading_speed: 1
|
||||||
cache_lifetime: 10
|
cache_lifetime: 10
|
||||||
|
fetching_error_message: "wallabag can't retrieve contents for this article. Please report this issue to us."
|
||||||
|
|
||||||
wallabag_user:
|
wallabag_user:
|
||||||
registration_enabled: "%fosuser_registration%"
|
registration_enabled: "%fosuser_registration%"
|
||||||
|
|
|
@ -330,6 +330,15 @@ class EntryController extends Controller
|
||||||
|
|
||||||
$this->updateEntry($entry, 'entry_reloaded');
|
$this->updateEntry($entry, 'entry_reloaded');
|
||||||
|
|
||||||
|
// if refreshing entry failed, don't save it
|
||||||
|
if ($this->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) {
|
||||||
|
$bag = $this->get('session')->getFlashBag();
|
||||||
|
$bag->clear();
|
||||||
|
$bag->add('notice', 'flashes.entry.notice.entry_reloaded_failed');
|
||||||
|
|
||||||
|
return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
|
||||||
|
}
|
||||||
|
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$em->persist($entry);
|
$em->persist($entry);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
|
@ -39,6 +39,8 @@ class Configuration implements ConfigurationInterface
|
||||||
->integerNode('cache_lifetime')
|
->integerNode('cache_lifetime')
|
||||||
->defaultValue(10)
|
->defaultValue(10)
|
||||||
->end()
|
->end()
|
||||||
|
->scalarNode('fetching_error_message')
|
||||||
|
->end()
|
||||||
->end()
|
->end()
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ class WallabagCoreExtension extends Extension
|
||||||
$container->setParameter('wallabag_core.version', $config['version']);
|
$container->setParameter('wallabag_core.version', $config['version']);
|
||||||
$container->setParameter('wallabag_core.paypal_url', $config['paypal_url']);
|
$container->setParameter('wallabag_core.paypal_url', $config['paypal_url']);
|
||||||
$container->setParameter('wallabag_core.cache_lifetime', $config['cache_lifetime']);
|
$container->setParameter('wallabag_core.cache_lifetime', $config['cache_lifetime']);
|
||||||
|
$container->setParameter('wallabag_core.fetching_error_message', $config['fetching_error_message']);
|
||||||
|
|
||||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||||
$loader->load('services.yml');
|
$loader->load('services.yml');
|
||||||
|
|
|
@ -40,7 +40,7 @@ services:
|
||||||
class: Graby\Graby
|
class: Graby\Graby
|
||||||
arguments:
|
arguments:
|
||||||
-
|
-
|
||||||
error_message: "wallabag can't retrieve contents for this article. Please report this issue to us."
|
error_message: '%wallabag_core.fetching_error_message%'
|
||||||
http_client:
|
http_client:
|
||||||
user_agents:
|
user_agents:
|
||||||
'lifehacker.com': 'PHP/5.2'
|
'lifehacker.com': 'PHP/5.2'
|
||||||
|
|
|
@ -359,11 +359,51 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||||
|
|
||||||
$content = $em
|
$content = $em
|
||||||
->getRepository('WallabagCoreBundle:Entry')
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
|
->find($content->getId());
|
||||||
|
|
||||||
$this->assertNotEmpty($content->getContent());
|
$this->assertNotEmpty($content->getContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @depends testPostNewOk
|
||||||
|
*
|
||||||
|
* This test will require an internet connection.
|
||||||
|
*/
|
||||||
|
public function testReloadWithFetchingFailed()
|
||||||
|
{
|
||||||
|
$this->logInAs('admin');
|
||||||
|
$client = $this->getClient();
|
||||||
|
|
||||||
|
$em = $client->getContainer()
|
||||||
|
->get('doctrine.orm.entity_manager');
|
||||||
|
|
||||||
|
$content = $em
|
||||||
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
|
->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
|
||||||
|
|
||||||
|
// put a known failed url
|
||||||
|
$content->setUrl('http://0.0.0.0/failed.html');
|
||||||
|
$em->persist($content);
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
$client->request('GET', '/reload/'.$content->getId());
|
||||||
|
|
||||||
|
$this->assertEquals(302, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
// force EntityManager to clear previous entity
|
||||||
|
// otherwise, retrieve the same entity will retrieve change from the previous request :0
|
||||||
|
$em->clear();
|
||||||
|
$newContent = $em
|
||||||
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
|
->find($content->getId());
|
||||||
|
|
||||||
|
$newContent->setUrl($this->url);
|
||||||
|
$em->persist($newContent);
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
$this->assertNotEquals($client->getContainer()->getParameter('wallabag_core.fetching_error_message'), $newContent->getContent());
|
||||||
|
}
|
||||||
|
|
||||||
public function testEdit()
|
public function testEdit()
|
||||||
{
|
{
|
||||||
$this->logInAs('admin');
|
$this->logInAs('admin');
|
||||||
|
|
Loading…
Reference in a new issue