Browse Source

Evolution #598: Inscription: newsletter / pubs

Sevajol Bastien 12 years ago
parent
commit
91b86b4f3e

+ 3 - 0
app/Resources/translations/userform.fr.yml View File

9
   first:   Mot de passe
9
   first:   Mot de passe
10
   second:  Mot de passe (vérification)
10
   second:  Mot de passe (vérification)
11
 token:     Code d'inscription
11
 token:     Code d'inscription
12
+mail_newsletter:  Je souhaite recevoir des emails de la part de Muzi.ch
13
+mail_partner:     Je souhaite recevoir des emails de la part de partenaires de Muzi.ch (Ce service n'est pas actif pas pour le moment)
14
+cgu_accepted:     J'ai lu et j'accepete les <a href="%url%">condition générales d'utilisation de Muzi.ch</a>
12
 
15
 
13
 help:
16
 help:
14
   token:   |
17
   token:   |

+ 5 - 0
app/Resources/translations/userui.fr.yml View File

65
     help:           'Choisissez une image puis préssez le bouton "Mettre à jour"'
65
     help:           'Choisissez une image puis préssez le bouton "Mettre à jour"'
66
     success:        Votre avatar a bien été mis à jour
66
     success:        Votre avatar a bien été mis à jour
67
     error:          Une erreur est survenue lors de la mise à jour de votre avatar
67
     error:          Une erreur est survenue lors de la mise à jour de votre avatar
68
+  preferences:
69
+    title:         Mes préférences
70
+    submit:         Enregistrer mes préférences
71
+    success:        Vos préférences ont bien été mises à jour
72
+    error:          Une erreur est survenue lors de la mise à jour de vos préférences
68
   
73
   
69
 connexion:
74
 connexion:
70
   password_lost:    Mot de passe perdu ?
75
   password_lost:    Mot de passe perdu ?

+ 19 - 0
src/Muzich/CoreBundle/Entity/User.php View File

232
   private $help_tour;
232
   private $help_tour;
233
   
233
   
234
   /**
234
   /**
235
+   * @ORM\Column(type="boolean")
236
+   * @Assert\NotBlank()
237
+   * @var type boolean
238
+   */
239
+  public $cgu_accepted = false;
240
+  
241
+  /**
242
+   * @ORM\Column(type="boolean")
243
+   * @var type boolean
244
+   */
245
+  public $mail_newsletter = true;
246
+  
247
+  /**
248
+   * @ORM\Column(type="boolean")
249
+   * @var type boolean
250
+   */
251
+  public $mail_partner = true;
252
+  
253
+  /**
235
    * 
254
    * 
236
    */
255
    */
237
   public function __construct()
256
   public function __construct()

File diff suppressed because it is too large
+ 532 - 505
src/Muzich/CoreBundle/Tests/Controller/UserControllerTest.php


+ 47 - 1
src/Muzich/UserBundle/Controller/UserController.php View File

31
     ;
31
     ;
32
   }
32
   }
33
   
33
   
34
+  protected function getPreferencesForm()
35
+  {
36
+    /**
37
+     * Bug lors des tests: L'user n'est pas 'lié' a celui en base par doctrine.
38
+     * Docrine le voit si on faire une requete directe.
39
+     */
40
+    if ($this->container->getParameter('env') == 'test')
41
+    {
42
+      $user = $this->getDoctrine()->getRepository('MuzichCoreBundle:User')->findOneById(
43
+        $this->container->get('security.context')->getToken()->getUser()->getId(),
44
+        array()
45
+      )->getSingleResult();
46
+    }
47
+    else
48
+    {
49
+      $user = $this->getUser();
50
+    }
51
+     
52
+    return $this->createFormBuilder($user)
53
+      ->add('mail_newsletter', 'checkbox', array('required' => false))
54
+      ->add('mail_partner', 'checkbox', array('required' => false))
55
+      ->getForm()
56
+    ;
57
+  }
58
+  
34
   protected function getTagsFavoritesForm($user)
59
   protected function getTagsFavoritesForm($user)
35
   {
60
   {
36
     $ids = array();
61
     $ids = array();
90
       'form_tags_favorites_name' => $form_tags_favorites->getName(),
115
       'form_tags_favorites_name' => $form_tags_favorites->getName(),
91
       'favorite_tags_id'         => $this->getTagsFavorites(),
116
       'favorite_tags_id'         => $this->getTagsFavorites(),
92
       'change_email_form'        => $change_email_form->createView(),
117
       'change_email_form'        => $change_email_form->createView(),
93
-      'avatar_form'              => $this->getAvatarForm()->createView()
118
+      'avatar_form'              => $this->getAvatarForm()->createView(),
119
+      'preferences_form'         => $this->getPreferencesForm()->createView()
94
     );
120
     );
95
   }
121
   }
96
   
122
   
606
     return $this->redirect($this->generateUrl('my_account'));
632
     return $this->redirect($this->generateUrl('my_account'));
607
   }
633
   }
608
   
634
   
635
+  public function updatePreferencesAction(Request $request)
636
+  {
637
+    $form = $this->getPreferencesForm();
638
+    $form->bindRequest($request);
639
+    
640
+    if ($form->isValid()) {
641
+      $em = $this->getEntityManager();
642
+      $em->persist($form->getData());
643
+      $em->flush();
644
+
645
+      $this->setFlash('success',
646
+        $this->trans('my_account.preferences.success', array(), 'userui'));
647
+      return $this->redirect($this->generateUrl('my_account'));
648
+    }
649
+    
650
+    $this->setFlash('error',
651
+      $this->trans('my_account.preferences.error', array(), 'userui'));
652
+    return $this->redirect($this->generateUrl('my_account'));
653
+  }
654
+  
609
 }
655
 }

+ 1 - 0
src/Muzich/UserBundle/DataFixtures/ORM/LoadUserData.php View File

48
     
48
     
49
     $user->setPlainPassword($password_raw);
49
     $user->setPlainPassword($password_raw);
50
     $user->setEnabled($enabled);
50
     $user->setEnabled($enabled);
51
+    $user->cgu_accepted = true;
51
     $this->user_manager->updatePassword($user);
52
     $this->user_manager->updatePassword($user);
52
     
53
     
53
     $this->user_manager->updateUser($user, false);
54
     $this->user_manager->updateUser($user, false);

+ 12 - 0
src/Muzich/UserBundle/Form/Type/RegistrationFormType.php View File

15
       "property_path" => false
15
       "property_path" => false
16
     ));
16
     ));
17
     
17
     
18
+    $builder->add('cgu_accepted', 'checkbox', array(
19
+      'required'  => true
20
+    ));
21
+
22
+    $builder->add('mail_newsletter', 'checkbox', array(
23
+      'required'  => false
24
+    ));
25
+
26
+    $builder->add('mail_partner', 'checkbox', array(
27
+      'required'  => false
28
+    ));
29
+    
18
   }
30
   }
19
 
31
 
20
   public function getName()
32
   public function getName()

+ 7 - 2
src/Muzich/UserBundle/Resources/config/routing.yml View File

1
-
2
-
3
 my_account:
1
 my_account:
4
   pattern:  /account
2
   pattern:  /account
5
   defaults: { _controller: MuzichUserBundle:User:account }
3
   defaults: { _controller: MuzichUserBundle:User:account }
50
   defaults: { _controller: MuzichUserBundle:User:updateAvatar }
48
   defaults: { _controller: MuzichUserBundle:User:updateAvatar }
51
   requirements:
49
   requirements:
52
     _method:  POST
50
     _method:  POST
51
+
52
+user_update_preferences:
53
+  pattern:  /account/update-preferences
54
+  defaults: { _controller: MuzichUserBundle:User:updatePreferences }
55
+  requirements:
56
+    _method:  POST
57
+  

+ 23 - 0
src/Muzich/UserBundle/Resources/views/Registration/register.html.twig View File

46
       {{ form_errors(form.token) }}
46
       {{ form_errors(form.token) }}
47
       {{ form_label(form.token, 'token'|trans({}, 'userform')) }}
47
       {{ form_label(form.token, 'token'|trans({}, 'userform')) }}
48
       {{ form_widget(form.token, {'attr':{'class':'niceinput'}}) }}
48
       {{ form_widget(form.token, {'attr':{'class':'niceinput'}}) }}
49
+    </div>
50
+    
51
+    <div class="field">
52
+      {{ form_errors(form.cgu_accepted) }}
53
+      {{ form_label(form.cgu_accepted, '') }}
54
+      {{ form_widget(form.cgu_accepted, {'attr':{}}) }}
55
+      {% autoescape false %}
56
+      {{ 'cgu_accepted'|trans({'%url%':path('info_cgu')}, 'userform') }}
57
+      {% endautoescape %}
58
+    </div>
59
+    
60
+    <div class="field">
61
+      {{ form_errors(form.mail_newsletter) }}
62
+      {{ form_label(form.mail_newsletter, '') }}
63
+      {{ form_widget(form.mail_newsletter, {'attr':{}}) }}
64
+      {{ 'mail_newsletter'|trans({}, 'userform') }}
65
+    </div>
66
+    
67
+    <div class="field">
68
+      {{ form_errors(form.mail_partner) }}
69
+      {{ form_label(form.mail_partner, '') }}
70
+      {{ form_widget(form.mail_partner, {'attr':{}}) }}
71
+      {{ 'mail_partner'|trans({}, 'userform') }}
49
     </div> 
72
     </div> 
50
 
73
 
51
     {{ form_rest(form) }}
74
     {{ form_rest(form) }}

+ 19 - 0
src/Muzich/UserBundle/Resources/views/User/account.html.twig View File

102
       </form>
102
       </form>
103
     </div>
103
     </div>
104
     
104
     
105
+    <h2 data-open="myaccount_preferences">{{ 'my_account.preferences.title'|trans({}, 'userui') }}</h2>
106
+  
107
+    <div id="myaccount_preferences" class="myaccount_part"
108
+       style="display: none;"
109
+    >
110
+      <form
111
+          action="{{ path('user_update_preferences') }}"
112
+          method="post"
113
+        >
114
+        
115
+          {% include "MuzichUserBundle:User:preference_form.html.twig" with { 
116
+            'form': preferences_form
117
+          } %}
118
+      
119
+          <input type="submit" class="button" value="{{ 'my_account.preferences.submit'|trans({}, 'userui') }}" />
120
+      </form>
121
+    </div>
122
+    <div style="clear:both;"></div>
123
+    
105
   </div>
124
   </div>
106
 {% endblock %}
125
 {% endblock %}

+ 16 - 0
src/Muzich/UserBundle/Resources/views/User/preference_form.html.twig View File

1
+
2
+<div class="field">
3
+  {{ form_errors(form.mail_newsletter) }}
4
+  {{ form_label(form.mail_newsletter, '') }}
5
+  {{ form_widget(form.mail_newsletter, {'attr':{}}) }}
6
+  {{ 'mail_newsletter'|trans({}, 'userform') }}
7
+</div>
8
+
9
+<div class="field">
10
+  {{ form_errors(form.mail_partner) }}
11
+  {{ form_label(form.mail_partner, '') }}
12
+  {{ form_widget(form.mail_partner, {'attr':{}}) }}
13
+  {{ 'mail_partner'|trans({}, 'userform') }}
14
+</div> 
15
+
16
+{{ form_rest(form) }}

+ 7 - 0
web/css/main.css View File

1674
 ul.element_thumb_actions li.score
1674
 ul.element_thumb_actions li.score
1675
 {
1675
 {
1676
   color: black;
1676
   color: black;
1677
+}
1678
+
1679
+div#myaccount_preferences input[type="submit"]
1680
+{
1681
+  float: right;
1682
+  margin-right: 7px;
1683
+  margin-top: 5px;
1677
 }
1684
 }