diff --git a/Architecture de module.md b/Architecture de module.md new file mode 100644 index 0000000..24c1566 --- /dev/null +++ b/Architecture de module.md @@ -0,0 +1,81 @@ +Hiérarchie des dossiers +----------------------- + +Dans le dossier “modules”, chaque module a cette hiérarchie : + +- *nom du module* + - *Nom du module*.php + - ajax + - css + - *nom du module*.css + - db + - *nom du module*.xml (facultatif) + - images + - includes + - js + - *nom du module*.js + +Explications des dossiers +------------------------- + +Chaque module importé en fichier .zip devra impérativement suivre cette nomenclature. +Le *Nom du module*.php à la base du dossier du module est la classe dudit module et devra étendre *module.php* (la classe présente à la racine du projet) +La classe Module étendu oblige à avoir la nomenclature de dossier donné (ou au moins, leurs bases). Ainsi, même s’ils ne sont pas utilisés, le *nom du module*.css et *nom du module*.js devront être obligatoirement créés, ceci afin d’éviter les erreurs d’affichage. + +### En détail + +- *Nom du module*.php + - La classe du module qui étend la classe “module”. Gère la génération du module, l’activation et désactivation, et diverses options de paramètres liées à chaque module. + + + +- ajax + - Ce dossier peut ne rien contenir. Mettre ici les fichiers PHP contenant les scripts “ajax” + + + +- css + - Ce dossier doit contenir tous les CSS. + + + +- db + - Ce dossier doit contenir tous les fichiers .xml qui s’occupe de la persistance de chaque module si besoin est. + + + +- images + - Ce dossier doit contenir tous les fichiers images. (sic) Il est possible d’utiliser les images de bases du projet présentes dans le dossier *images* de la racine du projet. + + + +- includes + - Ce dossier doit contenir tous les fichiers PHP joints au module. (ex: les classes externes, les includes, etc) + + + +- js + - Ce dossier doit contenir tous les scripts JS. Ce projet utilise, de base, jQuery 1.4.2, jQuery UI 1.8.4 et jQuery Fancybox 1.3.1 + +Les fonctions utiles : +---------------------- + +### La classe Module + +Votre module devant impérativement étendre la classe *Module* (elle ne fonctionnera pas dans le cas contraire), elle dispose de fonction déjà prédéfinie et fortes utiles : + +- `public function updateConfig($updated)` : En utilisant cette fonction sur un de vos modules en ayant `$updated` en tant qu’array de paramètre de votre module, ce dernier aura les valeurs de ses paramètres modifiées directement dans la configuration principale **si ils existent préalablement**. Par exemple, `$module->updateConfig(array('visibility'=>'false'));` désactivera votre module ! Vous pouvez, bien sûr, grâce à l’array, changer plusieurs paramètres d’un seul coup. +- `public function getParam($param)` : Vous permet de récupérer un paramètre. + +### La classe principale AccueilModule + +Elle initialise un peu tout : Elle récupère tous les modules présents dans le fichier de configuration, elle permet d’afficher les modules activés, d’ajouter un module et de gérer le script de configuration. + +- `public static function getModule($module)` : Si vous souhaitez récupérer un objet de votre module, utilisez cette méthode statique. + +### Le javascript + +De base, plusieurs fonctions sont réutilisables et utile : + +- @make\_draggable($(’\#idDe +