102 lines
3.8 KiB
Markdown
102 lines
3.8 KiB
Markdown
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](https://fr.gravatar.com/site/implement/images/php/). *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](https://gitnet.fr). 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
|
|
```
|
|
|
|
[sessions]: http://php.net/manual/fr/function.session-start.php
|