Skip to content

Commit f5152fd

Browse files
committed
simplification / passage de l'inscription à la veille dans l'espace membre
1 parent 4531529 commit f5152fd

File tree

11 files changed

+132
-125
lines changed

11 files changed

+132
-125
lines changed

app/Resources/views/admin/association/membership/_member_menu.html.twig

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
},
1818
{
1919
"nom": "Veille",
20-
"lien": path('techletter'),
20+
"lien": path('member_techletter'),
2121
"is_active": current == "techletter",
2222
},
2323
{

app/Resources/views/site/member/index.html.twig

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@
9797
<div class="square">
9898
<i class="fa fa-bullhorn"></i> <span class="square--title"> Veille de l'AFUP</span> : {% if has_member_subscribed_to_techletter %}inscrit(e){% else %}non inscrit{% endif %}
9999
<div class="square--link">
100-
<a class="button-inverted button__medium {% if not has_member_subscribed_to_techletter %}button--call-to-action{% endif %}" href="{{ path('techletter') }}">
101-
{% if has_member_subscribed_to_techletter %}Se désincrire{% else %}S'inscrire{% endif %}
100+
<a class="button-inverted button__medium {% if not has_member_subscribed_to_techletter %}button--call-to-action{% endif %}" href="{{ path('member_techletter') }}">
101+
{% if has_member_subscribed_to_techletter %}Consulter{% else %}S'inscrire{% endif %}
102102
</a>
103103
</div>
104104
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{% extends ':admin/association/membership:_base.html.twig' %}
2+
3+
{% block stylesheets %}
4+
{{ parent() }}
5+
<link rel="stylesheet" href="{{ asset('css/glyphicons.css') }}" media="screen" />
6+
<link rel="stylesheet" href="{{ asset('css/techletter.css') }}" media="screen" />
7+
{% endblock %}
8+
9+
10+
{% block submenu %}
11+
{% include ':admin/association/membership:_member_menu.html.twig' with {
12+
current: "techletter"
13+
} only %}
14+
{% endblock %}
15+
16+
{% block page_title %}Veille de l'AFUP{% endblock %}
17+
18+
19+
{% block page_content %}
20+
21+
<p>Pour plus d'informations sur la veille de l'AFUP, consultez <a href="{{ path('techletter') }}">cette page</a>.</p>
22+
23+
{% if not feeUpToDate %}
24+
<div class="txtcenter">
25+
<p class="erreur">
26+
Vous n'êtes pas à jour de votre cotisation.<br>
27+
<br>
28+
Vous ne pourrez donc pas recevoir, vous inscrire ni consulter l'historique des veilles de l'AFUP.<br>
29+
<br>Vous pouvez dès à présent régler votre cotisation via <a href="{{ path('member_membership_fee') }}">"Cotisations".</a>
30+
</p>
31+
</div>
32+
{% else %}
33+
<div class="txtcenter">
34+
{% if subscribed %}
35+
<p>Vous recevez actuellement la veille de l'AFUP deux fois par mois sur l'adresse {{ app.user.email }}.</p>
36+
<br />
37+
<a href="{{ path('member_techletter_unsubscribe') }}" class="button button-inverted">Me désincrire</a>
38+
{% else %}
39+
<p>Vous ne recevez actuellement pas la veille de l'AFUP.</p>
40+
<br />
41+
42+
<form class="techletter-subscription--form" method="post" action="{{ path('member_techletter_subscribe') }}">
43+
<input type="hidden" name="_csrf_token" value="{{ token }}" />
44+
<button class="button button--call-to-action">M'inscrire</button>
45+
</form>
46+
47+
{% endif %}
48+
</div>
49+
{% endif %}
50+
51+
{% endblock %}

app/Resources/views/site/techletter/index.html.twig

+7-46
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
)) }}
1414

1515
<div class="techletter-subscription" id="container">
16+
1617
<div class="techletter-subscription--header">
1718
<div class="techletter-subscription-capture">
1819
<img src="{{ asset('images/techletter/sample.png') }}" />
@@ -23,7 +24,7 @@
2324
Tous les 15 jours, recevez les infos à ne pas rater, sélectionnées par les experts de l'AFUP.<br />
2425
</p>
2526
<p>
26-
<a class="banner-button" href="#techletter-inscription">&gt;&gt; Je m'inscris &lt;&lt;</a>
27+
<a class="banner-button" href="{{ path('member_techletter') }}">&gt;&gt; Je m'inscris &lt;&lt;</a>
2728
</p>
2829
</div>
2930
</div>
@@ -46,53 +47,13 @@
4647
</div>
4748

4849
<div class="techletter-subscription-argument">
49-
<h3>Inscription</h3>
50-
<ul class="techletter-subscription--check" id="techletter-inscription">
51-
<li>
52-
{% if loggedIn %}
53-
<span class="techletter-subscription--check-checked glyphicon glyphicon-check"></span>
54-
Être connecté au Back-office de l'AFUP
55-
{% else %}
56-
<span class="techletter-subscription--check-unchecked glyphicon glyphicon-unchecked"></span>
57-
Être connecté au <a href="{{ url('admin_login') }}?target={{ path('techletter') }}">Back-office de l'AFUP</a>
58-
{% endif %}
59-
</li>
60-
61-
<li>
62-
{% if feeUpToDate %}
63-
<span class="techletter-subscription--check-checked glyphicon glyphicon-check"></span>
64-
Être membre à jour de cotisation
65-
{% else %}
66-
<span class="techletter-subscription--check-unchecked glyphicon glyphicon-unchecked"></span>
67-
Être membre à jour de cotisation. <a href="{{ legacy_router.adminUrl('membre_cotisation') }}">Payer ma cotisation</a>.
68-
{% endif %}
69-
70-
</li>
71-
72-
<li>
73-
{% if subscribed %}
74-
{% if not feeUpToDate %}
75-
<span class="techletter-subscription--check-unchecked glyphicon glyphicon-unchecked"></span>
76-
Vous etes inscrit mais votre cotisation n'est plus à jour. Vous ne recevrez la newsletter que lorsque celle-ci sera à jour.
77-
{% else %}
78-
<span class="techletter-subscription--check-checked glyphicon glyphicon-check"></span>
79-
Félicitations vous &ecirc;tes déjà inscrit!
80-
{% endif %}
81-
{% else %}
82-
<span class="techletter-subscription--check-unchecked glyphicon glyphicon-unchecked"></span>
83-
Vous inscrire en cliquant sur ce bouton:
84-
<form class="techletter-subscription--form" method="post" action="{{ path('techletter_subscribe') }}">
85-
<input type="hidden" name="_csrf_token" value="{{ token }}" />
86-
<button class="banner-button">&gt;&gt; Je m'inscris &lt;&lt;</button>
87-
</form>
88-
{% endif %}
89-
</li>
90-
</ul>
50+
<h3>Prérequis</h3>
51+
<p>
52+
Pour recevoir cette veille il faut être membre à jour de cotisation et cliquer sur le <a href="{{ path('member_techletter') }}">bouton d'inscription</a>
53+
dans l'espace membres.
54+
</p>
9155
</div>
92-
9356
</div>
9457

95-
96-
9758
</div>
9859
{% endblock %}

app/Resources/views/site/techletter/subscribe.html.twig

-28
This file was deleted.

app/config/routing/admin.yml

+13
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,16 @@ member_general_meeting:
8383
member_general_meeting_reports_download:
8484
path: /member/general-meeting-report-download/{filename}
8585
defaults: {_controller: AppBundle:MemberShip:generalMettingDownloadReport}
86+
87+
member_techletter:
88+
path: /member/techletter
89+
defaults: {_controller: AppBundle:MemberShip:techletter}
90+
91+
member_techletter_unsubscribe:
92+
path: /member/techletter-unsubscribe
93+
defaults: {_controller: AppBundle:MemberShip:techletterUnsubscribe}
94+
95+
member_techletter_subscribe:
96+
path: /member/techletter-subscribe
97+
defaults: {_controller: AppBundle:MemberShip:techletterSubscribe}
98+
methods: ["POST"]

app/config/routing/site.yml

-5
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,6 @@ techletter:
6161
options:
6262
sitemap: true
6363

64-
techletter_subscribe:
65-
path: /techletter/subscription
66-
defaults: {_controller: AppBundle:Techletter:subscribe }
67-
methods: ["POST"]
68-
6964
techletter_webhook:
7065
path: /techletter/webhook
7166
defaults: {_controller: AppBundle:Techletter:webhook }

htdocs/css/techletter.css

-18
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,6 @@ div.techletter-subscription{
5858
}
5959
}
6060

61-
ul.techletter-subscription--check{
62-
text-align: left;
63-
}
64-
ul.techletter-subscription--check li span{
65-
font-size:3em;
66-
vertical-align: middle;
67-
}
68-
ul.techletter-subscription--check li span.techletter-subscription--check-unchecked{
69-
color: #ed0678;
70-
}
71-
72-
ul.techletter-subscription--check li span.techletter-subscription--check-checked{
73-
color: #1ebdff;
74-
}
75-
ul.techletter-subscription--check li{
76-
list-style-type: none;
77-
}
78-
7961
form.techletter-subscription--form{
8062
margin: 0;
8163
background-color: transparent;

sources/AppBundle/Association/Model/Repository/TechletterUnsubscriptionsRepository.php

+14
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace AppBundle\Association\Model\Repository;
44

55
use AppBundle\Association\Model\TechletterUnsubscription;
6+
use AppBundle\Association\Model\User;
67
use CCMBenchmark\Ting\Repository\Metadata;
78
use CCMBenchmark\Ting\Repository\MetadataInitializer;
89
use CCMBenchmark\Ting\Repository\Repository;
@@ -28,6 +29,19 @@ public function createFromWebhookData(array $data)
2829
return $techletterUnsubscription;
2930
}
3031

32+
public function createFromUser(User $user)
33+
{
34+
$techletterUnsubscription = new TechletterUnsubscription();
35+
$techletterUnsubscription
36+
->setEmail($user->getEmail())
37+
->setReason("MANUAL")
38+
->setMailchimpId(null)
39+
->setUnsubscriptionDate(new \DateTime())
40+
;
41+
42+
return $techletterUnsubscription;
43+
}
44+
3145
public static function initMetadata(SerializerFactoryInterface $serializerFactory, array $options = [])
3246
{
3347
$metadata = new Metadata($serializerFactory);

sources/AppBundle/Controller/MemberShipController.php

+43
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
use AppBundle\Association\Model\CompanyMemberInvitation;
1818
use AppBundle\Association\Model\Repository\CompanyMemberInvitationRepository;
1919
use AppBundle\Association\Model\Repository\CompanyMemberRepository;
20+
use AppBundle\Association\Model\Repository\TechletterSubscriptionsRepository;
21+
use AppBundle\Association\Model\Repository\TechletterUnsubscriptionsRepository;
2022
use AppBundle\Association\Model\Repository\UserRepository;
2123
use AppBundle\Association\Model\User;
2224
use AppBundle\LegacyModelFactory;
@@ -565,4 +567,45 @@ private function prepareGeneralMeetingsReportsList()
565567

566568
return $reports;
567569
}
570+
571+
public function techletterAction()
572+
{
573+
return $this->render(':site/member:techletter.html.twig', [
574+
'subscribed' => $this->get('ting')->get(TechletterSubscriptionsRepository::class)->hasUserSubscribed($this->getUser()),
575+
'feeUpToDate' => ($this->getUser() !== null and $this->getUser()->getLastSubscription() > new \DateTime()),
576+
'token' => $this->get('security.csrf.token_manager')->getToken('techletter_subscription'),
577+
]);
578+
}
579+
580+
public function techletterSubscribeAction(Request $request)
581+
{
582+
$user = $this->getUser();
583+
$token = $this->get('security.csrf.token_manager')->getToken('techletter_subscription');
584+
585+
if (
586+
$user === null
587+
|| $user->getLastSubscription() < new \DateTime()
588+
|| $request->request->has('_csrf_token') === false
589+
|| $request->request->get('_csrf_token') !== $token->getValue()
590+
) {
591+
throw $this->createAccessDeniedException('You cannot subscribe to the techletter');
592+
}
593+
594+
$this->addFlash('success', "Vous êtes maintenant inscrit à la veille de l'AFUP");
595+
596+
$this->get('ting')->get(TechletterSubscriptionsRepository::class)->subscribe($user);
597+
598+
return $this->redirectToRoute('member_techletter');
599+
}
600+
601+
public function techletterUnsubscribeAction(Request $request)
602+
{
603+
$techletterUnsubscriptionRepository = $this->get('ting')->get(TechletterUnsubscriptionsRepository::class);
604+
$techletterUnsubscription = $techletterUnsubscriptionRepository->createFromUser($this->getUser());
605+
$techletterUnsubscriptionRepository->save($techletterUnsubscription);
606+
607+
$this->addFlash('success', "Vous êtes maintenant désincrit à la veille de l'AFUP");
608+
609+
return $this->redirectToRoute('member_techletter');
610+
}
568611
}

sources/AppBundle/Controller/TechletterController.php

+1-25
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace AppBundle\Controller;
44

5-
use AppBundle\Association\Model\Repository\TechletterSubscriptionsRepository;
65
use AppBundle\Association\Model\Repository\TechletterUnsubscriptionsRepository;
76
use Symfony\Component\HttpFoundation\Request;
87
use Symfony\Component\HttpFoundation\Response;
@@ -11,30 +10,7 @@ class TechletterController extends SiteBaseController
1110
{
1211
public function indexAction()
1312
{
14-
return $this->render('site/techletter/index.html.twig', [
15-
'subscribed' => $this->get('ting')->get(TechletterSubscriptionsRepository::class)->hasUserSubscribed($this->getUser()),
16-
'loggedIn' => ($this->getUser() !== null),
17-
'feeUpToDate' => ($this->getUser() !== null and $this->getUser()->getLastSubscription() > new \DateTime()),
18-
'token' => $this->get('security.csrf.token_manager')->getToken('techletter_subscription')
19-
]);
20-
}
21-
22-
public function subscribeAction(Request $request)
23-
{
24-
$user = $this->getUser();
25-
$token = $this->get('security.csrf.token_manager')->getToken('techletter_subscription');
26-
27-
if (
28-
$user === null
29-
|| $user->getLastSubscription() < new \DateTime()
30-
|| $request->request->has('_csrf_token') === false
31-
|| $request->request->get('_csrf_token') !== $token->getValue()
32-
) {
33-
throw $this->createAccessDeniedException('You cannot subscribe to the techletter');
34-
}
35-
36-
$this->get('ting')->get(TechletterSubscriptionsRepository::class)->subscribe($user);
37-
return $this->render('site/techletter/subscribe.html.twig');
13+
return $this->render('site/techletter/index.html.twig');
3814
}
3915

4016
/**

0 commit comments

Comments
 (0)