diff options
author | Nicolas Lœuillet <nicolas@loeuillet.org> | 2016-05-31 11:31:16 +0200 |
---|---|---|
committer | Nicolas Lœuillet <nicolas@loeuillet.org> | 2016-05-31 11:31:16 +0200 |
commit | f329e769fd7795f408643735edccb4dc4215c900 (patch) | |
tree | ed8f64c94c65fa2f8a40dffd6457d8bcd926f7dd | |
parent | 839475776bdacf7e939984ee8230cb84d34c2289 (diff) | |
parent | 3be047456d6f91d8ef5404c9c7698e0d1f9a057d (diff) | |
download | wallabag-f329e769fd7795f408643735edccb4dc4215c900.tar.gz wallabag-f329e769fd7795f408643735edccb4dc4215c900.tar.zst wallabag-f329e769fd7795f408643735edccb4dc4215c900.zip |
Merge pull request #2122 from wallabag/fix-tags-deletion
Fix the deletion of Tags/Entries relation when delete an entry
17 files changed, 122 insertions, 41 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 69dfd4b1..33b5e2ad 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php | |||
@@ -23,10 +23,16 @@ class EntryController extends Controller | |||
23 | { | 23 | { |
24 | try { | 24 | try { |
25 | $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl()); | 25 | $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl()); |
26 | |||
26 | $em = $this->getDoctrine()->getManager(); | 27 | $em = $this->getDoctrine()->getManager(); |
27 | $em->persist($entry); | 28 | $em->persist($entry); |
28 | $em->flush(); | 29 | $em->flush(); |
29 | } catch (\Exception $e) { | 30 | } catch (\Exception $e) { |
31 | $this->get('logger')->error('Error while saving an entry', [ | ||
32 | 'exception' => $e, | ||
33 | 'entry' => $entry, | ||
34 | ]); | ||
35 | |||
30 | return false; | 36 | return false; |
31 | } | 37 | } |
32 | 38 | ||
@@ -60,11 +66,12 @@ class EntryController extends Controller | |||
60 | return $this->redirect($this->generateUrl('view', ['id' => $existingEntry->getId()])); | 66 | return $this->redirect($this->generateUrl('view', ['id' => $existingEntry->getId()])); |
61 | } | 67 | } |
62 | 68 | ||
63 | $this->updateEntry($entry); | 69 | $message = 'flashes.entry.notice.entry_saved'; |
64 | $this->get('session')->getFlashBag()->add( | 70 | if (false === $this->updateEntry($entry)) { |
65 | 'notice', | 71 | $message = 'flashes.entry.notice.entry_saved_failed'; |
66 | 'flashes.entry.notice.entry_saved' | 72 | } |
67 | ); | 73 | |
74 | $this->get('session')->getFlashBag()->add('notice', $message); | ||
68 | 75 | ||
69 | return $this->redirect($this->generateUrl('homepage')); | 76 | return $this->redirect($this->generateUrl('homepage')); |
70 | } | 77 | } |
diff --git a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadConfigData.php b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadConfigData.php index 5a376453..03be9667 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadConfigData.php +++ b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadConfigData.php | |||
@@ -6,7 +6,6 @@ use Doctrine\Common\DataFixtures\AbstractFixture; | |||
6 | use Doctrine\Common\DataFixtures\OrderedFixtureInterface; | 6 | use Doctrine\Common\DataFixtures\OrderedFixtureInterface; |
7 | use Doctrine\Common\Persistence\ObjectManager; | 7 | use Doctrine\Common\Persistence\ObjectManager; |
8 | use Wallabag\CoreBundle\Entity\Config; | 8 | use Wallabag\CoreBundle\Entity\Config; |
9 | use Wallabag\CoreBundle\Entity\TaggingRule; | ||
10 | 9 | ||
11 | class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface | 10 | class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface |
12 | { | 11 | { |
@@ -16,12 +15,6 @@ class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface | |||
16 | public function load(ObjectManager $manager) | 15 | public function load(ObjectManager $manager) |
17 | { | 16 | { |
18 | $adminConfig = new Config($this->getReference('admin-user')); | 17 | $adminConfig = new Config($this->getReference('admin-user')); |
19 | $taggingRule = new TaggingRule(); | ||
20 | |||
21 | $taggingRule->setConfig($adminConfig); | ||
22 | $taggingRule->setRule('title matches "wallabag"'); | ||
23 | $taggingRule->setTags(['wallabag']); | ||
24 | $manager->persist($taggingRule); | ||
25 | 18 | ||
26 | $adminConfig->setTheme('material'); | 19 | $adminConfig->setTheme('material'); |
27 | $adminConfig->setItemsPerPage(30); | 20 | $adminConfig->setItemsPerPage(30); |
diff --git a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTaggingRuleData.php b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTaggingRuleData.php index 2e1cc270..7efe6356 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTaggingRuleData.php +++ b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTaggingRuleData.php | |||
@@ -28,6 +28,14 @@ class LoadTaggingRuleData extends AbstractFixture implements OrderedFixtureInter | |||
28 | 28 | ||
29 | $manager->persist($tr2); | 29 | $manager->persist($tr2); |
30 | 30 | ||
31 | $tr3 = new TaggingRule(); | ||
32 | |||
33 | $tr3->setRule('title matches "wallabag"'); | ||
34 | $tr3->setTags(['wallabag']); | ||
35 | $tr3->setConfig($this->getReference('admin-config')); | ||
36 | |||
37 | $manager->persist($tr3); | ||
38 | |||
31 | $manager->flush(); | 39 | $manager->flush(); |
32 | } | 40 | } |
33 | 41 | ||
diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 1271f1f5..ceae78b0 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php | |||
@@ -177,8 +177,16 @@ class Entry | |||
177 | private $user; | 177 | private $user; |
178 | 178 | ||
179 | /** | 179 | /** |
180 | * @ORM\ManyToMany(targetEntity="Tag", inversedBy="entries", cascade={"persist", "remove"}) | 180 | * @ORM\ManyToMany(targetEntity="Tag", inversedBy="entries", cascade={"persist"}) |
181 | * @ORM\JoinTable | 181 | * @ORM\JoinTable( |
182 | * name="entry_tag", | ||
183 | * joinColumns={ | ||
184 | * @ORM\JoinColumn(name="entry_id", referencedColumnName="id") | ||
185 | * }, | ||
186 | * inverseJoinColumns={ | ||
187 | * @ORM\JoinColumn(name="tag_id", referencedColumnName="id") | ||
188 | * } | ||
189 | * ) | ||
182 | * | 190 | * |
183 | * @Groups({"entries_for_user", "export_all"}) | 191 | * @Groups({"entries_for_user", "export_all"}) |
184 | */ | 192 | */ |
@@ -526,13 +534,18 @@ class Entry | |||
526 | } | 534 | } |
527 | } | 535 | } |
528 | 536 | ||
529 | $this->tags[] = $tag; | 537 | $this->tags->add($tag); |
530 | $tag->addEntry($this); | 538 | $tag->addEntry($this); |
531 | } | 539 | } |
532 | 540 | ||
533 | public function removeTag(Tag $tag) | 541 | public function removeTag(Tag $tag) |
534 | { | 542 | { |
543 | if (!$this->tags->contains($tag)) { | ||
544 | return; | ||
545 | } | ||
546 | |||
535 | $this->tags->removeElement($tag); | 547 | $this->tags->removeElement($tag); |
548 | $tag->removeEntry($this); | ||
536 | } | 549 | } |
537 | 550 | ||
538 | /** | 551 | /** |
diff --git a/src/Wallabag/CoreBundle/Entity/Tag.php b/src/Wallabag/CoreBundle/Entity/Tag.php index b4adbbd3..4b480ff1 100644 --- a/src/Wallabag/CoreBundle/Entity/Tag.php +++ b/src/Wallabag/CoreBundle/Entity/Tag.php | |||
@@ -98,9 +98,30 @@ class Tag | |||
98 | return $this->slug; | 98 | return $this->slug; |
99 | } | 99 | } |
100 | 100 | ||
101 | /** | ||
102 | * @param Entry $entry | ||
103 | */ | ||
101 | public function addEntry(Entry $entry) | 104 | public function addEntry(Entry $entry) |
102 | { | 105 | { |
103 | $this->entries[] = $entry; | 106 | if ($this->entries->contains($entry)) { |
107 | return; | ||
108 | } | ||
109 | |||
110 | $this->entries->add($entry); | ||
111 | $entry->addTag($this); | ||
112 | } | ||
113 | |||
114 | /** | ||
115 | * @param Entry $entry | ||
116 | */ | ||
117 | public function removeEntry(Entry $entry) | ||
118 | { | ||
119 | if (!$this->entries->contains($entry)) { | ||
120 | return; | ||
121 | } | ||
122 | |||
123 | $this->entries->removeElement($entry); | ||
124 | $entry->removeTag($this); | ||
104 | } | 125 | } |
105 | 126 | ||
106 | public function hasEntry($entry) | 127 | public function hasEntry($entry) |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml index 1e58352d..213d5790 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | # entry_already_saved: 'Entry already saved on %date%' | 398 | # entry_already_saved: 'Entry already saved on %date%' |
399 | # entry_saved: 'Entry saved' | 399 | # entry_saved: 'Entry saved' |
400 | # entry_saved_failed: 'Failed to save entry' | ||
400 | # entry_updated: 'Entry updated' | 401 | # entry_updated: 'Entry updated' |
401 | # entry_reloaded: 'Entry reloaded' | 402 | # entry_reloaded: 'Entry reloaded' |
402 | # entry_reload_failed: 'Failed to reload entry' | 403 | # entry_reload_failed: 'Failed to reload entry' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml index 512b01bc..89cbbbf8 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | entry_already_saved: 'Eintrag bereits am %date% gespeichert' | 398 | entry_already_saved: 'Eintrag bereits am %date% gespeichert' |
399 | entry_saved: 'Eintag gespeichert' | 399 | entry_saved: 'Eintag gespeichert' |
400 | # entry_saved_failed: 'Failed to save entry' | ||
400 | entry_updated: 'Eintrag aktualisiert' | 401 | entry_updated: 'Eintrag aktualisiert' |
401 | entry_reloaded: 'Eintrag neugeladen' | 402 | entry_reloaded: 'Eintrag neugeladen' |
402 | entry_reload_failed: 'Neuladen des Eintrags fehlgeschlagen' | 403 | entry_reload_failed: 'Neuladen des Eintrags fehlgeschlagen' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml index ae03f809..b65e4522 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | entry_already_saved: 'Entry already saved on %date%' | 398 | entry_already_saved: 'Entry already saved on %date%' |
399 | entry_saved: 'Entry saved' | 399 | entry_saved: 'Entry saved' |
400 | entry_saved_failed: 'Failed to save entry' | ||
400 | entry_updated: 'Entry updated' | 401 | entry_updated: 'Entry updated' |
401 | entry_reloaded: 'Entry reloaded' | 402 | entry_reloaded: 'Entry reloaded' |
402 | entry_reload_failed: 'Failed to reload entry' | 403 | entry_reload_failed: 'Failed to reload entry' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml index 0ae2e243..8351bcf4 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | entry_already_saved: 'Entrada ya guardada por %fecha%' | 398 | entry_already_saved: 'Entrada ya guardada por %fecha%' |
399 | entry_saved: 'Entrada guardada' | 399 | entry_saved: 'Entrada guardada' |
400 | # entry_saved_failed: 'Failed to save entry' | ||
400 | entry_updated: 'Entrada actualizada' | 401 | entry_updated: 'Entrada actualizada' |
401 | entry_reloaded: 'Entrada recargada' | 402 | entry_reloaded: 'Entrada recargada' |
402 | entry_reload_failed: 'Entrada recargada reprobada' | 403 | entry_reload_failed: 'Entrada recargada reprobada' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml index b0601543..db6e5960 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml | |||
@@ -96,8 +96,8 @@ config: | |||
96 | rule_label: 'قانون' | 96 | rule_label: 'قانون' |
97 | tags_label: 'برچسبها' | 97 | tags_label: 'برچسبها' |
98 | faq: | 98 | faq: |
99 | title: 'پرسشهای متداول' | 99 | title: 'پرسشهای متداول' |
100 | tagging_rules_definition_title: 'برچسبگذاری خودکار یعنی چه؟' | 100 | tagging_rules_definition_title: 'برچسبگذاری خودکار یعنی چه؟' |
101 | # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.' | 101 | # tagging_rules_definition_description: 'They are rules used by Wallabag to automatically tag new entries.<br />Each time a new entry is added, all the tagging rules will be used to add the tags you configured, thus saving you the trouble to manually classify your entries.' |
102 | # how_to_use_them_title: 'How do I use them?' | 102 | # how_to_use_them_title: 'How do I use them?' |
103 | # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime <= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime >= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »' | 103 | # how_to_use_them_description: 'Let assume you want to tag new entries as « <i>short reading</i> » when the reading time is inferior to 3 minutes.<br />In that case, you should put « readingTime <= 3 » in the <i>Rule</i> field and « <i>short reading</i> » in the <i>Tags</i> field.<br />Several tags can added simultaneously by separating them by a comma: « <i>short reading, must read</i> »<br />Complex rules can be written by using predefined operators: if « <i>readingTime >= 5 AND domainName = "github.com"</i> » then tag as « <i>long reading, github </i> »' |
@@ -384,30 +384,31 @@ developer: | |||
384 | flashes: | 384 | flashes: |
385 | config: | 385 | config: |
386 | notice: | 386 | notice: |
387 | config_saved: 'پیکربندی ذخیره شد. برخی از تنظیمات پس از این که قطع شدید اعمال میشود.' | 387 | config_saved: 'پیکربندی ذخیره شد. برخی از تنظیمات پس از این که قطع شدید اعمال میشود.' |
388 | password_updated: 'رمز بهروز شد' | 388 | password_updated: 'رمز بهروز شد' |
389 | password_not_updated_demo: "در حالت نمایشی نمیتوانید رمز کاربر را عوض کنید." | 389 | password_not_updated_demo: "در حالت نمایشی نمیتوانید رمز کاربر را عوض کنید." |
390 | user_updated: 'اطلاعات بهروز شد' | 390 | user_updated: 'اطلاعات بهروز شد' |
391 | rss_updated: 'اطلاعات آر-اس-اس بهروز شد' | 391 | rss_updated: 'اطلاعات آر-اس-اس بهروز شد' |
392 | tagging_rules_updated: 'برچسبگذاری خودکار بهروز شد' | 392 | tagging_rules_updated: 'برچسبگذاری خودکار بهروز شد' |
393 | tagging_rules_deleted: 'قانون برچسبگذاری پاک شد' | 393 | tagging_rules_deleted: 'قانون برچسبگذاری پاک شد' |
394 | user_added: 'کابر "%username%" افزوده شد' | 394 | user_added: 'کابر "%username%" افزوده شد' |
395 | rss_token_updated: 'کد آر-اس-اس بهروز شد' | 395 | rss_token_updated: 'کد آر-اس-اس بهروز شد' |
396 | entry: | 396 | entry: |
397 | notice: | 397 | notice: |
398 | entry_already_saved: 'این مقاله در تاریخ %date% ذخیره شده بود' | 398 | entry_already_saved: 'این مقاله در تاریخ %date% ذخیره شده بود' |
399 | entry_saved: 'مقاله ذخیره شد' | 399 | entry_saved: 'مقاله ذخیره شد' |
400 | entry_updated: 'مقاله بهروز شد' | 400 | # entry_saved_failed: 'Failed to save entry' |
401 | entry_reloaded: 'مقاله بهروز شد' | 401 | entry_updated: 'مقاله بهروز شد' |
402 | entry_reload_failed: 'بهروزرسانی مقاله شکست خورد' | 402 | entry_reloaded: 'مقاله بهروز شد' |
403 | entry_archived: 'مقاله بایگانی شد' | 403 | entry_reload_failed: 'بهروزرسانی مقاله شکست خورد' |
404 | entry_unarchived: 'مقاله از بایگانی درآمد' | 404 | entry_archived: 'مقاله بایگانی شد' |
405 | entry_starred: 'مقاله برگزیده شد' | 405 | entry_unarchived: 'مقاله از بایگانی درآمد' |
406 | entry_unstarred: 'مقاله نابرگزیده شد' | 406 | entry_starred: 'مقاله برگزیده شد' |
407 | entry_deleted: 'مقاله پاک شد' | 407 | entry_unstarred: 'مقاله نابرگزیده شد' |
408 | entry_deleted: 'مقاله پاک شد' | ||
408 | tag: | 409 | tag: |
409 | notice: | 410 | notice: |
410 | tag_added: 'برچسب افزوده شد' | 411 | tag_added: 'برچسب افزوده شد' |
411 | import: | 412 | import: |
412 | notice: | 413 | notice: |
413 | failed: 'درونریزی شکست خورد. لطفاً دوباره تلاش کنید.' | 414 | failed: 'درونریزی شکست خورد. لطفاً دوباره تلاش کنید.' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index 954ab0c3..9fc8ca2a 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | entry_already_saved: 'Article déjà sauvergardé le %date%' | 398 | entry_already_saved: 'Article déjà sauvergardé le %date%' |
399 | entry_saved: 'Article enregistré' | 399 | entry_saved: 'Article enregistré' |
400 | entry_saved_failed: "L'enregistrement a échoué" | ||
400 | entry_updated: 'Article mis à jour' | 401 | entry_updated: 'Article mis à jour' |
401 | entry_reloaded: 'Article rechargé' | 402 | entry_reloaded: 'Article rechargé' |
402 | entry_reload_failed: "Le rechargement de l'article a échoué" | 403 | entry_reload_failed: "Le rechargement de l'article a échoué" |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml index 4f3ac090..00ed9c98 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml | |||
@@ -396,6 +396,7 @@ flashes: | |||
396 | notice: | 396 | notice: |
397 | entry_already_saved: 'Contenuto già salvato in data %date%' | 397 | entry_already_saved: 'Contenuto già salvato in data %date%' |
398 | entry_saved: 'Contenuto salvato' | 398 | entry_saved: 'Contenuto salvato' |
399 | # entry_saved_failed: 'Failed to save entry' | ||
399 | entry_updated: 'Contenuto aggiornato' | 400 | entry_updated: 'Contenuto aggiornato' |
400 | entry_reloaded: 'Contenuto ricaricato' | 401 | entry_reloaded: 'Contenuto ricaricato' |
401 | entry_reload_failed: 'Errore nel ricaricamento del contenuto' | 402 | entry_reload_failed: 'Errore nel ricaricamento del contenuto' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml index 24b8c6e2..c81c852b 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | entry_already_saved: 'Article ja salvargardat lo %date%' | 398 | entry_already_saved: 'Article ja salvargardat lo %date%' |
399 | entry_saved: 'Article enregistrat' | 399 | entry_saved: 'Article enregistrat' |
400 | # entry_saved_failed: 'Failed to save entry' | ||
400 | entry_updated: 'Article mes a jorn' | 401 | entry_updated: 'Article mes a jorn' |
401 | entry_reloaded: 'Article recargat' | 402 | entry_reloaded: 'Article recargat' |
402 | entry_reload_failed: "Fracàs de l'actualizacion de l'article" | 403 | entry_reload_failed: "Fracàs de l'actualizacion de l'article" |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml index fa23f0b8..3707a857 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | entry_already_saved: 'Wpis już został dodany %date%' | 398 | entry_already_saved: 'Wpis już został dodany %date%' |
399 | entry_saved: 'Wpis zapisany' | 399 | entry_saved: 'Wpis zapisany' |
400 | # entry_saved_failed: 'Failed to save entry' | ||
400 | entry_updated: 'Wpis zaktualizowany' | 401 | entry_updated: 'Wpis zaktualizowany' |
401 | entry_reloaded: 'Wpis ponownie załadowany' | 402 | entry_reloaded: 'Wpis ponownie załadowany' |
402 | entry_reload_failed: 'Błąd ponownego załadowania' | 403 | entry_reload_failed: 'Błąd ponownego załadowania' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml index 648ba370..27be1edc 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | # entry_already_saved: 'Entry already saved on %date%' | 398 | # entry_already_saved: 'Entry already saved on %date%' |
399 | # entry_saved: 'Entry saved' | 399 | # entry_saved: 'Entry saved' |
400 | # entry_saved_failed: 'Failed to save entry' | ||
400 | # entry_updated: 'Entry updated' | 401 | # entry_updated: 'Entry updated' |
401 | # entry_reloaded: 'Entry reloaded' | 402 | # entry_reloaded: 'Entry reloaded' |
402 | # entry_reload_failed: 'Failed to reload entry' | 403 | # entry_reload_failed: 'Failed to reload entry' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml index 0fc8d328..85ee7316 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml | |||
@@ -397,6 +397,7 @@ flashes: | |||
397 | notice: | 397 | notice: |
398 | entry_already_saved: 'Entry already saved on %date%' | 398 | entry_already_saved: 'Entry already saved on %date%' |
399 | entry_saved: 'Makale kaydedildi' | 399 | entry_saved: 'Makale kaydedildi' |
400 | # entry_saved_failed: 'Failed to save entry' | ||
400 | # entry_updated: 'Entry updated' | 401 | # entry_updated: 'Entry updated' |
401 | entry_reloaded: 'Makale içeriği yenilendi' | 402 | entry_reloaded: 'Makale içeriği yenilendi' |
402 | # entry_reload_failed: 'Failed to reload entry' | 403 | # entry_reload_failed: 'Failed to reload entry' |
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php index c7087a71..5ce893c1 100644 --- a/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php +++ b/src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php | |||
@@ -163,7 +163,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
163 | /** | 163 | /** |
164 | * This test will require an internet connection. | 164 | * This test will require an internet connection. |
165 | */ | 165 | */ |
166 | public function testPostNewThatWillBeTaggued() | 166 | public function testPostNewThatWillBeTagged() |
167 | { | 167 | { |
168 | $this->logInAs('admin'); | 168 | $this->logInAs('admin'); |
169 | $client = $this->getClient(); | 169 | $client = $this->getClient(); |
@@ -181,8 +181,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
181 | $client->submit($form, $data); | 181 | $client->submit($form, $data); |
182 | 182 | ||
183 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 183 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); |
184 | 184 | $this->assertContains('/', $client->getResponse()->getTargetUrl()); | |
185 | $client->followRedirect(); | ||
186 | 185 | ||
187 | $em = $client->getContainer() | 186 | $em = $client->getContainer() |
188 | ->get('doctrine.orm.entity_manager'); | 187 | ->get('doctrine.orm.entity_manager'); |
@@ -196,6 +195,35 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
196 | 195 | ||
197 | $em->remove($entry); | 196 | $em->remove($entry); |
198 | $em->flush(); | 197 | $em->flush(); |
198 | |||
199 | // and now re-submit it to test the cascade persistence for tags after entry removal | ||
200 | // related https://github.com/wallabag/wallabag/issues/2121 | ||
201 | $crawler = $client->request('GET', '/new'); | ||
202 | |||
203 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
204 | |||
205 | $form = $crawler->filter('form[name=entry]')->form(); | ||
206 | |||
207 | $data = [ | ||
208 | 'entry[url]' => $url = 'https://github.com/wallabag/wallabag/tree/master', | ||
209 | ]; | ||
210 | |||
211 | $client->submit($form, $data); | ||
212 | |||
213 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
214 | $this->assertContains('/', $client->getResponse()->getTargetUrl()); | ||
215 | |||
216 | $entry = $em | ||
217 | ->getRepository('WallabagCoreBundle:Entry') | ||
218 | ->findOneByUrl($url); | ||
219 | |||
220 | $tags = $entry->getTags(); | ||
221 | |||
222 | $this->assertCount(1, $tags); | ||
223 | $this->assertEquals('wallabag', $tags[0]->getLabel()); | ||
224 | |||
225 | $em->remove($entry); | ||
226 | $em->flush(); | ||
199 | } | 227 | } |
200 | 228 | ||
201 | public function testArchive() | 229 | public function testArchive() |