Added http_status in Entry entity

This commit is contained in:
Nicolas Lœuillet 2016-11-18 15:09:21 +01:00
parent b060fbdfe7
commit 10b3509757
No known key found for this signature in database
GPG key ID: BDC1EFB5CA0145F2
23 changed files with 172 additions and 0 deletions

View file

@ -0,0 +1,47 @@
<?php
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Add http_status in `entry_table`
*/
class Version20161118134328 extends AbstractMigration implements ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
private $container;
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
private function getTable($tableName)
{
return $this->container->getParameter('database_table_prefix') . $tableName;
}
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
$this->addSql('ALTER TABLE '.$this->getTable('entry').' ADD http_status INT DEFAULT 0');
}
/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
$this->abortIf($this->connection->getDatabasePlatform()->getName() != 'sqlite', 'This down migration can\'t be executed on SQLite databases, because SQLite don\'t support DROP COLUMN.');
$this->addSql('ALTER TABLE '.$this->getTable('entry').' DROP http_status');
}
}

View file

@ -30,6 +30,11 @@ Sprache
wallabag (via graby) kann die Artikelsprache erkennen. Es ist einfach für dich, Artikel wallabag (via graby) kann die Artikelsprache erkennen. Es ist einfach für dich, Artikel
in einer bestimmten Sprache zu filtern. in einer bestimmten Sprache zu filtern.
HTTP status
-----------
You can retrieve the articles by filtering by their HTTP status code: 200, 404, 500, etc.
Lesezeit Lesezeit
-------- --------

View file

@ -30,6 +30,11 @@ Language
wallabag (via graby) can detect article language. It's easy to you to retrieve articles wallabag (via graby) can detect article language. It's easy to you to retrieve articles
written in a specific language. written in a specific language.
HTTP status
-----------
You can retrieve the articles by filtering by their HTTP status code: 200, 404, 500, etc.
Reading time Reading time
------------ ------------

View file

@ -30,6 +30,11 @@ Langage
wallabag (via graby) peut détecter la langue dans laquelle l'article est écrit. wallabag (via graby) peut détecter la langue dans laquelle l'article est écrit.
C'est ainsi facile pour vous de retrouver des articles écrits dans une langue spécifique. C'est ainsi facile pour vous de retrouver des articles écrits dans une langue spécifique.
Statut HTTP
-----------
Vous pouvez retrouver des articles en filtrant par leur code HTTP : 200, 404, 500, etc.
Temps de lecture Temps de lecture
---------------- ----------------

View file

@ -180,6 +180,15 @@ class Entry
*/ */
private $isPublic; private $isPublic;
/**
* @var int
*
* @ORM\Column(name="http_status", type="integer", nullable=true)
*
* @Groups({"entries_for_user", "export_all"})
*/
private $httpStatus;
/** /**
* @Exclude * @Exclude
* *
@ -669,4 +678,24 @@ class Entry
{ {
$this->uuid = null; $this->uuid = null;
} }
/**
* @return int
*/
public function getHttpStatus()
{
return $this->httpStatus;
}
/**
* @param int $httpStatus
*
* @return Entry
*/
public function setHttpStatus($httpStatus)
{
$this->httpStatus = $httpStatus;
return $this;
}
} }

View file

@ -90,6 +90,9 @@ class EntryFilterType extends AbstractType
}, },
'label' => 'entry.filters.domain_label', 'label' => 'entry.filters.domain_label',
]) ])
->add('httpStatus', TextFilterType::class, [
'label' => 'entry.filters.http_status_label',
])
->add('isArchived', CheckboxFilterType::class, [ ->add('isArchived', CheckboxFilterType::class, [
'label' => 'entry.filters.archived_label', 'label' => 'entry.filters.archived_label',
]) ])

View file

@ -66,6 +66,7 @@ class ContentProxy
$entry->setUrl($content['url'] ?: $url); $entry->setUrl($content['url'] ?: $url);
$entry->setTitle($title); $entry->setTitle($title);
$entry->setContent($html); $entry->setContent($html);
$entry->setHttpStatus(isset($content['status']) ? $content['status'] : '');
$entry->setLanguage($content['language']); $entry->setLanguage($content['language']);
$entry->setMimetype($content['content_type']); $entry->setMimetype($content['content_type']);

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'Har et vist billede' preview_picture_label: 'Har et vist billede'
preview_picture_help: 'Forhåndsvis billede' preview_picture_help: 'Forhåndsvis billede'
language_label: 'Sprog' language_label: 'Sprog'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Læsetid i minutter' label: 'Læsetid i minutter'
from: 'fra' from: 'fra'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'Vorschaubild vorhanden' preview_picture_label: 'Vorschaubild vorhanden'
preview_picture_help: 'Vorschaubild' preview_picture_help: 'Vorschaubild'
language_label: 'Sprache' language_label: 'Sprache'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Lesezeit in Minuten' label: 'Lesezeit in Minuten'
from: 'von' from: 'von'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'Has a preview picture' preview_picture_label: 'Has a preview picture'
preview_picture_help: 'Preview picture' preview_picture_help: 'Preview picture'
language_label: 'Language' language_label: 'Language'
http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Reading time in minutes' label: 'Reading time in minutes'
from: 'from' from: 'from'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'Hay una foto' preview_picture_label: 'Hay una foto'
preview_picture_help: 'Foto de preview' preview_picture_help: 'Foto de preview'
language_label: 'Idioma' language_label: 'Idioma'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Duración de lectura en minutos' label: 'Duración de lectura en minutos'
from: 'de' from: 'de'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'دارای عکس پیش‌نمایش' preview_picture_label: 'دارای عکس پیش‌نمایش'
preview_picture_help: 'پیش‌نمایش عکس' preview_picture_help: 'پیش‌نمایش عکس'
language_label: 'زبان' language_label: 'زبان'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'زمان خواندن به دقیقه' label: 'زمان خواندن به دقیقه'
from: 'از' from: 'از'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: "A une photo" preview_picture_label: "A une photo"
preview_picture_help: "Photo" preview_picture_help: "Photo"
language_label: "Langue" language_label: "Langue"
http_status_label: 'Statut HTTP'
reading_time: reading_time:
label: "Durée de lecture en minutes" label: "Durée de lecture en minutes"
from: "de" from: "de"

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: "Ha un'immagine di anteprima" preview_picture_label: "Ha un'immagine di anteprima"
preview_picture_help: 'Immagine di anteprima' preview_picture_help: 'Immagine di anteprima'
language_label: 'Lingua' language_label: 'Lingua'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Tempo di lettura in minuti' label: 'Tempo di lettura in minuti'
from: 'da' from: 'da'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'A una fotò' preview_picture_label: 'A una fotò'
preview_picture_help: 'Fotò' preview_picture_help: 'Fotò'
language_label: 'Lenga' language_label: 'Lenga'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Durada de lectura en minutas' label: 'Durada de lectura en minutas'
from: 'de' from: 'de'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'Posiada podgląd obrazu' preview_picture_label: 'Posiada podgląd obrazu'
preview_picture_help: 'Podgląd obrazu' preview_picture_help: 'Podgląd obrazu'
language_label: 'Język' language_label: 'Język'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Czas czytania w minutach' label: 'Czas czytania w minutach'
from: 'od' from: 'od'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'Possui uma imagem de preview' preview_picture_label: 'Possui uma imagem de preview'
preview_picture_help: 'Imagem de preview' preview_picture_help: 'Imagem de preview'
language_label: 'Idioma' language_label: 'Idioma'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Tempo de leitura em minutos' label: 'Tempo de leitura em minutos'
from: 'de' from: 'de'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'Are o imagine de previzualizare' preview_picture_label: 'Are o imagine de previzualizare'
preview_picture_help: 'Previzualizare imagine' preview_picture_help: 'Previzualizare imagine'
language_label: 'Limbă' language_label: 'Limbă'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Timp de citire în minute' label: 'Timp de citire în minute'
from: 'de la' from: 'de la'

View file

@ -178,6 +178,7 @@ entry:
preview_picture_label: 'Resim önizlemesi varsa' preview_picture_label: 'Resim önizlemesi varsa'
preview_picture_help: 'Resim önizlemesi' preview_picture_help: 'Resim önizlemesi'
language_label: 'Dil' language_label: 'Dil'
# http_status_label: 'HTTP status'
reading_time: reading_time:
label: 'Dakika cinsinden okuma süresi' label: 'Dakika cinsinden okuma süresi'
from: 'başlangıç' from: 'başlangıç'

View file

@ -112,6 +112,13 @@
</div> </div>
</div> </div>
<div id="filter-http-status" class="filter-group">
{{ form_label(form.httpStatus) }}
<div class="input-field ">
{{ form_widget(form.httpStatus) }}
</div>
</div>
<div id="filter-reading-time" class="filter-group"> <div id="filter-reading-time" class="filter-group">
<div class=""> <div class="">
{{ form_label(form.readingTime) }} {{ form_label(form.readingTime) }}

View file

@ -162,6 +162,14 @@
{{ form_widget(form.language) }} {{ form_widget(form.language) }}
</div> </div>
<div class="col s12">
{{ form_label(form.httpStatus) }}
</div>
<div class="input-field col s12">
{{ form_widget(form.httpStatus) }}
</div>
<div class="col s12"> <div class="col s12">
{{ form_label(form.readingTime) }} {{ form_label(form.readingTime) }}
</div> </div>

View file

@ -961,4 +961,50 @@ class EntryControllerTest extends WallabagCoreTestCase
$this->assertEquals(302, $client->getResponse()->getStatusCode()); $this->assertEquals(302, $client->getResponse()->getStatusCode());
$this->assertContains('/view/'.$content->getId(), $client->getResponse()->headers->get('location')); $this->assertContains('/view/'.$content->getId(), $client->getResponse()->headers->get('location'));
} }
public function testFilterOnHttpStatus()
{
$this->logInAs('admin');
$client = $this->getClient();
$crawler = $client->request('GET', '/new');
$form = $crawler->filter('form[name=entry]')->form();
$data = [
'entry[url]' => 'http://www.lemonde.fr/incorrect-url/',
];
$client->submit($form, $data);
$crawler = $client->request('GET', '/all/list');
$form = $crawler->filter('button[id=submit-filter]')->form();
$data = [
'entry_filter[httpStatus]' => 404,
];
$crawler = $client->submit($form, $data);
$this->assertCount(1, $crawler->filter('div[class=entry]'));
$crawler = $client->request('GET', '/new');
$form = $crawler->filter('form[name=entry]')->form();
$data = [
'entry[url]' => 'http://www.nextinpact.com/news/101235-wallabag-alternative-libre-a-pocket-creuse-petit-a-petit-son-nid.htm',
];
$client->submit($form, $data);
$crawler = $client->request('GET', '/all/list');
$form = $crawler->filter('button[id=submit-filter]')->form();
$data = [
'entry_filter[httpStatus]' => 200,
];
$crawler = $client->submit($form, $data);
$this->assertCount(1, $crawler->filter('div[class=entry]'));
}
} }

View file

@ -97,6 +97,7 @@ class ContentProxyTest extends \PHPUnit_Framework_TestCase
'url' => '', 'url' => '',
'content_type' => '', 'content_type' => '',
'language' => '', 'language' => '',
'status' => '',
'open_graph' => [ 'open_graph' => [
'og_title' => 'my title', 'og_title' => 'my title',
'og_description' => 'desc', 'og_description' => 'desc',
@ -111,6 +112,7 @@ class ContentProxyTest extends \PHPUnit_Framework_TestCase
$this->assertEquals('<p>Unable to retrieve readable content.</p><p><i>But we found a short description: </i></p>desc', $entry->getContent()); $this->assertEquals('<p>Unable to retrieve readable content.</p><p><i>But we found a short description: </i></p>desc', $entry->getContent());
$this->assertEmpty($entry->getPreviewPicture()); $this->assertEmpty($entry->getPreviewPicture());
$this->assertEmpty($entry->getLanguage()); $this->assertEmpty($entry->getLanguage());
$this->assertEmpty($entry->getHttpStatus());
$this->assertEmpty($entry->getMimetype()); $this->assertEmpty($entry->getMimetype());
$this->assertEquals(0.0, $entry->getReadingTime()); $this->assertEquals(0.0, $entry->getReadingTime());
$this->assertEquals('domain.io', $entry->getDomainName()); $this->assertEquals('domain.io', $entry->getDomainName());
@ -135,6 +137,7 @@ class ContentProxyTest extends \PHPUnit_Framework_TestCase
'url' => 'http://1.1.1.1', 'url' => 'http://1.1.1.1',
'content_type' => 'text/html', 'content_type' => 'text/html',
'language' => 'fr', 'language' => 'fr',
'status' => '200',
'open_graph' => [ 'open_graph' => [
'og_title' => 'my OG title', 'og_title' => 'my OG title',
'og_description' => 'OG desc', 'og_description' => 'OG desc',
@ -151,6 +154,7 @@ class ContentProxyTest extends \PHPUnit_Framework_TestCase
$this->assertEquals('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture()); $this->assertEquals('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture());
$this->assertEquals('text/html', $entry->getMimetype()); $this->assertEquals('text/html', $entry->getMimetype());
$this->assertEquals('fr', $entry->getLanguage()); $this->assertEquals('fr', $entry->getLanguage());
$this->assertEquals('200', $entry->getHttpStatus());
$this->assertEquals(4.0, $entry->getReadingTime()); $this->assertEquals(4.0, $entry->getReadingTime());
$this->assertEquals('1.1.1.1', $entry->getDomainName()); $this->assertEquals('1.1.1.1', $entry->getDomainName());
} }