Commit 7664a6268414df1794cb01f7613d0e2250cc2ecc
1 parent
64e664d9
Support de la nuit de l'info
Showing
7 changed files
with
178 additions
and
9 deletions
Show diff stats
@@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
1 | +var mongoose = require('mongoose'); | ||
2 | + | ||
3 | +module.exports = mongoose.model('Ninfo', { | ||
4 | + login: { | ||
5 | + type: String, | ||
6 | + default: 'login' | ||
7 | + }, | ||
8 | + equipe: { | ||
9 | + type: String, | ||
10 | + default: 'nope' | ||
11 | + }, | ||
12 | + comment: { | ||
13 | + type: String, | ||
14 | + default: '' | ||
15 | + } | ||
16 | +}); |
app/routes/ApiRtes.js
1 | var MembresServ = require('../services/MembresServ'); | 1 | var MembresServ = require('../services/MembresServ'); |
2 | +var NinfoServ = require('../services/NinfoServ'); | ||
2 | var PolyUserServ = require('../services/PolyUserServ'); | 3 | var PolyUserServ = require('../services/PolyUserServ'); |
3 | var DecryptServ = require('../services/DecryptServ'); | 4 | var DecryptServ = require('../services/DecryptServ'); |
4 | var DosssServ = require('../services/DosssServ'); | 5 | var DosssServ = require('../services/DosssServ'); |
@@ -60,6 +61,11 @@ giveBack = function (res, status) { | @@ -60,6 +61,11 @@ giveBack = function (res, status) { | ||
60 | }; | 61 | }; |
61 | 62 | ||
62 | // Authentication | 63 | // Authentication |
64 | +addLogin = function (req, res, next) { | ||
65 | + req.body.login = req.session.data.login; | ||
66 | + next(); | ||
67 | +}; | ||
68 | + | ||
63 | reqAuth = function (req, res, next) { | 69 | reqAuth = function (req, res, next) { |
64 | if (req.session.data && req.session.data.login) { | 70 | if (req.session.data && req.session.data.login) { |
65 | next(); | 71 | next(); |
@@ -134,6 +140,7 @@ sessionData = function (session, cb) { | @@ -134,6 +140,7 @@ sessionData = function (session, cb) { | ||
134 | session.section = res[0].section; | 140 | session.section = res[0].section; |
135 | session.membre = res[1]; | 141 | session.membre = res[1]; |
136 | session.bureau = res[2]; | 142 | session.bureau = res[2]; |
143 | + // TODO session.personnel | ||
137 | cb(null, session); | 144 | cb(null, session); |
138 | } | 145 | } |
139 | }); | 146 | }); |
@@ -198,9 +205,7 @@ assertSubject = function (serv) { | @@ -198,9 +205,7 @@ assertSubject = function (serv) { | ||
198 | 205 | ||
199 | addSubject = function (serv) { | 206 | addSubject = function (serv) { |
200 | return function (req, res) { | 207 | return function (req, res) { |
201 | - | ||
202 | serv.add(req.body, ensureExists(res, 404, function (membre) { | 208 | serv.add(req.body, ensureExists(res, 404, function (membre) { |
203 | - | ||
204 | serv.simpleData(membre, giveBack(res, 201)); | 209 | serv.simpleData(membre, giveBack(res, 201)); |
205 | })); | 210 | })); |
206 | }; | 211 | }; |
@@ -236,6 +241,28 @@ api.post('/membres', reqBureau, assertSubject(MembresServ), function (req, res) | @@ -236,6 +241,28 @@ api.post('/membres', reqBureau, assertSubject(MembresServ), function (req, res) | ||
236 | api.delete('/membres/:_id', reqBureau, getSubject(MembresServ), delSubject(MembresServ)); | 241 | api.delete('/membres/:_id', reqBureau, getSubject(MembresServ), delSubject(MembresServ)); |
237 | 242 | ||
238 | 243 | ||
244 | +// Nuit de l'Info | ||
245 | + | ||
246 | +// Obtenir les préférences | ||
247 | +api.get('/profile/ninfo', reqAuth, addLogin, function(req, res) { | ||
248 | + NinfoServ.getLogin(req.body.login, function(err, ninfo) { | ||
249 | + console.log(err); | ||
250 | + if (err) { // TODO Tester si on peut pas créer un objet directement et | ||
251 | + // récupérer les valeurs par défaut de la BDD | ||
252 | + ninfo = { | ||
253 | + equipe: 'nope', | ||
254 | + comment: '' | ||
255 | + }; | ||
256 | + } | ||
257 | + console.log(ninfo); | ||
258 | + NinfoServ.simpleData(ninfo, giveBack(res, 200)); | ||
259 | + }); | ||
260 | +}); | ||
261 | + | ||
262 | +// Mettre à jour les préférences | ||
263 | +api.put('/profile/ninfo', reqAuth, addLogin, assertSubject(NinfoServ), addSubject(NinfoServ)); | ||
264 | + | ||
265 | + | ||
239 | // Dossiers | 266 | // Dossiers |
240 | 267 | ||
241 | parentId = function (req, res, next) { | 268 | parentId = function (req, res, next) { |
@@ -269,11 +296,6 @@ api.post('/convs', reqMembre, parentId, assertSubject(ConvsServ), addSubject(Con | @@ -269,11 +296,6 @@ api.post('/convs', reqMembre, parentId, assertSubject(ConvsServ), addSubject(Con | ||
269 | // Supression d'une conversation | 296 | // Supression d'une conversation |
270 | api.delete('/convs/:_id', reqBureau, getSubject(ConvsServ), delSubject(ConvsServ)); | 297 | api.delete('/convs/:_id', reqBureau, getSubject(ConvsServ), delSubject(ConvsServ)); |
271 | 298 | ||
272 | -addLogin = function (req, res, next) { | ||
273 | - req.body.login = req.session.data.login; | ||
274 | - next(); | ||
275 | -}; | ||
276 | - | ||
277 | // Messages | 299 | // Messages |
278 | 300 | ||
279 | // Liste des messs | 301 | // Liste des messs |
@@ -0,0 +1,47 @@ | @@ -0,0 +1,47 @@ | ||
1 | +var NinfoModl = require('../models/NinfoModl'); | ||
2 | +var PolyUserServ = require('../services/PolyUserServ'); | ||
3 | +var async = require('async'); | ||
4 | + | ||
5 | +var NinfoServ = module.exports = { | ||
6 | + | ||
7 | + equipes: ['nope', 'gis', 'ima', 'ci'], | ||
8 | + | ||
9 | + simple: ['equipe', 'comment'], | ||
10 | + | ||
11 | + simpleData: function (ninfoD, cb) { | ||
12 | + var ninfo = {}; | ||
13 | + for (var prop of NinfoServ.simple) { | ||
14 | + ninfo[prop] = ninfoD[prop]; | ||
15 | + } | ||
16 | + cb(null, ninfo); | ||
17 | + }, | ||
18 | + | ||
19 | + | ||
20 | + getLogin: function (login, cb) { | ||
21 | + NinfoModl.findOne({ | ||
22 | + login: login | ||
23 | + }, function createIfNotExist(err, ninfo) { | ||
24 | + if (ninfo) { | ||
25 | + cb(err, ninfo); | ||
26 | + } else { | ||
27 | + NinfoModl.create({login: login}, cb); | ||
28 | + } | ||
29 | + }); | ||
30 | + }, | ||
31 | + | ||
32 | + assert: function(data, cb) { | ||
33 | + cb(null, data.login && NinfoServ.equipes.indexOf(data.equipe) != -1); | ||
34 | + }, | ||
35 | + | ||
36 | + add: function (data, cb) { // Ajouter les préférences, ou les mettre | ||
37 | + // à jour (vu qu'il n'y a pas de sujet add fait les deux) | ||
38 | + // Pas de vérification car tout est fait dans assert (et login n'est pas modifié | ||
39 | + // par l'utilisateur) | ||
40 | + NinfoServ.getLogin(data.login, function(err, ninfo) { | ||
41 | + ninfo.equipe = data.equipe; | ||
42 | + ninfo.comment = data.comment; | ||
43 | + ninfo.save(cb); | ||
44 | + }); | ||
45 | + } | ||
46 | + | ||
47 | +}; |
public/js/app.js
1 | -angular.module('ciApp', ['ngAnimate', 'ngRoute', 'ConnectCtrl', 'MembreCtrl', 'ForumDirCtrl', 'ForumConvCtrl', 'SessionsCtrl', 'ProfileCtrl']).config(function ($routeProvider, $locationProvider) { | 1 | +angular.module('ciApp', ['ngAnimate', 'ngRoute', 'ConnectCtrl', 'MembreCtrl', 'NinfoCtrl', 'ForumDirCtrl', 'ForumConvCtrl', 'SessionsCtrl', 'ProfileCtrl']).config(function ($routeProvider, $locationProvider) { |
2 | $routeProvider | 2 | $routeProvider |
3 | .when('/', { | 3 | .when('/', { |
4 | templateUrl: 'views/home.html' | 4 | templateUrl: 'views/home.html' |
@@ -10,6 +10,10 @@ angular.module('ciApp', ['ngAnimate', 'ngRoute', 'ConnectCtrl', 'MembreCtrl', 'F | @@ -10,6 +10,10 @@ angular.module('ciApp', ['ngAnimate', 'ngRoute', 'ConnectCtrl', 'MembreCtrl', 'F | ||
10 | .when('/forum', { | 10 | .when('/forum', { |
11 | redirectTo: 'forum/dir/root' | 11 | redirectTo: 'forum/dir/root' |
12 | }) | 12 | }) |
13 | + .when('/ninfo', { | ||
14 | + templateUrl: 'views/ninfo.html', | ||
15 | + controller: 'NinfoCtrl' | ||
16 | + }) | ||
13 | .when('/forum/dir/:doss_id', { | 17 | .when('/forum/dir/:doss_id', { |
14 | templateUrl: 'views/forumDir.html', | 18 | templateUrl: 'views/forumDir.html', |
15 | controller: 'ForumDirCtrl' | 19 | controller: 'ForumDirCtrl' |
@@ -0,0 +1,27 @@ | @@ -0,0 +1,27 @@ | ||
1 | +angular.module('NinfoCtrl', ['SessionsServ', 'ApiServ', 'NotifyServ']) | ||
2 | + .controller('NinfoCtrl', function ($scope, SessionServ, ApiServ, NotifyServ) { | ||
3 | + $scope.ninfo = {} | ||
4 | + $scope.saving = false; | ||
5 | + | ||
6 | + $scope.session = SessionServ.cur; | ||
7 | + SessionServ.onChange(function () { | ||
8 | + $scope.session = SessionServ.cur; | ||
9 | + }); | ||
10 | + | ||
11 | + if ($scope.session) { | ||
12 | + ApiServ("récupération des préférence Nuit de l'Info", 'get', 'profile/ninfo', null, function (err, ninfo) { | ||
13 | + if (!err) | ||
14 | + $scope.ninfo = ninfo; | ||
15 | + }); | ||
16 | + } | ||
17 | + | ||
18 | + $scope.save = function () { | ||
19 | + var not = NotifyServ.promise("Sauvegarde..."); | ||
20 | + $scope.saving = true; | ||
21 | + ApiServ("sauvegarde des préférences Nuit de l'Info", 'put', 'profile/ninfo', $scope.ninfo, function (err, membre) { | ||
22 | + if (!err) | ||
23 | + not.success("Sauvegardé !"); | ||
24 | + $scope.saving = false; | ||
25 | + }); | ||
26 | + }; | ||
27 | + }); |
public/views/index.html
@@ -31,6 +31,7 @@ | @@ -31,6 +31,7 @@ | ||
31 | <script src="js/controllers/NavbarCtrl.js"></script> | 31 | <script src="js/controllers/NavbarCtrl.js"></script> |
32 | <script src="js/controllers/ConnectCtrl.js"></script> | 32 | <script src="js/controllers/ConnectCtrl.js"></script> |
33 | <script src="js/controllers/MembreCtrl.js"></script> | 33 | <script src="js/controllers/MembreCtrl.js"></script> |
34 | + <script src="js/controllers/NinfoCtrl.js"></script> | ||
34 | <script src="js/controllers/ProfileCtrl.js"></script> | 35 | <script src="js/controllers/ProfileCtrl.js"></script> |
35 | <script src="js/controllers/ForumDirCtrl.js"></script> | 36 | <script src="js/controllers/ForumDirCtrl.js"></script> |
36 | <script src="js/controllers/ForumConvCtrl.js"></script> | 37 | <script src="js/controllers/ForumConvCtrl.js"></script> |
@@ -53,6 +54,7 @@ | @@ -53,6 +54,7 @@ | ||
53 | <ul class="nav navbar-nav"> | 54 | <ul class="nav navbar-nav"> |
54 | <li><a href="/membres">Membres</a></li> | 55 | <li><a href="/membres">Membres</a></li> |
55 | <li ng-show="session"><a href="/forum">Forum</a></li> | 56 | <li ng-show="session"><a href="/forum">Forum</a></li> |
57 | + <li><a href="/ninfo">Nuit de l'info</a></li> | ||
56 | </ul> | 58 | </ul> |
57 | <ul class="nav navbar-nav navbar-right" id="SessionIndc"> | 59 | <ul class="nav navbar-nav navbar-right" id="SessionIndc"> |
58 | <li> | 60 | <li> |
@@ -70,4 +72,4 @@ | @@ -70,4 +72,4 @@ | ||
70 | </div> | 72 | </div> |
71 | </body> | 73 | </body> |
72 | 74 | ||
73 | -</html> | ||
74 | \ No newline at end of file | 75 | \ No newline at end of file |
76 | +</html> |
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +<div class="container"> | ||
2 | + <h1>Participer à la nuit de l'info !</h1> | ||
3 | + <p> | ||
4 | + À partir d'une problématique donnée, développer une application y répondant le tout en équipe et en une nuit, c'est possible, et c'est la Nuit de l'Info ! | ||
5 | + </p> | ||
6 | + | ||
7 | + <h2>À qui cela s'adresse-t-il ?</h2> | ||
8 | + <p> | ||
9 | + Tout étudiant possédant des compétences utiles pour développer une application informatique est le bienvenu ! Que tu sois programmeur à tes heures libres, que tu suive juste tes cours d'informatique, mais aussi que tu sois graphiste, comunity manager en herbe, administrateur système ou même de créateurs de musique, tu y trouveras ton compte ! | ||
10 | + </p> | ||
11 | + | ||
12 | + <h2>Où et quand cela se déroule-t-il ?</h2> | ||
13 | + <p> | ||
14 | + Cela se passe du 3 décembre à 16h40 jusqu'au 4 à 8h02, au bâtiment M3 sur Lille1. | ||
15 | + </p> | ||
16 | + | ||
17 | + <h2>J'ai d'autres questions, où puis-je trouver des informations en plus ?</h2> | ||
18 | + <p> | ||
19 | + Tu les trouvera peut-être sur <a href="http://www.nuitdelinfo.com/">le site officiel de la Nuit de l'Info</a>.<br/> | ||
20 | + Sinon, n'hésite pas à envoyer <a href="mailto:cinforma@polytech-lille.net">un mail au Club Info</a> qui se fera un plaisir de te répondre ! | ||
21 | + <p> | ||
22 | + | ||
23 | + <div ng-hide="session"> | ||
24 | + <h2>Ça a l'air cool, où est-ce qu'on s'inscrit ?</h2> | ||
25 | + <p> | ||
26 | + Si tu es Polytech Lillois, conncte-toi avec ton identifiant en haut à droite de cette page ! À tout de suite !<br/> | ||
27 | + Si tu n'es pas Polytech Lillois (auquel cas je ne sais pas comment tu es arrivé ici), je te renvoie <a href="http://www.nuitdelinfo.com/">le site officiel de la Nuit de l'Info</a>. | ||
28 | + </p> | ||
29 | + </div> | ||
30 | + | ||
31 | + <div ng-show="session"> | ||
32 | + <h2>Je souhaite participer à la nuit de l'info</h2> | ||
33 | + <p>Ça c'est cool ! On a juste deux petites questions à te poser.</p> | ||
34 | + <form> | ||
35 | + <div class="form-group"> | ||
36 | + <label for="equipe">Dans quelle équipe souhaites-tu participer ?</label><br/> | ||
37 | + <input type="radio" name="equipe" ng-model="ninfo.equipe" value="nope" checked> Je ne souhaite pas participer</input><br/> | ||
38 | + <input type="radio" name="equipe" ng-model="ninfo.equipe" value="ci"> Avec le Club Info</input><br/> | ||
39 | + <input type="radio" name="equipe" ng-model="ninfo.equipe" value="ima"> Avec les IMA</input><br/> | ||
40 | + <input type="radio" name="equipe" ng-model="ninfo.equipe" value="gis"> Avec les GIS</input><br/> | ||
41 | + </div> | ||
42 | + <div class="form-group"> | ||
43 | + <label for="comment">Un petit commentaire ? (facultatif)</label> | ||
44 | + <p>Tu pourrais nous dire quelles capacités tu possède, ou nous dire quel est ton engouement pour cette nuit de folie !</p> | ||
45 | + <textarea ng-model="ninfo.comment" rows="4" cols="50" placeholder="Une fois quand j'avais 10 ans j'ai codé un mini-site en PHP qui donnait ton âge à partir de ta date de naissance et de l'année actuelle. J'aimerais trop mettre à profit mes capacités pour cette nuit de folie !"></textarea> | ||
46 | + </div> | ||
47 | + <button type="submit" ladda="saving" class="btn btn-primary" ng-click="save()">Enregistrer les préférences</button> | ||
48 | + </form> | ||
49 | + </div> | ||
50 | + <br/> | ||
51 | +</div> |