-
Notifications
You must be signed in to change notification settings - Fork 26
Création d'un nouveau module dans CO2
Voici un petit tutoriel permettant de créer un nouveau module dans CO2.
Dans le fichier /modules/co2/config/CO2/params.json, il faut ajouter votre application en suivant l'exemple suivant :
Il convient bien évidemment de remplacer "#interoperability" par le nom de votre module, les titres ect ... Pour l'icône, choisir un nom parmi cette liste : http://fontawesome.io/icons/
Important : ne pas oublier de mettre un "hash" correct type "#app.votremodule", c'est celà qui va pointer votre module vers la bonne page.
"#interoperability": {
"inMenu" : false,
"useHeader" : true,
"open" : true,
"subdomain" : "interoperability",
"subdomainName" : "Intéropérabilité",
"hash" : "#app.interoperability",
"icon" : "database",
"mainTitle" : "Module d'intéropérabilité",
"placeholderMainSearch" : "Rechercher des données venus d'ailleurs ..."
},
Il faut se placer dans le dossier : /modules/citizenToolKit/controllers et créer un nouveau dossier (avec pour nom le nom de votre module de préférence).
Ce dossier contiendra l'ensemble de la logique métier dont aura besoin votre nouveau module.
Par exemple, la classe de base est le fichier "IndexAction.php" et contient par exemple :
<?php
class IndexAction extends CAction
{
public function run( $type=null, $id= null, $isAdmin=null )
{
$paramOne = "test1";
$paramTwo = "test2";
$params = array("paramOne" => $paramOne,
"paramTwo" => $paramTwo);
if(Yii::app()->request->isAjaxRequest)
echo $controller->renderPartial("index", $params,true);
else
$controller->render( "index" , $params );
}
}
Il faut se placer dans le dossier : /modules/co2/controllers et créer une nouvelle page PHP avec pour nom "VotremoduleController" et le remplir comme dans l'exemple suivant (exemple pour InteroperabilityController.php) :
<?php
class InteroperabilityController extends CommunecterController {
protected function beforeAction($action) {
return parent::beforeAction($action);
}
public function actions()
{
return array(
'index' => 'citizenToolKit.controllers.interoperability.IndexAction',
'autre' => 'citizenToolKit.controllers.interoperability.AutreAction'
);
}
}
?>
Important : Ne surtout pas oublier le "extends CommunecterController" dans la déclaration de la classe.
L'array retourné par la fonction fonction actions() contient l'essemble des pages qui se trouvent dans votre controller crées à l'étape précédente (rappel : controller se situant dans /modules/citizenToolKit/controllers)
Dans /modules/co2/components/CommunecterController.php, il faut ajouter votre lien dans l'array "app" (chercher app" => array(
) :
"app" => array(
"interoperability" => array('href' => "/ph/communecter/app/interoperability", "public" => false),
),
Dans le fichier /modules/co2/controllers/AppController.php il faut ajouter une nouvelle fonction en suivant l'exemple suivant :
le renderPartial va afficher la vue (interoperability.php) que l'on va réaliser dans l'étape suivante.
public function actionInteroperability(){
CO2Stat::incNbLoad("co2-interoberability");
echo $this->renderPartial("interoperability", array(), true);
}
Maintenant que votre controller est créer ainsi que votre lien, il reste à créer la vue qui affichera votre module.
Il faut se placer dans le dossier /modules/co2/views/app/ et créer votre vue du style "interoperability.php"
Dans ce fichier, vous pouvez placer tout votre code HTML, PHP, JS qui contiendra les éléments visueles de votre page.
Bravo ! Maintenant vous n'avez plus qu'à accéder à votre module grâce à l'url suivante (remplacer interoperability par le nom de votre module ):
http://127.0.0.1/ph/co2#interoperability