From e8911f7c09fa9d8009d7c7ee9fb0c181d2ffbc31 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 10 Jun 2017 15:00:52 +0200 Subject: Add isPublic filter on entries --- src/Wallabag/CoreBundle/Entity/Entry.php | 10 ++++++++++ src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php | 14 ++++++++++++++ .../CoreBundle/Resources/translations/messages.da.yml | 2 ++ .../CoreBundle/Resources/translations/messages.de.yml | 2 ++ .../CoreBundle/Resources/translations/messages.en.yml | 2 ++ .../CoreBundle/Resources/translations/messages.es.yml | 2 ++ .../CoreBundle/Resources/translations/messages.fa.yml | 2 ++ .../CoreBundle/Resources/translations/messages.fr.yml | 2 ++ .../CoreBundle/Resources/translations/messages.it.yml | 2 ++ .../CoreBundle/Resources/translations/messages.oc.yml | 2 ++ .../CoreBundle/Resources/translations/messages.pl.yml | 2 ++ .../CoreBundle/Resources/translations/messages.pt.yml | 2 ++ .../CoreBundle/Resources/translations/messages.ro.yml | 2 ++ .../Resources/views/themes/baggy/Entry/entries.html.twig | 5 +++++ .../views/themes/material/Entry/entries.html.twig | 11 +++++++++++ .../Wallabag/CoreBundle/Controller/EntryControllerTest.php | 14 ++++++++++++++ 16 files changed, 76 insertions(+) diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 9a7dd4e7..365030c7 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -684,6 +684,16 @@ class Entry $this->uid = null; } + /** + * Used in the entries filter so it's more explicit for the end user than the uid. + * + * @return bool + */ + public function isPublic() + { + return null !== $this->uid; + } + /** * @return string */ diff --git a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php index 556578d1..6a4c485f 100644 --- a/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php +++ b/src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php @@ -150,6 +150,20 @@ class EntryFilterType extends AbstractType }, 'label' => 'entry.filters.preview_picture_label', ]) + ->add('isPublic', CheckboxFilterType::class, [ + 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { + if (false === $values['value']) { + return; + } + + // is_public isn't a real field + // we should use the "uid" field to determine if the entry has been made public + $expression = $filterQuery->getExpr()->isNotNull($values['alias'].'.uid'); + + return $filterQuery->createCondition($expression); + }, + 'label' => 'entry.filters.is_public_label', + ]) ->add('language', ChoiceFilterType::class, [ 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())), 'label' => 'entry.filters.language_label', diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml index 5e7afe27..02dd04f2 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml @@ -186,6 +186,8 @@ entry: unread_label: 'Ulæst' preview_picture_label: 'Har et vist billede' preview_picture_help: 'Forhåndsvis billede' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'Sprog' # http_status_label: 'HTTP status' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml index 00468575..f6ccdae0 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml @@ -187,6 +187,8 @@ entry: unread_label: 'Ungelesene' preview_picture_label: 'Vorschaubild vorhanden' preview_picture_help: 'Vorschaubild' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'Sprache' http_status_label: 'HTTP-Status' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml index 572084c1..902c3046 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml @@ -187,6 +187,8 @@ entry: unread_label: 'Unread' preview_picture_label: 'Has a preview picture' preview_picture_help: 'Preview picture' + is_public_label: 'Has a public link' + is_public_help: 'Public link' language_label: 'Language' http_status_label: 'HTTP status' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml index 0f2a4a7b..afd6a7b1 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml @@ -187,6 +187,8 @@ entry: unread_label: 'Sin leer' preview_picture_label: 'Tiene imagen de previsualización' preview_picture_help: 'Imagen de previsualización' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'Idioma' http_status_label: 'Código de estado HTTP' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml index a8900489..545514b3 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml @@ -187,6 +187,8 @@ entry: unread_label: 'خوانده‌نشده' preview_picture_label: 'دارای عکس پیش‌نمایش' preview_picture_help: 'پیش‌نمایش عکس' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'زبان' # http_status_label: 'HTTP status' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index 6969b67b..e9e75efa 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml @@ -187,6 +187,8 @@ entry: unread_label: "Non lus" preview_picture_label: "A une photo" preview_picture_help: "Photo" + is_public_label: 'A une lien public' + is_public_help: 'Lien public' language_label: "Langue" http_status_label: "Statut HTTP" reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml index c2007057..0597d3e3 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml @@ -187,6 +187,8 @@ entry: # unread_label: 'Unread' preview_picture_label: "Ha un'immagine di anteprima" preview_picture_help: 'Immagine di anteprima' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'Lingua' # http_status_label: 'HTTP status' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml index 3ac472d0..c172a0f6 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml @@ -187,6 +187,8 @@ entry: unread_label: 'Pas legits' preview_picture_label: 'A un imatge' preview_picture_help: 'Imatge' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'Lenga' http_status_label: 'Estatut HTTP' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml index fa672387..82d16767 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml @@ -187,6 +187,8 @@ entry: unread_label: 'Nieprzeczytane' preview_picture_label: 'Posiada podgląd obrazu' preview_picture_help: 'Podgląd obrazu' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'Język' http_status_label: 'Status HTTP' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml index 896ccb04..b75567d6 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml @@ -187,6 +187,8 @@ entry: unread_label: 'Não Lido' preview_picture_label: 'Possui uma imagem de preview' preview_picture_help: 'Imagem de preview' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'Idioma' # http_status_label: 'HTTP status' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml index c447dc9b..95df573d 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml @@ -187,6 +187,8 @@ entry: unread_label: 'Necitite' preview_picture_label: 'Are o imagine de previzualizare' preview_picture_help: 'Previzualizare imagine' + # is_public_label: 'Has a public link' + # is_public_help: 'Public link' language_label: 'Limbă' # http_status_label: 'HTTP status' reading_time: diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig index 0ba6f4f4..6c26d5bf 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig @@ -127,6 +127,11 @@ {{ form_widget(form.previewPicture) }} {{ form_label(form.previewPicture) }} + +
+ {{ form_widget(form.isPublic) }} + {{ form_label(form.isPublic) }} +
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig index 6f657b18..5ba42057 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig @@ -102,6 +102,15 @@ {{ form_label(form.previewPicture) }}
+
+ +
+ +
+ {{ form_widget(form.isPublic) }} + {{ form_label(form.isPublic) }} +
+
{{ form_label(form.language) }}
@@ -121,10 +130,12 @@
{{ form_label(form.readingTime) }}
+
{{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
+
{{ form_widget(form.readingTime.right_number, {'type': 'number'}) }} diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index 8f5c372d..853f37f2 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php @@ -860,6 +860,20 @@ class EntryControllerTest extends WallabagCoreTestCase $this->assertCount(1, $crawler->filter('div[class=entry]')); } + public function testFilterOnIsPublic() + { + $this->logInAs('admin'); + $this->useTheme('baggy'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/unread/list'); + $form = $crawler->filter('button[id=submit-filter]')->form(); + $form['entry_filter[isPublic]']->tick(); + + $crawler = $client->submit($form); + $this->assertCount(0, $crawler->filter('div[class=entry]')); + } + public function testPreviewPictureFilter() { $this->logInAs('admin'); -- cgit v1.2.3 From 1112e54772c9308ee3d7417869b5b8ef9b2b9812 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 10 Jun 2017 15:31:57 +0200 Subject: Add public filter/field in the API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Listing entries can now be filtered by “public”. Creating or patching an entry can now set is to public or remove the public. Entry response now include “is_public” boolean field --- .../ApiBundle/Controller/EntryRestController.php | 27 +++++++++-- src/Wallabag/CoreBundle/Entity/Entry.php | 4 ++ .../CoreBundle/Repository/EntryRepository.php | 11 +++-- .../Controller/EntryRestControllerTest.php | 52 ++++++++++++++++++++++ 4 files changed, 88 insertions(+), 6 deletions(-) diff --git a/src/Wallabag/ApiBundle/Controller/EntryRestController.php b/src/Wallabag/ApiBundle/Controller/EntryRestController.php index 09b73ccb..ae9a93aa 100644 --- a/src/Wallabag/ApiBundle/Controller/EntryRestController.php +++ b/src/Wallabag/ApiBundle/Controller/EntryRestController.php @@ -77,6 +77,7 @@ class EntryRestController extends WallabagRestController * {"name"="perPage", "dataType"="integer", "required"=false, "format"="default'30'", "description"="results per page."}, * {"name"="tags", "dataType"="string", "required"=false, "format"="api,rest", "description"="a list of tags url encoded. Will returns entries that matches ALL tags."}, * {"name"="since", "dataType"="integer", "required"=false, "format"="default '0'", "description"="The timestamp since when you want entries updated."}, + * {"name"="public", "dataType"="integer", "required"=false, "format"="1 or 0, all entries by default", "description"="filter by entries with a public link"}, * } * ) * @@ -88,6 +89,7 @@ class EntryRestController extends WallabagRestController $isArchived = (null === $request->query->get('archive')) ? null : (bool) $request->query->get('archive'); $isStarred = (null === $request->query->get('starred')) ? null : (bool) $request->query->get('starred'); + $isPublic = (null === $request->query->get('public')) ? null : (bool) $request->query->get('public'); $sort = $request->query->get('sort', 'created'); $order = $request->query->get('order', 'desc'); $page = (int) $request->query->get('page', 1); @@ -96,9 +98,16 @@ class EntryRestController extends WallabagRestController $since = $request->query->get('since', 0); /** @var \Pagerfanta\Pagerfanta $pager */ - $pager = $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') - ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order, $since, $tags); + $pager = $this->get('wallabag_core.entry_repository')->findEntries( + $this->getUser()->getId(), + $isArchived, + $isStarred, + $isPublic, + $sort, + $order, + $since, + $tags + ); $pager->setMaxPerPage($perPage); $pager->setCurrentPage($page); @@ -111,6 +120,7 @@ class EntryRestController extends WallabagRestController [ 'archive' => $isArchived, 'starred' => $isStarred, + 'public' => $isPublic, 'sort' => $sort, 'order' => $order, 'page' => $page, @@ -289,6 +299,7 @@ class EntryRestController extends WallabagRestController * {"name"="preview_picture", "dataType"="string", "required"=false, "description"="Preview picture of the entry"}, * {"name"="published_at", "dataType"="datetime|integer", "format"="YYYY-MM-DDTHH:II:SS+TZ or a timestamp", "required"=false, "description"="Published date of the entry"}, * {"name"="authors", "dataType"="string", "format"="Name Firstname,author2,author3", "required"=false, "description"="Authors of the entry"}, + * {"name"="public", "dataType"="integer", "required"=false, "format"="1 or 0", "description"="will generate a public link for the entry"}, * } * ) * @@ -332,6 +343,7 @@ class EntryRestController extends WallabagRestController * {"name"="preview_picture", "dataType"="string", "required"=false, "description"="Preview picture of the entry"}, * {"name"="published_at", "dataType"="datetime|integer", "format"="YYYY-MM-DDTHH:II:SS+TZ or a timestamp", "required"=false, "description"="Published date of the entry"}, * {"name"="authors", "dataType"="string", "format"="Name Firstname,author2,author3", "required"=false, "description"="Authors of the entry"}, + * {"name"="public", "dataType"="integer", "required"=false, "format"="1 or 0", "description"="will generate a public link for the entry"}, * } * ) * @@ -623,6 +635,7 @@ class EntryRestController extends WallabagRestController $tags = $request->request->get('tags', []); $isArchived = $request->request->get('archive'); $isStarred = $request->request->get('starred'); + $isPublic = $request->request->get('public'); $content = $request->request->get('content'); $language = $request->request->get('language'); $picture = $request->request->get('preview_picture'); @@ -666,6 +679,14 @@ class EntryRestController extends WallabagRestController $this->get('wallabag_core.tags_assigner')->assignTagsToEntry($entry, $tags); } + if (!is_null($isPublic)) { + $entry->cleanUid(); + + if (true === (bool) $isPublic && null === $entry->getUid()) { + $entry->generateUid(); + } + } + $em = $this->getDoctrine()->getManager(); $em->persist($entry); $em->flush(); diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 365030c7..07d41ed8 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -687,6 +687,10 @@ class Entry /** * Used in the entries filter so it's more explicit for the end user than the uid. * + * @VirtualProperty + * @SerializedName("is_public") + * @Groups({"entries_for_user"}) + * * @return bool */ public function isPublic() diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index 6972e974..9bda4e15 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php @@ -135,6 +135,7 @@ class EntryRepository extends EntityRepository * @param int $userId * @param bool $isArchived * @param bool $isStarred + * @param bool $isPublic * @param string $sort * @param string $order * @param int $since @@ -142,18 +143,22 @@ class EntryRepository extends EntityRepository * * @return array */ - public function findEntries($userId, $isArchived = null, $isStarred = null, $sort = 'created', $order = 'ASC', $since = 0, $tags = '') + public function findEntries($userId, $isArchived = null, $isStarred = null, $isPublic = null, $sort = 'created', $order = 'ASC', $since = 0, $tags = '') { $qb = $this->createQueryBuilder('e') ->leftJoin('e.tags', 't') ->where('e.user =:userId')->setParameter('userId', $userId); if (null !== $isArchived) { - $qb->andWhere('e.isArchived =:isArchived')->setParameter('isArchived', (bool) $isArchived); + $qb->andWhere('e.isArchived = :isArchived')->setParameter('isArchived', (bool) $isArchived); } if (null !== $isStarred) { - $qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred); + $qb->andWhere('e.isStarred = :isStarred')->setParameter('isStarred', (bool) $isStarred); + } + + if (null !== $isPublic) { + $qb->andWhere('e.uid IS '.(true === $isPublic ? 'NOT' : '').' NULL'); } if ($since > 0) { diff --git a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php index 4aa60e90..067aed2c 100644 --- a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php +++ b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php @@ -128,6 +128,7 @@ class EntryRestControllerTest extends WallabagApiTestCase 'perPage' => 2, 'tags' => 'foo', 'since' => 1443274283, + 'public' => 0, ]); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -154,6 +155,53 @@ class EntryRestControllerTest extends WallabagApiTestCase $this->assertContains('order=asc', $content['_links'][$link]['href']); $this->assertContains('tags=foo', $content['_links'][$link]['href']); $this->assertContains('since=1443274283', $content['_links'][$link]['href']); + $this->assertContains('public=0', $content['_links'][$link]['href']); + } + + $this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type')); + } + + public function testGetEntriesPublicOnly() + { + $entry = $this->client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findOneByUser(1); + + if (!$entry) { + $this->markTestSkipped('No content found in db.'); + } + + // generate at least one public entry + $entry->generateUid(); + + $em = $this->client->getContainer()->get('doctrine.orm.entity_manager'); + $em->persist($entry); + $em->flush(); + + $this->client->request('GET', '/api/entries', [ + 'public' => 1, + ]); + + $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); + + $content = json_decode($this->client->getResponse()->getContent(), true); + + $this->assertGreaterThanOrEqual(1, count($content)); + $this->assertArrayHasKey('items', $content['_embedded']); + $this->assertGreaterThanOrEqual(1, $content['total']); + $this->assertEquals(1, $content['page']); + $this->assertEquals(30, $content['limit']); + $this->assertGreaterThanOrEqual(1, $content['pages']); + + $this->assertArrayHasKey('_links', $content); + $this->assertArrayHasKey('self', $content['_links']); + $this->assertArrayHasKey('first', $content['_links']); + $this->assertArrayHasKey('last', $content['_links']); + + foreach (['self', 'first', 'last'] as $link) { + $this->assertArrayHasKey('href', $content['_links'][$link]); + $this->assertContains('public=1', $content['_links'][$link]['href']); } $this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type')); @@ -348,6 +396,7 @@ class EntryRestControllerTest extends WallabagApiTestCase 'language' => 'de', 'published_at' => '2016-09-08T11:55:58+0200', 'authors' => 'bob,helen', + 'public' => 1, ]); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -367,6 +416,7 @@ class EntryRestControllerTest extends WallabagApiTestCase $this->assertCount(2, $content['published_by']); $this->assertContains('bob', $content['published_by']); $this->assertContains('helen', $content['published_by']); + $this->assertTrue($content['is_public'], 'A public link has been generated for that entry'); } public function testPostSameEntry() @@ -481,6 +531,7 @@ class EntryRestControllerTest extends WallabagApiTestCase 'preview_picture' => 'http://preview.io/picture.jpg', 'authors' => 'bob,sponge', 'content' => 'awesome', + 'public' => 0, ]); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -497,6 +548,7 @@ class EntryRestControllerTest extends WallabagApiTestCase $this->assertContains('sponge', $content['published_by']); $this->assertContains('bob', $content['published_by']); $this->assertEquals('awesome', $content['content']); + $this->assertFalse($content['is_public'], 'Entry is no more shared'); } public function testPatchEntryWithoutQuotes() -- cgit v1.2.3 From a9c6577f0c51dd4282e022fa4b41cbb7b0e201b3 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 10 Jun 2017 15:37:25 +0200 Subject: Few fixes --- src/Wallabag/ApiBundle/Controller/EntryRestController.php | 4 ++-- src/Wallabag/CoreBundle/Entity/Entry.php | 1 + src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Wallabag/ApiBundle/Controller/EntryRestController.php b/src/Wallabag/ApiBundle/Controller/EntryRestController.php index ae9a93aa..afd708e6 100644 --- a/src/Wallabag/ApiBundle/Controller/EntryRestController.php +++ b/src/Wallabag/ApiBundle/Controller/EntryRestController.php @@ -680,10 +680,10 @@ class EntryRestController extends WallabagRestController } if (!is_null($isPublic)) { - $entry->cleanUid(); - if (true === (bool) $isPublic && null === $entry->getUid()) { $entry->generateUid(); + } else if (false === (bool) $isPublic) { + $entry->cleanUid(); } } diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 07d41ed8..a0503c39 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -686,6 +686,7 @@ class Entry /** * Used in the entries filter so it's more explicit for the end user than the uid. + * Also used in the API. * * @VirtualProperty * @SerializedName("is_public") diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index e9e75efa..e9e79c67 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml @@ -187,7 +187,7 @@ entry: unread_label: "Non lus" preview_picture_label: "A une photo" preview_picture_help: "Photo" - is_public_label: 'A une lien public' + is_public_label: 'A un lien public' is_public_help: 'Lien public' language_label: "Langue" http_status_label: "Statut HTTP" -- cgit v1.2.3 From d9da186fb8427ca82d1fd7c4e2ef3f5032781f23 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 10 Jun 2017 16:08:24 +0200 Subject: CS --- src/Wallabag/ApiBundle/Controller/EntryRestController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Wallabag/ApiBundle/Controller/EntryRestController.php b/src/Wallabag/ApiBundle/Controller/EntryRestController.php index afd708e6..768c4fdc 100644 --- a/src/Wallabag/ApiBundle/Controller/EntryRestController.php +++ b/src/Wallabag/ApiBundle/Controller/EntryRestController.php @@ -682,7 +682,7 @@ class EntryRestController extends WallabagRestController if (!is_null($isPublic)) { if (true === (bool) $isPublic && null === $entry->getUid()) { $entry->generateUid(); - } else if (false === (bool) $isPublic) { + } elseif (false === (bool) $isPublic) { $entry->cleanUid(); } } -- cgit v1.2.3