2 Architecture de module
Shikiryu edited this page 2016-11-17 12:57:11 +01:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 sils 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 daffichage.

En détail

  • Nom du module.php
    • La classe du module qui étend la classe “module”. Gère la génération du module, lactivation 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 soccupe de la persistance de chaque module si besoin est.
  • images
    • Ce dossier doit contenir tous les fichiers images. (sic) Il est possible dutiliser 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 quarray 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 à larray, changer plusieurs paramètres dun 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 dafficher les modules activés, dajouter 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($('#idDeVotreModule')); : permet 2 fonctionnalités sur la div de votre module :
  • La div peut ainsi être déplacée sur votre accueil
  • La position suite à la fin du déplacement est enregistrée sur le serveur
  • $('#menu-bar').prepend($('#idDuLienDeConfigDuModule')); : (optionnel) Si votre module a besoin dun menu de config et afin de rester dans la charte de laccueil, merci de rentrer ce script afin de placer le lien de config dans la barre de menu. (Il est conseillé de donner ce style à ce lien : #idDuLienDeConfigDuModule{float:right; margin:12px 10px 0 0;}

Comment construire votre module

  • class _monmodule_ extends Module : permet de créer le module ayant comme nom monmodule (_/! important, lid de votre module doit avoir exactement le même nom que votre classe, les 2 en miniscule !)
  • protected $moduleTitle = 'Mon module'; : indiquez le libellé de votre module (facultatif, non utilisé)
  • protected $paramsList = array('visibility','x','y'); : la liste des paramètres de votre module présent dans le fichier de configuration, très important.
  • public function __construct($params){ parent::__construct(__CLASS__, $params); } : constructeur comme ça.
  • public function build(){ echo '<script type="text/javascript" src="'.$this->pathToModule.'js/'.$this->moduleName.'.js"></script><link rel="stylesheet" href="'.$this->pathToModule.'css/'.$this->moduleName.'.css" type="text/css" />'; echo '<div id="monmodule">pwetpwet</div>'; } : La construction de votre module en html et CSS. le 1er echo est recommandé. Après, à vous de gérer HTML, JS et CSS ;)

Pour aider : la structure de base en fichier

moduletest.zip