Parcourir la source

Ajout de l'action "Retirer des favoris".

bastien il y a 13 ans
Parent
révision
b26e68c7f8

+ 1 - 0
app/Resources/translations/elements.fr.yml Voir le fichier

@@ -5,6 +5,7 @@ noelements:
5 5
 element:
6 6
   favorite:
7 7
     add:                Ajouter a mes favoris
8
+    remove:             Retirer de mes favoris
8 9
   add:
9 10
     group:
10 11
       will_be_in:       L'élément sera ajouté dans le groupe

+ 3 - 0
src/Muzich/CoreBundle/Resources/views/SearchElement/default.html.twig Voir le fichier

@@ -10,6 +10,9 @@
10 10
           <a href="{{ element.url }}" target="_blank">link</a>
11 11
           
12 12
           {% if element.getCountFavorite %}
13
+            | <a href="{{ path('favorite_remove', { 'id': element.id, 'token': user.personalHash }) }}" >
14
+              {{ 'element.favorite.remove'|trans({}, 'elements') }}
15
+            </a>
13 16
           {% else %}
14 17
             | <a href="{{ path('favorite_add', { 'id': element.id, 'token': user.personalHash }) }}" >
15 18
               {{ 'element.favorite.add'|trans({}, 'elements') }}

+ 39 - 0
src/Muzich/FavoriteBundle/Controller/FavoriteController.php Voir le fichier

@@ -71,6 +71,45 @@ class FavoriteController extends Controller
71 71
   }
72 72
   
73 73
   /**
74
+   * Retire comme favoris l'element en id
75
+   * 
76
+   * @param int $id
77
+   * @param string $token 
78
+   */
79
+  public function removeAction($id, $token)
80
+  {
81
+    $user = $this->getUser();
82
+    $em = $this->getDoctrine()->getEntityManager();
83
+    
84
+    if ($user->getPersonalHash() != $token || !is_numeric($id)
85
+      || !($element = $em->getRepository('MuzichCoreBundle:Element')->findOneById($id))
86
+    )
87
+    {
88
+      throw $this->createNotFoundException();
89
+    }
90
+
91
+    // Si l'élément est déjà en favoris, ce qui est cencé être le cas
92
+    if (($fav = $em->getRepository('MuzichCoreBundle:UsersElementsFavorites')
93
+      ->findOneBy(array(
94
+        'user'    => $user->getId(),
95
+        'element' => $id
96
+      ))))
97
+    {
98
+      $em->remove($fav);
99
+      $em->flush();
100
+    }
101
+    
102
+    if ($this->getRequest()->isXmlHttpRequest())
103
+    {
104
+      
105
+    }
106
+    else
107
+    {
108
+      return $this->redirect($this->container->get('request')->headers->get('referer'));
109
+    }
110
+  }
111
+  
112
+  /**
74 113
    * Page affichant les elements favoris de l'utilisateur
75 114
    * 
76 115
    * @Template()

+ 4 - 0
src/Muzich/FavoriteBundle/Resources/config/routing.yml Voir le fichier

@@ -2,6 +2,10 @@
2 2
 favorite_add:
3 3
   pattern:   /favorite/add/{id}/{token}
4 4
   defaults: { _controller: MuzichFavoriteBundle:Favorite:add }
5
+  
6
+favorite_remove:
7
+  pattern:   /favorite/remove/{id}/{token}
8
+  defaults: { _controller: MuzichFavoriteBundle:Favorite:remove }
5 9
 
6 10
 favorites_my_list:
7 11
   pattern:   /favorites