Fonctionnement

Général

Pour commencer, je suis parti sur l'idée de faire un site où les données sont stockés dans des fichiers, donc sans base de données distance. Ensuite, pour le choix du langage, j'ai choisi le PHP5 pour m'exercer. J'ai donc le choix entre parser des fichiers et/ou utiliser SQLite.

Organisation des fichiers

J'ai essayé de prévoir le plus de choses. J'ai donc créé ces dossiers :

  • conf : Configuration en tout genre du site
  • data : Les données, c'est la seule partie qui doit être modifié. C'est pour une mise à jour ou un déplacement facile.
  • inc : Les fichiers à inclure
  • lang : Les fichiers de langue
  • lib : Les librairies qui viennent d'ailleurs
  • plugins : Les extensions
  • themes : Les thèmes

Les extensions

Tout repose sur les extensions. Chaque outil est une extension.

J'ai surtout pensé à une extension en particulier. J'ai pensé refaire le fonctionnement de netvibes. C'est donc une extension qui va se servir des autres extensions. En fait, ce n'est pas vraiment ça. L'extension fournit un environnement et les autres extensions doivent implémenter des choses pour fonctionner dedans.

Extension start

Avec la mode AJAX, il fallait bien que j'essaye de plus près, c'était justement l'occasion.

Voilà en gros comme ça se passe :

schema_start.jpg

Les Window sont gérer par un WindowManager. C'est ce dernier qui va gérer les colonnes et les déplacements des Window. Un Window, c'est un contenu avec un titre, il a besoin de récupérer les données qui sont dans les autres extensions.

Le WindowManager ne crée pas directement les Window. Ces derniers sont instanciés par le Start puis mis dans le WindowManager. J'ai choisi cette structure parce que j'ai besoin que les Window fassent des requêtes. En les instanciant au même niveau que le WindowManager, ils accèdent au RequestManager sans passer par le WindowManager.

D'ailleurs, pour sauvegarder les positions des Window, le WindowManager a un événement qui indique au Start que ça a changé. C'est donc Start qui utilise le RequestManager.

Le RequestManager peut avoir des observateurs, c'est le cas du StatusBar. Il sert à indiquer les chargements et les erreurs. Chaque instance de Window va aussi créer un observateur du Requestmanager, pour la récupération des données.

J'ai eu plusieurs idées, je suis parti sur ça pour l'instant, on verra si ca passe.