images | ||
lib | ||
.gitignore | ||
404.php | ||
database.sql | ||
index.php | ||
project.php | ||
README.md | ||
style.css |
Travail à réaliser
L'objectif de cet exercice est d'introduire l'absraction du code par l'utilisation de fonctions. Il permet également d'aller un peu plus loin en SQL via PDO. Vous pourrez vous amuser avec les requêtes munies de paramètres à traiter.
Pagination
La page d'index affichent les projets avec une pagination.
Actuellement, les projets sont affichés 5 par 5. Pour passer
d'une page à l'autre, il suffit d'ajouter un paramètre dans la
requête en passant par la query_string
: ?page=n
, n
le
numéro de la page à afficher.
Réalisez l'affichage de la pagination sous la forme suivante :
Première page | Précédent | 1 | 2 | 3 | ... | Suivant | Dernière page
Il faudra mettre en avant la page courrante dans le listing.
Les liens Précédent
et Suivant
doivent être masqués si nous sommes
à la première ou la dernière page.
Commentaires
Nous devons pouvoir déposer des commentaires sur chaque projet. Ces commentaires seront bien évidement affichés sur ces pages.
Un commentaire est composé de :
- le nom ou pseudo de l'auteur
- le site web de l'auteur
- l'email de l'auteur
- sa date de publication
- son contenu
La date est générée automatiquement. Tous les champs sont obligatoires à l'exception du site web. Il faudra afficher l'avatar de l'auteur en utilisant le service gravatar. Ne pas réutiliser ce code source mais ne vous génez pas pour vous en inspirer.
Flux
Réalisez un flux RSS présentant les 10 derniers projets mis en ligne.
Vous devrez concevoir et réaliser des fonctions php.
Réécriture d'URL
Documentez-vous et réalisez une réécriture des URL (url rewriting
) afin de les rendre plus sexy.
Je souhaites accéder aux projets via : http://localhost/projet/{id}
/{slug}
Le slug est une chaine de caractère contenant le nom du projet sans les caractères spéciaux. Vous devez donc créer une fonction pour le générer.
Exemple : le slug de Je suis une licorne, c'est classe quand même, non ?
est je-suis-une-licorne-c-est-classe-quand-meme-non
. Si j'avais un projet avec ce titre et si son id était 42, alors l'adresse du projet serait : http://localhost/projet/42/je-suis-une-licorne-c-est-classe-quand-meme-non
Administration
Pour le moment, la rédaction des articles est réalisée via phpmyadmin. Par ailleurs, il n'y a aucun modération des commentaires. Vous devez donc développer un backoffice (BO) pour administrer les contenus du portfolio.
L'accès au BO est reservé aux administrateurs. Prévoyez ainsi une authentification avec la méthode que vous préférez parmis :
- Base de données + formulaire (recommandé) - @see sessions sessions
- Identifiants en durs dans le code + formulaire (il manque pas grand chose pour utiliser une bdd ;)) - @see sessions sessions
- Basic ou Digest HTTP authentication (pour les flemmards !)
Les commentaires doivent pouvoir être mis hors-ligne voire supprimés. Les articles doivent pouvoir être ajoutés, modifiés et supprimés depuis l'interface.
Petit plus
Les étudiants qui me proposeront une correction via des pull-request
auront 1 point supplémentaire sur la note finale. Les intéressés devront
créer un compte sur Gitlab. Je les ajouterai
au dépôt et vous me transmettrez votre travail dans une branche portant
votre nom : nom-prenom
.
Installation du projet
$ git clone git@gitnet.fr:deblan/lpwd-php-portfolio.git
$ git branch nom-prenom # à modifier
$ git checkout nom-prenom
$ ... modifications ...
$ git commit add <les fichiers modifiés>
$ git commit -m "Explications des modifications"
$ git push -u origin nom-prenom