Afin d'accomplir dans les plus brefs délais une commande de l'un de ses clients, Pelican Design & Development cherche un sous-traitant qui peut lui réaliser en Silverlight + PHP 5 une gallérie photo avec fonctions d'administration, conformément aux spécifications ci-dessous.

Si vous êtes intéressé, vous êtes prié de communiquer vos conditions soit par messagerie privée, soit par courriel à contact@pelicandd.com, en joignant (directement ou sous forme de lien) deux réalisations Silverlight 2 ou Silverlight 3 (lien vers l'application uniquement, sans code source) et une page web W3C conforme montrant la qualité du code est contenant le JavaScript non intrusif, de préférence orienté prototype.

La décision finale sera communiquée le vendredi 6 novembre.


Spécifications :

1. Généralités

1.1. Spécifications non fonctionnelles

  1. Le code source doit être fourni, notamment pour l'application Silverlight. Il doit être sous une forme non-chiffrée et ne peut faire objet d'obfuscation.
  2. Le coût final du projet est inférieur à cent quarante euros.
  3. La livraison du code source final a lieu au plus tard le 9 novembre minuit.
  4. Le code source est écrit intégralement par le prestataire et devient la propriété de Pelican Design & Development.
  5. Silverlight 2 (C#), PHP 5.2.9 et XHTML 1.1 sont utilisés.
  6. Le code XHTML ne contient pas de présentation.
  7. Le code XHTML ne contient pas de tableaux.
  8. Le code C#, XHTML et JavaScript est mis en forme conformément aux règles fixées par défaut sous Visual Studio. Le code PHP est mis en forme de la même façon que le code C#, avec la seule différence d'indentation de deux espaces à la place de quatre.
  9. Le code XHTML et CSS sont W3C conformes.
  10. Le code PHP est orienté objet (aucun modèle particulier ni le développement en couches n'est imposé).

2. Partie publique (XHTML, CSS, JS)

2.1. Spécifications fonctionnelles

  1. Un visiteur quelconque peut voir les miniatures des photos.
  2. Lorsque JavaScript n'est pas activé, un clic sur une miniature ouvre l'image de pleine taille.
  3. Lorsque JavaScript est activé, un clic sur une miniature affiche la photo par-dessus de la page, au centre, avec un fond noir semi-transparent derrière. Un nouveau clic sur la photo ou le fond permet de retrourner au contenu de la page.
  4. Lorsque la galerie ne contient aucune image, une phrase explicative est affichée.

2.2. Spécifications non fonctionnelles

  1. Les photos de pleine taille n'ont pas à être préchagées.
  2. Lorsque JavaScript est activé, lors du chargement de l'image de pleine taille, une animation comme celles de http://www.ajaxload.info/ est affichée (sur le même fond noir dont il était question ci-dessus).
  3. Tout le code JavaScript doit être non intrusif.
  4. Aucun framework JavaScript n'est utilisé.
  5. Les images sont accessibles directement par un URL via un fichier JPG/PNG.
  6. Les images sont affichées plusieurs par ligne, le nombre dépendant de la largeur de la page.
  7. Si le VAD attribue un nom à une image, ce nom est affiché en bas de l'image (V. infra).
  8. La galerie est intégrable à une page existante avec les éléments pouvant venir à gauche ou à droite (float:left/float:right).

3. Partie administration (Silverlight 2, PHP 5)

  1. Un visiteur ayant droit (ci-dessous VAD) est authentifié au niveau de la cession (la variable session PHP $_SESSION['isAdministrator'] booléenne indique si le visiteur est un VAD).
  2. L'authentification n'est pas à faire.
  3. Un VAD accède à un panneau d'administration de la galerie.
  4. Un VAD spécifie jusqu'aux dix images à chaque upload.
  5. L'upload se faisant via Silverlight, la progression d'upload est indiquée.
  6. La progression de l'upload est indiquée en pourcentages, mais n'a pas à être précise (écart de 10% accepté).
  7. Seules les extensions .jpg, .jpeg et .png sont acceptées.
  8. Les images, après upload, sauvegardés dans un dossier spécifique (chemin relatif codé en dur).
  9. Les images, après upload et avant la sauvegarde, sont redimensionnées pour avoir le plus grand coté égal à 800px maximum, proportion entre largeur et hauteur gardées.
  10. Les images uploadés sont affichées sous forme de vignettes.
  11. Un VAD ne peut visualiser les photos en pleine taille (sauf à aller dans la gallérie accessible à tous les visiteurs).
  12. Un VAD organise l'ordre des photos par un drag & drop.
  13. Un VAD attribue, s'il le souhaite, un nom à une photo.
  14. Les noms des images sont sauvegardées sous forme XML.
  15. Le scénario de l'administration concurrente par plusieurs VAD n'est pas prevu.