aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller')
-rw-r--r--src/Wallabag/CoreBundle/Controller/ConfigController.php79
-rw-r--r--src/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleController.php138
2 files changed, 215 insertions, 2 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php
index 56efe82b..3efc7bb3 100644
--- a/src/Wallabag/CoreBundle/Controller/ConfigController.php
+++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php
@@ -14,10 +14,13 @@ use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
14use Symfony\Component\Routing\Annotation\Route; 14use Symfony\Component\Routing\Annotation\Route;
15use Symfony\Component\Validator\Constraints\Locale as LocaleConstraint; 15use Symfony\Component\Validator\Constraints\Locale as LocaleConstraint;
16use Wallabag\CoreBundle\Entity\Config; 16use Wallabag\CoreBundle\Entity\Config;
17use Wallabag\CoreBundle\Entity\IgnoreOriginUserRule;
18use Wallabag\CoreBundle\Entity\RuleInterface;
17use Wallabag\CoreBundle\Entity\TaggingRule; 19use Wallabag\CoreBundle\Entity\TaggingRule;
18use Wallabag\CoreBundle\Form\Type\ChangePasswordType; 20use Wallabag\CoreBundle\Form\Type\ChangePasswordType;
19use Wallabag\CoreBundle\Form\Type\ConfigType; 21use Wallabag\CoreBundle\Form\Type\ConfigType;
20use Wallabag\CoreBundle\Form\Type\FeedType; 22use Wallabag\CoreBundle\Form\Type\FeedType;
23use Wallabag\CoreBundle\Form\Type\IgnoreOriginUserRuleType;
21use Wallabag\CoreBundle\Form\Type\TaggingRuleImportType; 24use Wallabag\CoreBundle\Form\Type\TaggingRuleImportType;
22use Wallabag\CoreBundle\Form\Type\TaggingRuleType; 25use Wallabag\CoreBundle\Form\Type\TaggingRuleType;
23use Wallabag\CoreBundle\Form\Type\UserInformationType; 26use Wallabag\CoreBundle\Form\Type\UserInformationType;
@@ -173,6 +176,40 @@ class ConfigController extends Controller
173 return $this->redirect($this->generateUrl('config') . '#set5'); 176 return $this->redirect($this->generateUrl('config') . '#set5');
174 } 177 }
175 178
179 // handle ignore origin rules
180 $ignoreOriginUserRule = new IgnoreOriginUserRule();
181 $action = $this->generateUrl('config') . '#set6';
182
183 if ($request->query->has('ignore-origin-user-rule')) {
184 $ignoreOriginUserRule = $this->getDoctrine()
185 ->getRepository('WallabagCoreBundle:IgnoreOriginUserRule')
186 ->find($request->query->get('ignore-origin-user-rule'));
187
188 if ($this->getUser()->getId() !== $ignoreOriginUserRule->getConfig()->getUser()->getId()) {
189 return $this->redirect($action);
190 }
191
192 $action = $this->generateUrl('config', [
193 'ignore-origin-user-rule' => $ignoreOriginUserRule->getId(),
194 ]) . '#set6';
195 }
196
197 $newIgnoreOriginUserRule = $this->createForm(IgnoreOriginUserRuleType::class, $ignoreOriginUserRule, ['action' => $action]);
198 $newIgnoreOriginUserRule->handleRequest($request);
199
200 if ($newIgnoreOriginUserRule->isSubmitted() && $newIgnoreOriginUserRule->isValid()) {
201 $ignoreOriginUserRule->setConfig($config);
202 $em->persist($ignoreOriginUserRule);
203 $em->flush();
204
205 $this->addFlash(
206 'notice',
207 'flashes.config.notice.ignore_origin_rules_updated'
208 );
209
210 return $this->redirect($this->generateUrl('config') . '#set6');
211 }
212
176 return $this->render('WallabagCoreBundle:Config:index.html.twig', [ 213 return $this->render('WallabagCoreBundle:Config:index.html.twig', [
177 'form' => [ 214 'form' => [
178 'config' => $configForm->createView(), 215 'config' => $configForm->createView(),
@@ -181,6 +218,7 @@ class ConfigController extends Controller
181 'user' => $userForm->createView(), 218 'user' => $userForm->createView(),
182 'new_tagging_rule' => $newTaggingRule->createView(), 219 'new_tagging_rule' => $newTaggingRule->createView(),
183 'import_tagging_rule' => $taggingRulesImportform->createView(), 220 'import_tagging_rule' => $taggingRulesImportform->createView(),
221 'new_ignore_origin_user_rule' => $newIgnoreOriginUserRule->createView(),
184 ], 222 ],
185 'feed' => [ 223 'feed' => [
186 'username' => $user->getUsername(), 224 'username' => $user->getUsername(),
@@ -448,6 +486,43 @@ class ConfigController extends Controller
448 } 486 }
449 487
450 /** 488 /**
489 * Deletes an ignore origin rule and redirect to the config homepage.
490 *
491 * @Route("/ignore-origin-user-rule/delete/{id}", requirements={"id" = "\d+"}, name="delete_ignore_origin_rule")
492 *
493 * @return RedirectResponse
494 */
495 public function deleteIgnoreOriginRuleAction(IgnoreOriginUserRule $rule)
496 {
497 $this->validateRuleAction($rule);
498
499 $em = $this->getDoctrine()->getManager();
500 $em->remove($rule);
501 $em->flush();
502
503 $this->addFlash(
504 'notice',
505 'flashes.config.notice.ignore_origin_rules_deleted'
506 );
507
508 return $this->redirect($this->generateUrl('config') . '#set6');
509 }
510
511 /**
512 * Edit an ignore origin rule.
513 *
514 * @Route("/ignore-origin-user-rule/edit/{id}", requirements={"id" = "\d+"}, name="edit_ignore_origin_rule")
515 *
516 * @return RedirectResponse
517 */
518 public function editIgnoreOriginRuleAction(IgnoreOriginUserRule $rule)
519 {
520 $this->validateRuleAction($rule);
521
522 return $this->redirect($this->generateUrl('config') . '?ignore-origin-user-rule=' . $rule->getId() . '#set6');
523 }
524
525 /**
451 * Remove all annotations OR tags OR entries for the current user. 526 * Remove all annotations OR tags OR entries for the current user.
452 * 527 *
453 * @Route("/reset/{type}", requirements={"id" = "annotations|tags|entries"}, name="config_reset") 528 * @Route("/reset/{type}", requirements={"id" = "annotations|tags|entries"}, name="config_reset")
@@ -659,10 +734,10 @@ class ConfigController extends Controller
659 /** 734 /**
660 * Validate that a rule can be edited/deleted by the current user. 735 * Validate that a rule can be edited/deleted by the current user.
661 */ 736 */
662 private function validateRuleAction(TaggingRule $rule) 737 private function validateRuleAction(RuleInterface $rule)
663 { 738 {
664 if ($this->getUser()->getId() !== $rule->getConfig()->getUser()->getId()) { 739 if ($this->getUser()->getId() !== $rule->getConfig()->getUser()->getId()) {
665 throw $this->createAccessDeniedException('You can not access this tagging rule.'); 740 throw $this->createAccessDeniedException('You can not access this rule.');
666 } 741 }
667 } 742 }
668 743
diff --git a/src/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleController.php b/src/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleController.php
new file mode 100644
index 00000000..ef1f0ed7
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleController.php
@@ -0,0 +1,138 @@
1<?php
2
3namespace Wallabag\CoreBundle\Controller;
4
5use Symfony\Bundle\FrameworkBundle\Controller\Controller;
6use Symfony\Component\HttpFoundation\Request;
7use Symfony\Component\Routing\Annotation\Route;
8use Wallabag\CoreBundle\Entity\IgnoreOriginInstanceRule;
9
10/**
11 * IgnoreOriginInstanceRuleController controller.
12 *
13 * @Route("/ignore-origin-instance-rules")
14 */
15class IgnoreOriginInstanceRuleController extends Controller
16{
17 /**
18 * Lists all IgnoreOriginInstanceRule entities.
19 *
20 * @Route("/", name="ignore_origin_instance_rules_index", methods={"GET"})
21 */
22 public function indexAction()
23 {
24 $rules = $this->get('wallabag_core.ignore_origin_instance_rule_repository')->findAll();
25
26 return $this->render('WallabagCoreBundle:IgnoreOriginInstanceRule:index.html.twig', [
27 'rules' => $rules,
28 ]);
29 }
30
31 /**
32 * Creates a new ignore origin instance rule entity.
33 *
34 * @Route("/new", name="ignore_origin_instance_rules_new", methods={"GET", "POST"})
35 *
36 * @return \Symfony\Component\HttpFoundation\Response
37 */
38 public function newAction(Request $request)
39 {
40 $ignoreOriginInstanceRule = new IgnoreOriginInstanceRule();
41
42 $form = $this->createForm('Wallabag\CoreBundle\Form\Type\IgnoreOriginInstanceRuleType', $ignoreOriginInstanceRule);
43 $form->handleRequest($request);
44
45 if ($form->isSubmitted() && $form->isValid()) {
46 $em = $this->getDoctrine()->getManager();
47 $em->persist($ignoreOriginInstanceRule);
48 $em->flush();
49
50 $this->get('session')->getFlashBag()->add(
51 'notice',
52 $this->get('translator')->trans('flashes.ignore_origin_instance_rule.notice.added')
53 );
54
55 return $this->redirectToRoute('ignore_origin_instance_rules_index');
56 }
57
58 return $this->render('WallabagCoreBundle:IgnoreOriginInstanceRule:new.html.twig', [
59 'rule' => $ignoreOriginInstanceRule,
60 'form' => $form->createView(),
61 ]);
62 }
63
64 /**
65 * Displays a form to edit an existing ignore origin instance rule entity.
66 *
67 * @Route("/{id}/edit", name="ignore_origin_instance_rules_edit", methods={"GET", "POST"})
68 *
69 * @return \Symfony\Component\HttpFoundation\Response
70 */
71 public function editAction(Request $request, IgnoreOriginInstanceRule $ignoreOriginInstanceRule)
72 {
73 $deleteForm = $this->createDeleteForm($ignoreOriginInstanceRule);
74 $editForm = $this->createForm('Wallabag\CoreBundle\Form\Type\IgnoreOriginInstanceRuleType', $ignoreOriginInstanceRule);
75 $editForm->handleRequest($request);
76
77 if ($editForm->isSubmitted() && $editForm->isValid()) {
78 $em = $this->getDoctrine()->getManager();
79 $em->persist($ignoreOriginInstanceRule);
80 $em->flush();
81
82 $this->get('session')->getFlashBag()->add(
83 'notice',
84 $this->get('translator')->trans('flashes.ignore_origin_instance_rule.notice.updated')
85 );
86
87 return $this->redirectToRoute('ignore_origin_instance_rules_index');
88 }
89
90 return $this->render('WallabagCoreBundle:IgnoreOriginInstanceRule:edit.html.twig', [
91 'rule' => $ignoreOriginInstanceRule,
92 'edit_form' => $editForm->createView(),
93 'delete_form' => $deleteForm->createView(),
94 ]);
95 }
96
97 /**
98 * Deletes a site credential entity.
99 *
100 * @Route("/{id}", name="ignore_origin_instance_rules_delete", methods={"DELETE"})
101 *
102 * @return \Symfony\Component\HttpFoundation\RedirectResponse
103 */
104 public function deleteAction(Request $request, IgnoreOriginInstanceRule $ignoreOriginInstanceRule)
105 {
106 $form = $this->createDeleteForm($ignoreOriginInstanceRule);
107 $form->handleRequest($request);
108
109 if ($form->isSubmitted() && $form->isValid()) {
110 $this->get('session')->getFlashBag()->add(
111 'notice',
112 $this->get('translator')->trans('flashes.ignore_origin_instance_rule.notice.deleted')
113 );
114
115 $em = $this->getDoctrine()->getManager();
116 $em->remove($ignoreOriginInstanceRule);
117 $em->flush();
118 }
119
120 return $this->redirectToRoute('ignore_origin_instance_rules_index');
121 }
122
123 /**
124 * Creates a form to delete a ignore origin instance rule entity.
125 *
126 * @param IgnoreOriginInstanceRule $ignoreOriginInstanceRule The ignore origin instance rule entity
127 *
128 * @return \Symfony\Component\Form\Form The form
129 */
130 private function createDeleteForm(IgnoreOriginInstanceRule $ignoreOriginInstanceRule)
131 {
132 return $this->createFormBuilder()
133 ->setAction($this->generateUrl('ignore_origin_instance_rules_delete', ['id' => $ignoreOriginInstanceRule->getId()]))
134 ->setMethod('DELETE')
135 ->getForm()
136 ;
137 }
138}