Skip to content

Création d'un nouveau module dans CO2

marc-fun edited this page Jun 18, 2017 · 12 revisions

Voici un petit tutoriel permettant de créer un nouveau module dans CO2.

Création d'une nouvelle "application" dans params.json

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 ..."
        }, 

Création d'un nouveau controller

Création d'un nouveau controller dans le CitizenToolKit

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 );
    }
    
    
}

Création du controller dans le module CO2

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)

Création du lien vers la page

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),
), 

Création d'une action dans AppController

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);
} 

Création de la vue

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.

Accéder à votre module

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