SP:Composant:Module
De Hegyd Doc.
(→Autres éléments associés) |
(→pages & contenu) |
||
| (16 versions intermédiaires masquées) | |||
| Ligne 1 : | Ligne 1 : | ||
= Les modules = | = Les modules = | ||
| - | Un module permet d'étendre les fonctionnalités primaire de l'éditeur, en ajoutant par exemple un système de gestion d'actualités, ou un support e-commerce. | + | Un module permet d'étendre les fonctionnalités primaire de l'éditeur, en ajoutant par exemple un système de gestion d'actualités, ou un support e-commerce. Le principe du module est de ne pas modifier le noyau, mais de s'y greffer, pour accroitres les possibilités de l'application. |
| - | + | '''Note''': cette partie n'est pas codée, les tables n'ont pas été crées. La doc suivante est une méthodologie pour la création d'un module. Elle devra dans l'idéal être modifiée en fonctions des changements effectués durant son implémentation. | |
| - | + | Voici une vue générale de l'implémentation des modules: | |
| - | + | [[Fichier:Modules.png|1400px]] | |
| - | + | == Implémentation == | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | === base de données === | |
| - | * ''moduleId'' | + | *Le module est enregistré dans la table '''module''', ses champs: |
| - | * ''siteClientId'' | + | ** ''moduleId'': identifiant |
| - | * ''status'': indique s'il est activé pour le client ou non. | + | ** ''moduleName'': nom du module |
| - | + | ** ''moduleCleanedName'': nom du module sans caractères spéciaux. Servira pour nommer les répertoires associés. | |
| - | + | ** ''siteOptions'': s'il est rélié avec une option lié au [[SP:Composant:SiteClient#Packages_associ.C3.A9s|packages]]. | |
| - | Une autre table permet de '''définir les pages''' qui devront être associées au module '''modulePages''', ses champs: | + | *Il est '''lié à un site''' par le bias d'une table de jointure '''jModule_SiteClient''', ses champs: |
| - | + | ** ''moduleId'' | |
| - | * ''modulePageId'': identifiant | + | ** ''siteClientId'' |
| - | * ''moduleId'': identifiant du module | + | ** ''status'': indique s'il est activé pour le client ou non. |
| - | * ''modulePageName'': nom de la page | + | *Une autre table permet de '''définir les pages''' qui devront être associées au module '''modulePages''', ses champs: |
| - | * ''urlPattern'': expression réulière permettant de reconnaitre la page à partir d'une url | + | ** ''modulePageId'': identifiant |
| - | + | ** ''moduleId'': identifiant du module | |
| - | + | ** ''modulePageName'': nom de la page | |
| - | Le module pourra également avoir '''ses propres tables'''. Elle devront toutes être préfixées par '''{moduleCleanedName}'''. | + | ** ''urlPattern'': expression réulière permettant de reconnaitre la page à partir d'une url |
| + | *Le module pourra également avoir '''ses propres tables'''. Elle devront toutes être préfixées par '''{moduleCleanedName}'''. | ||
| + | *Un module pourra être lié a un type de [[SP:Composant:BlocObject|blocObject]]. | ||
| + | **Pour ce faire, un champ '''moduleId''' sera ajouté à la table '''typeBlocObject''' définissant les type de blocObject. Il contiendra l'identifiant du module associé au type de blocObject s'il existe. | ||
=== Classes === | === Classes === | ||
| Ligne 35 : | Ligne 35 : | ||
La classe '''Module''' contient les méthodes génériques de gestion des modules: | La classe '''Module''' contient les méthodes génériques de gestion des modules: | ||
| - | * activate() / desactivate() | + | * activate() / desactivate(): activation/désactivation d'un module: déploie les éventuelles pages associés |
| + | * ... | ||
Chaque module dispose ensuite de '''sa propre classe''', nommée '''{moduleCleanedName}''', qui comprends se propres méthodes. Ces méthodes pourront être utilisées dans les templates et controleurs des blocObjects associé au module ainsi que dans les pages d'administration permettant d'éditeur le module. | Chaque module dispose ensuite de '''sa propre classe''', nommée '''{moduleCleanedName}''', qui comprends se propres méthodes. Ces méthodes pourront être utilisées dans les templates et controleurs des blocObjects associé au module ainsi que dans les pages d'administration permettant d'éditeur le module. | ||
''Exemple'': méthode getNewsList(), AddNews(),deleteNews()... pour un module actualités. | ''Exemple'': méthode getNewsList(), AddNews(),deleteNews()... pour un module actualités. | ||
| - | D'autres classes peuvent être associées au module pour le compléter. Elle devront se trouver dans le répertoire '''lib/model/EasySite/modules/{ | + | D'autres classes peuvent être associées au module pour le compléter. Elle devront se trouver dans le répertoire '''lib/model/EasySite/modules/{moduleCleanedName}/''' dans un fichier '''{moduleCleandName}ClassName.php''' et se nommer '''{moduleCleandName}ClassName''' (sans cette syntaxe, elle ne pourront pas être chargé via lautoload de l'application). |
=== Autres éléments associés === | === Autres éléments associés === | ||
| Ligne 46 : | Ligne 47 : | ||
==== pages & contenu ==== | ==== pages & contenu ==== | ||
| - | Définis via [[SP:Part:Edition_Modules|l'interface d'édition des modules]]. | + | Définis via [[SP:Part:Edition_Modules|l'interface d'édition des modules]]. Cette interface est du meme type que l'éditeur de métiers et l'éditeur de thème. |
| - | ==== | + | ==== types de blocObject ==== |
Cf. ([[SP:Composant:BlocObject#D.C3.A9finition_des_types_de_blocObject|méthodologie pour créer des types de blocObject]]). | Cf. ([[SP:Composant:BlocObject#D.C3.A9finition_des_types_de_blocObject|méthodologie pour créer des types de blocObject]]). | ||
| Ligne 59 : | Ligne 60 : | ||
==== pages pour administrer le module ==== | ==== pages pour administrer le module ==== | ||
| - | Ces pages permettront a l'utilisateur d'administrer le module. | + | Ces pages permettront a l'utilisateur d'administrer le module. Les '''templates/controleurs''' correspondant se trouvent dans '''templates/editeur/{moduleCleanedName}/''' et '''controleurs/editeur/{moduleCleanedName}/'''. Elles seront appelables via l'url '''http://domaine-du-site.fr/editeur/{moduleCleanedName}/nom_page.html''', et pourront contenir des paramètres utilisables dans leur controleur et template associé. |
| - | + | ||
| - | Les '''templates/controleurs''' correspondant se trouvent dans '''templates/editeur/{moduleCleanedName}/''' et '''controleurs/editeur/{moduleCleanedName}/'''. | + | |
| - | Elles seront | + | |
| - | + | ||
| - | + | ||
Version actuelle en date du 29 juillet 2010 à 09:16
Sommaire |
[modifier] Les modules
Un module permet d'étendre les fonctionnalités primaire de l'éditeur, en ajoutant par exemple un système de gestion d'actualités, ou un support e-commerce. Le principe du module est de ne pas modifier le noyau, mais de s'y greffer, pour accroitres les possibilités de l'application.
Note: cette partie n'est pas codée, les tables n'ont pas été crées. La doc suivante est une méthodologie pour la création d'un module. Elle devra dans l'idéal être modifiée en fonctions des changements effectués durant son implémentation.
Voici une vue générale de l'implémentation des modules:
[modifier] Implémentation
[modifier] base de données
- Le module est enregistré dans la table module, ses champs:
- moduleId: identifiant
- moduleName: nom du module
- moduleCleanedName: nom du module sans caractères spéciaux. Servira pour nommer les répertoires associés.
- siteOptions: s'il est rélié avec une option lié au packages.
- Il est lié à un site par le bias d'une table de jointure jModule_SiteClient, ses champs:
- moduleId
- siteClientId
- status: indique s'il est activé pour le client ou non.
- Une autre table permet de définir les pages qui devront être associées au module modulePages, ses champs:
- modulePageId: identifiant
- moduleId: identifiant du module
- modulePageName: nom de la page
- urlPattern: expression réulière permettant de reconnaitre la page à partir d'une url
- Le module pourra également avoir ses propres tables. Elle devront toutes être préfixées par {moduleCleanedName}.
- Un module pourra être lié a un type de blocObject.
- Pour ce faire, un champ moduleId sera ajouté à la table typeBlocObject définissant les type de blocObject. Il contiendra l'identifiant du module associé au type de blocObject s'il existe.
[modifier] Classes
La classe Module contient les méthodes génériques de gestion des modules:
- activate() / desactivate(): activation/désactivation d'un module: déploie les éventuelles pages associés
- ...
Chaque module dispose ensuite de sa propre classe, nommée {moduleCleanedName}, qui comprends se propres méthodes. Ces méthodes pourront être utilisées dans les templates et controleurs des blocObjects associé au module ainsi que dans les pages d'administration permettant d'éditeur le module. Exemple: méthode getNewsList(), AddNews(),deleteNews()... pour un module actualités.
D'autres classes peuvent être associées au module pour le compléter. Elle devront se trouver dans le répertoire lib/model/EasySite/modules/{moduleCleanedName}/ dans un fichier {moduleCleandName}ClassName.php et se nommer {moduleCleandName}ClassName (sans cette syntaxe, elle ne pourront pas être chargé via lautoload de l'application).
[modifier] Autres éléments associés
[modifier] pages & contenu
Définis via l'interface d'édition des modules. Cette interface est du meme type que l'éditeur de métiers et l'éditeur de thème.
[modifier] types de blocObject
Cf. (méthodologie pour créer des types de blocObject). Ces types de blocObject ne seront alors disponible a l'ajout seulement si le module est activé pour le client.
[modifier] propriétés de styles
Cf. ( l'aide pour ajouter des nouvelles propriétés).
[modifier] pages pour administrer le module
Ces pages permettront a l'utilisateur d'administrer le module. Les templates/controleurs correspondant se trouvent dans templates/editeur/{moduleCleanedName}/ et controleurs/editeur/{moduleCleanedName}/. Elles seront appelables via l'url http://domaine-du-site.fr/editeur/{moduleCleanedName}/nom_page.html, et pourront contenir des paramètres utilisables dans leur controleur et template associé.
