Skip to content
Snippets Groups Projects
Commit 8bf6b638 authored by Hakan EBABIL's avatar Hakan EBABIL
Browse files

quelques ajouts

parent 15253dc2
Branches
Tags 2.0.4
No related merge requests found
FROM php:7.3-apache
# Update system
RUN apt-get update
# Install composer
ENV COMPOSER_HOME "/home/www-data/.composer"
ENV COMPOSER_AUTH "{ \"http-basic\": { \"php-packages.chargemap.com\": { \"username\": \"chargemap\", \"password\": \"Fy6Rys[WYNpzVkh;\" } } }"
RUN mkdir -p $COMPOSER_HOME && chmod -R 777 $COMPOSER_HOME && curl -sS https://getcomposer.org/installer | php \
&& chmod +x composer.phar && mv composer.phar /usr/local/bin/composer
# Install NPM
RUN apt-get -yq install nodejs
# Install Sass
RUN npm install -g sass
RUN mkdir /srv/app
COPY vhost.conf /etc/apache2/sites-available/000-default.conf
RUN docker-php-ext-install pdo pdo_mysql bcmath && \
chown -R www-data:www-data /srv/app && \
a2enmod rewrite
version: '3'
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- 8001:80
volumes:
- .:/srv/app
depends_on:
- mysql
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: todos
MYSQL_USER: todos-user
MYSQL_PASSWORD: todos-pwd
ports:
- 8002:3306
volumes:
- ./init-database/:/docker-entrypoint-initdb.d
File moved
File moved
# Travaux pratiques - 1
L'objectif du TP est de réécrire l'application todo list en suivant le paradigme MVC. Il faudra utiliser pour cela utiliser le framework Symfony et le moteur de template Twig. Nous utiliserons également la dernière version de Bootstrap pour notre vue. L'appel des listes et l'ajout de tâches et de commentaire devront être fait en AJAX avec Jquery.
L'objectif du TP est de réécrire l'application todo list en suivant le paradigme MVC.
## Fonctionnalitées attendues
- Login (email / mot de passe) : récupère et vérifie dans la table des users une occurence qui correspond au couple. Si tout est bon on le redirige vers la page de listing des tâches.
- Logout : déconnecte l'utilisateur et retourne sur la page de login.
- Formulaire d'ajout d'une tâche: titre / description / personne assignée (optionnel) et date d'échéance. Modale ou fenêtre à part, libre à vous de choisir la solution la plus ergonomique.
- Liste et détail des tâches: sur deux colonnes: à gauche une liste des tâches. On pourra imaginer qu'on affiche uniquement le titre avec un lien vers le détail de la tâche.
- Le détail de la tâche s'affiche dans le panneau de droite. On y trouver un formulaire pour ajouter un commentaire sur cette tâche (un textarea). On pourra aussi y mettre un "toggle" pour spécifier si la tâche a été réalisée ou non.
## Fonctionnalités Bonus
- Filtrage des tâches dans le pannel de gauche par "utilisateur assigné" et par "traité ou non"
- Utilisation de composant Javascript Rich Text Editor pour les description des todos et des commentaires. Utilisations de composant datetime picker pour les selecteurs de date.
## Indications
Pour réaliser le TP Il faudra utiliser le framework **Symfony** et le moteur de template **Twig**. La persistance se fera avec l'ORM **Doctrine**. Nous utiliserons également la dernière version de **Bootstrap** pour notre vue. Dans l'idéal, vous effectuez au moins une requête en **AJAX** (XMLHTTPRequest). Vous récupérez vos dépendances avec **composer** et **npm**.
Dans votre composer.json, n'oubliez pas de spécifier **les noms des deux auteurs** si vous faites le projet en groupe (ce que je vous conseille de faire).
## Docker
Docker va me permettre de tester plus facilement vos applications. Soit vous utilisez le Dockerfile et le docker-compose fourni, soit vous en fournissez un qui sera correctement configuré. **Si le docker-compose up ne fonctionne pas, je ne testerais pas**. (Et donc forcément une partie de la notation du projet s'en ressentira).
Pour utiliser Docker, copiez les fichiers vhost.cong, docker-compose.yml, Dockerfile et le répertoire init-database à la racine de votre projet. Puis tapez dans la CLI :
```shell
docker-compose up
```
Vous devriez accéder à votre site en tappant dans votre navigateur http://localhost:8001
Votre base de données sera accessible sur le port 8002. Voici les information de connexion:
```
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: todos
MYSQL_USER: todos-user
MYSQL_PASSWORD: todos-pwd
```
N'oubliez pas de modifier votre fichier de configuration de symfony .env à la racine de votre projet en modifiant la variable DATABASE_URL :
```
DATABASE_URL=mysql://todos-user:todos-pwd@mysql:3306/todos
```
## Hints
- Pour créer votre projet, vous pouvez utiliser la ligne de commande
```
symfony new --full todos
```
- Pour créer vos modèles, vous pouvez suivre la documentation qui se trouve là : https://symfony.com/doc/current/doctrine.html
- Vous devriez / pourriez retrouver les propriétés suivantes dans les entités:
- Todo, une propriété "author" (Many to one), une propiété "assignee" (Many to one), et une propriété "comments" (One to Many)
- Comments, une propriété "todo" (Many to One)
- User : "createdTodos" (One to Many) et "assignedTodos" (One to Many)
- Vous avez la possibilité de ne pas mapper les propriétés que vous n'utilisez pas.
- Les routes de symfony se trouvent dans le répertoire config/routes.yaml
```yaml
home:
path: /
controller: App\Controller\TodoListController::index
```
- Au niveau du contrôleur, pour afficher un template vous devez utiliser la fonction "render" comme suit :
```PHP
return $this->render('login.twig', [
'email' => $email,
'error' => $error,
]);
```
- Les structures de contôle Twig : https://twig.symfony.com/doc/2.x/templates.html#control-structure
<VirtualHost *:80>
DocumentRoot /srv/app/public
HttpProtocolOptions unsafe
<Directory "/srv/app/public">
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
ServerName todos_web
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment