\documentclass[a4paper,12pt]{article}

\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{eurosym}
\usepackage{epsfig}

\title{AJAX - Enoncé 1}
\author{D.Moreaux}

\begin{document}
\maketitle
\abstract
Ce premier projet vise à mettre en place la structure de base du projet :
fichiers HTML, JS, CSS, arborescence de répertoires, documentation,\dots

\section{Enoncé}
Le programme prévoit DEUX pages totalement indépendantes. Chacune aura ses
fichiers HTML, CSS et JS par contre, les deux pages partageront le même
répertoire pour stocker les images.

La page d'édition se trouvera dans un sous-répertoire (admin, editor,\dots)
et une arborescence spécifique sera mise en place\footnote{répertoire pour les
codes PHP, images spécifiques,\dots}.

La page de jeu proposera une page de connexion et une page de jeu à proprement
parler. On pourra prévoir un bouton de déconnexion mais cette dernière pourra
aussi être déclenchée par la commande \verb|QUIT| du langage de script.

La page d'éditeur devra donner l'accès aux différents éditeurs (messages,
descriptions, objets,\dots). A cet effet, on mettra en place un menu (soit
un menu déroulant, soit un menu de côté) qui servira à sélectionner la page
d'édition désirée. La page d'accueil pourra contenir un texte d'accueil
générique et il n'est pas nécessaire de prévoir d'y revenir ou un texte
d'aide auquel on pourra revenir par le menu.

Les {\em pages} seront des divisions présentes dans le fichier HTML qui
seront affichées ou masquées selon les besoins. A un moment donné, une seule
de ces divisions sera sensée être visible (\verb|display: block;|) et les autres
seront masquées (\verb|display: none;|).

\subsection{La page de jeu}
Le formulaire de connexion permettra d'entrer le nom d'utilisateur et le mot de
passe. Dans un premier temps, l'appui sur le bouton {\bf connexion} appellera
une première fonction qui récupérera les identifiants dans des variables et
appellera une seconde fonction\footnote{Ces fonctions sont ce que l'on appelle
des {\em stub} et seront complétées plus tard. La première enverra la demande
 au serveur, la seconde traitera le retour du serveur et effectuera le passage
 sur l'écran de jeu}.

La seconde fonction masquera l'écran de connexion et affichera l'écran de jeu.
Elle se chargera également de vider la zone de texte et la zone d'entrée.

L'écran de jeu proposera une zone dans laquelle le texte défilera (prévoir une
barre de défilement dans les CSS) et une zone d'entrée (plus un bouton d'envoi)
qui permettra d'entrer les commandes.

On prévoira un bouton {\bf deconnexion} qui appellera une fonction qui en appellera
une seconde\footnote{de nouveau des stub}. Cette seconde fonction se chargera de
revenir à l'écran de connexion et de vider les champs d'entrée (ou juste le champ
mot de passe)

On peut éventuellement prévoir une fonction liée au bouton d'envoi de message
qui se contentera de récupérer le message dans une variable puis de vider le
champ (mais ce sera fait de toutes façons plus tard)

\subsection{La page d'éditeur}
La page d'éditeur proposera plusieurs pages qui seront décrites au fur et à
mesure qu'elles seront développées.

\section{Recommandations}
\begin{itemize}
\item Prenez la peine de lire le document descriptif du projet. Dans la
  mesure du possible, lisez le manuel de The Quill et jetez un oeil à la
  version en ligne pour vous faire une idée du projet à réaliser
\item Prévoyez pour chaque volet un répertoire dans lequel sauver les
  fichiers PHP (à partir de l'énoncé suivant) ainsi qu'un fichier de
  documentation (pour le moment vide).
\item Prenez la peine de tester que le switch entre la page de connexion et
  la page de jeu fonctionne correctement. Ce mécanisme sera souvent utilisé
  dans la suite du projet (au niveau de l'éditeur).
\item Les pages HTML auront pour nom {\tt index.html}
\end{itemize}

\section{Suite}
Pour le moment, juste une structure de base est mise en place. Les sous-projets
qui suivent se concentreront principalement sur la partie Editeur.

L'utilisation de fonctions stub permet de tester un code incomplet. Par exemple,
dans le cas présent, le code chargé de communiquer avec le serveur est absent mais
quand on cliquera sur le bouton connexion, on arrivera sur l'écran de jeu.

On peut mettre des \verb|console.log()| dans les fonctions stub pour afficher les
valeurs entrées (par exemple, dans l'écran de connexion, afficher le nom d'utilisateur
et le mot de passe).

\end{document}
