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 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($('#idDeVotreModule'));
: permet 2 fonctionnalités sur ladiv
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 d’un menu de config et afin de rester dans la charte de l’accueil, 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, l’id 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 1erecho
est recommandé. Après, à vous de gérer HTML, JS et CSS ;)