Просмотр исходного кода

Evolution #598: Inscription: newsletter / pubs

Sevajol Bastien 11 лет назад
Родитель
Сommit
91b86b4f3e

+ 3 - 0
app/Resources/translations/userform.fr.yml Просмотреть файл

@@ -9,6 +9,9 @@ password:
9 9
   first:   Mot de passe
10 10
   second:  Mot de passe (vérification)
11 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 16
 help:
14 17
   token:   |

+ 5 - 0
app/Resources/translations/userui.fr.yml Просмотреть файл

@@ -65,6 +65,11 @@ my_account:
65 65
     help:           'Choisissez une image puis préssez le bouton "Mettre à jour"'
66 66
     success:        Votre avatar a bien été mis à jour
67 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 74
 connexion:
70 75
   password_lost:    Mot de passe perdu ?

+ 19 - 0
src/Muzich/CoreBundle/Entity/User.php Просмотреть файл

@@ -232,6 +232,25 @@ class User extends BaseUser
232 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 256
   public function __construct()

Разница между файлами не показана из-за своего большого размера
+ 532 - 505
src/Muzich/CoreBundle/Tests/Controller/UserControllerTest.php


+ 47 - 1
src/Muzich/UserBundle/Controller/UserController.php Просмотреть файл

@@ -31,6 +31,31 @@ class UserController extends Controller
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 59
   protected function getTagsFavoritesForm($user)
35 60
   {
36 61
     $ids = array();
@@ -90,7 +115,8 @@ class UserController extends Controller
90 115
       'form_tags_favorites_name' => $form_tags_favorites->getName(),
91 116
       'favorite_tags_id'         => $this->getTagsFavorites(),
92 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,4 +632,24 @@ class UserController extends Controller
606 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 Просмотреть файл

@@ -48,6 +48,7 @@ class LoadUserData extends AbstractFixture implements OrderedFixtureInterface, C
48 48
     
49 49
     $user->setPlainPassword($password_raw);
50 50
     $user->setEnabled($enabled);
51
+    $user->cgu_accepted = true;
51 52
     $this->user_manager->updatePassword($user);
52 53
     
53 54
     $this->user_manager->updateUser($user, false);

+ 12 - 0
src/Muzich/UserBundle/Form/Type/RegistrationFormType.php Просмотреть файл

@@ -15,6 +15,18 @@ class RegistrationFormType extends BaseType
15 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 32
   public function getName()

+ 7 - 2
src/Muzich/UserBundle/Resources/config/routing.yml Просмотреть файл

@@ -1,5 +1,3 @@
1
-
2
-
3 1
 my_account:
4 2
   pattern:  /account
5 3
   defaults: { _controller: MuzichUserBundle:User:account }
@@ -50,3 +48,10 @@ user_update_avatar:
50 48
   defaults: { _controller: MuzichUserBundle:User:updateAvatar }
51 49
   requirements:
52 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 Просмотреть файл

@@ -46,6 +46,29 @@
46 46
       {{ form_errors(form.token) }}
47 47
       {{ form_label(form.token, 'token'|trans({}, 'userform')) }}
48 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 72
     </div> 
50 73
 
51 74
     {{ form_rest(form) }}

+ 19 - 0
src/Muzich/UserBundle/Resources/views/User/account.html.twig Просмотреть файл

@@ -102,5 +102,24 @@
102 102
       </form>
103 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 124
   </div>
106 125
 {% endblock %}

+ 16 - 0
src/Muzich/UserBundle/Resources/views/User/preference_form.html.twig Просмотреть файл

@@ -0,0 +1,16 @@
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 Просмотреть файл

@@ -1674,4 +1674,11 @@ div#presubscription input[type="submit"]
1674 1674
 ul.element_thumb_actions li.score
1675 1675
 {
1676 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
 }