Espaces de noms :
Pour éviter les conflits de nommage de classe, on utilisera les espaces de noms php sur les contrôleurs et les modèles :
Type de classe | Espace de nom |
---|---|
Contrôleur | increase\controllers |
Modèle | increase\models |
Voir Phalcon et espaces de noms
Requêtes Ajax
Il est indispensable d'améliorer la fluidité des pages en effectuant des requêtes partielles en Ajax.
Intégrer pour ce faire phalcon-jquery, voir également la documentation JQuery
A l'adresse user/projects/:idUser, on souhaite afficher la liste des projets d'un client tel que celui-ci pourra la consulter (ce sera ensuite le client connecté).
L'avancement est calculé de la façon suivante :
Soit le projet composé des uses cases suivants :
use case | poids | Avancement |
---|---|---|
UC-1 | 20 | 50% |
UC-2 | 10 | 100% |
UC-1 | 20 | 0% |
On exprime le poids de chaque UC en % du total
use case | poids en % | Avancement |
---|---|---|
UC-1 | 40% | 50% |
UC-2 | 20% | 100% |
UC-1 | 40% | 0% |
L'avancement du projet est de 40%,
Avancement projet = somme sur les uc des (poids relatif*avancement)
On considère qu'il y a retard dans l'avancement d'un projet si le pourcentage d'avancement est inférieur au pourcentage de temps écoulé.
Pour apprécier les éventuels retards ou avances dans l'avancement, on utilise les codes couleur suivants sur la progressBar d'avancement :
Couleur /classe | Signification |
---|---|
<fc #5CB85C>Vert/success</fc> | % d'avancement>= % Temps écoulé |
<fc #F0AD4E>Orange/warning</fc> | % d'avancement< % Temps écoulé |
<fc #D9534F>Rouge/danger</fc> | dateFinPrevue dépassée |
L'ouverture d'un projet par le click sur l'un des boutons Ouvrir doit se faire en Ajax.
A l'adresse user/project/:id, on souhaite afficher le projet dont l'id est passé en paramètre, conséquence de l'ouverture mentionnée précédemment. Toutes les informations affichées sont en lecture.
La zone Equipe sera chargée en Ajax au chargement de la page dans une div #detailProject, à partir de l'adresse project/equipe/:id ou id est l'identifiant du projet.
Elle contient la liste des développeurs affectés au projet (par des cas d'utilisation). Le renseignement poids désigne le poids en % que représente l'intervention du dévelopeur dans le cadre du projet, compte tenu des uses cases dans lesquels il intervient, et du poids de ceux-ci.
Exemple sur un projet :
use case | poids | Développeur |
---|---|---|
UC-1 | 20 | John DOE |
UC-2 | 10 | John DOE |
UC-1 | 20 | Martin SMITH |
John DOE intervient sur UC-1 et UC-2 qui pésent (20+10)/(20+10+20) = 30/50 = 60%
Son poids dans le projet est de 60%, 40% pour SMITH.
La zone message devient visible sur click du bouton #btnMessages, et affiche les messages liés au projet : project/messages/:id
Certains messages appartiennent à un fil de discussion (ils ont été émis en réponse à un autre message ⇒ clé étrangère idFil dans la table message) :
Un bouton doit permettre de fermer le projet, et de retourner à la liste des projets du client (en ajax/Jquery)
On désigne par “Author” les membres d'une équipe de développement.
A l'adresse author/projects/:idUser, on souhaite afficher la liste des projets auquels participe un “author”, et tel qu'il pourra la consulter (ce sera ensuite l'author connecté).
Cette liste est identique à celle visualisée par le client, à deux exceptions près :
A l'adresse author/project/:id, on souhaite afficher le projet dont l'id est passé en paramètre. Toutes les informations affichées sont en lecture.
La seule partie modifiée par rapport à ce que voit le client est la zone Equipe, remplacée par la zone Mes uses cases :
La zone Mes uses cases sera chargée en Ajax au chargement de la page dans la div #detailProject, à partir de l'adresse project/author/:idProject/:idAutor.
Les tâches apparaîssent dans la zone #divUseCase-n (n étant l'id du use case) à partir de l'adresse usecase/taches
La modification est obtenue sur click du bouton Modifier… lorsqu'une tâche est active, par appel de l'url tache/update/:id, id étant l'id de la tâche à modifier,
l'ajout par un click sur le bouton Ajouter une tâche, par appel de l'url tache/insert.
Sur validation, la zone correspondant au use case doit être mise à jour :
On pourra utiliser dans cette partie le projet Invo pour sa partie connexion (Contrôleur SessionController), et la gestion des ACL (SecurityPlugin).
Ajouter les ACL nécessaires dans le plugin SecurityPlugin :
Un user (client) doit pouvoir accéder aux Urls user/project … et aux Urls associées (à vous de voir en fonction des contrôleurs et actions que vous avez créés)..\ Il ne peut accéder aux Urls author/project et aux Urls associées.
L'author peut pour l'instant accéder à toutes les urls.
Ajouter sur la page d'accueil 3 boutons, pour simuler :
private function javaToPhpSha($str){ $k=hash("sha256", $str,true); $hex_array = array(); foreach (str_split($k) as $chr) { $o=ord($chr); if($o>127) $o=$o-256; elseif ($o<-127) $o=$o+256; $hex_array[] = sprintf("%02x", $o); } $key=implode('',$hex_array); return $key; }
Rôle | Password | |
---|---|---|
user | johndoe@kobject.net | 0000 |
author | misko.hevery@gmail.com | 123456789 |
La connexion doit permettre de stocker dans la session une instance de User
Après connexion :
La déconnexion affiche un message précisant que la déconnexion est effective et remet la zone #activeUser à :
Vérifiez :
Le développement étant partiel, toutes les fonctionnalités non citées peuvent être implémentée :
Pour prendre quelques exemples :
On veillera dans ce cas à bien les mentionner dans le fichier readme.md du projet sur gitHub
L'utilisation de Phalcon-Jquery, des composants Bootstrap ou de toute autre librairie utilisée avec intelligence fait partie des points bonus
D'une manière générale :
Dans la conception :
Dans la conduite du projet :