Updated Créer une nouvelle application ou un nouvel élément dans CO2 (markdown) authored by Tristan Goguet (AlphaTango)'s avatar Tristan Goguet (AlphaTango)
# Définition
CO2 est le nom du module correspondant à la 2nd version du module Communecter.
Le module CO2 fait parti du projet PixelHumain, au même titre que d'autres modules développés au sein de PixelHumain.
CO2 a lui même été construit de façon à pouvoir intégrer facilement de nouvelles applications, et aussi pouvoir les activer/désactiver très facilement, via 1 seul fichier de configuration : https://github.com/pixelhumain/co2/blob/master/config/CO2/params.json
Les applications actuellement activées sont : welcome, recherche, agenda, annonces, live, page, et info.
Ce fichier sert à configurer un certain nombre de paramètres pour chaque application, ce qui permet de configurer très rapidement une nouvelle app, sans toucher au code commun qui gère toutes les applications.
# Créer une nouvelle application dans CO2
## 1- Ajouter l'application dans le fichier /modules/co2/config/CO2/params.json, en suivant l'exemple suivant :
Il convient bien évidemment de remplacer "#nomdelapplication" par le nom de votre application, les titres ect ...
Pour l'icône, choisir un nom parmi cette liste : http://fontawesome.io/icons/
```
"#nomdelapplication": {
"inMenu" : true,
"useHeader" : true,
"open" : true,
"subdomain" : "nomdelapplication",
"subdomainName" : "Nomdelapplication",
"hash" : "#app.nomdelapplication",
"icon" : "nomDeLIconeFontawesome",
"mainTitle" : "Nom de l'application",
"placeholderMainSearch" : "Rechercher dans ..."
},
```
(il est conseillé d'indiquer tous les paramètres, mais il est possible d'en enlever ou d'en rajouter selon vos besoins.)
## 2- Ajouter une nouvelle fonction dans le fichier AppController.php du module CO2
Ouvrir le fichier /modules/co2/controllers/AppController.php et rajouter par exemple :
```
public function actionNomdelapplication(){
CO2Stat::incNbLoad("co2-nomdelapplication");
echo $this->renderPartial("nomdelapplication", array(), true);
}
```
## 3- Créer les liens vers les actions
Dans /modules/co2/components/CommunecterController.php, il faut ajouter votre lien dans l'array "app" :
(l'array app se situe environ à la ligne 460 du fichier)
```
"app" => array(
"nomdelapplication" => array('href' => "/ph/communecter/app/nomdelapplication", "public" => true),
),
```
## 4- Créer la vue
Elle est appelée par le contrôleur pour gérer l'affichage (code HTML, CSS, JS).
Créer le fichier /modules/co2/views/app/nomdelapplication.php
On peut inclure le code d'une autre vue en utilisant $this->renderPartial
## 5- Accéder à votre application
Bravo ! Maintenant vous n'avez plus qu'à accéder à votre application grâce à l'url suivante :
` http://127.0.0.1/ph/co2#nomdelapplication `
# Créer un nouvel élément dans CO2
Communecter permet déjà de gérer plusieurs éléments : citoyens, organisations, projets, événement, news, point d'intérets, annonces, etc...)
Voici la marche à suivre pour ajouter un nouvel élément,
## 1- Créer un nouveau controller dans le module CitizenToolKit
Créer le dossier /modules/citizenToolKit/controllers/nomdelelement
Ce dossier contiendra l'ensemble de la logique métier.
A l'intérieur de ce dossier, créer les actions dont vous avez besoin.
Pour créer une action, créer un fichier comme "/modules/citizenToolKit/controllers/nomdelelement/IndexAction.php" qui contiendra par exemple :
```
<?php
class IndexAction extends CAction
{
public function run( $type=null, $id= 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éer les autres classes de la même manière :
"/modules/citizenToolKit/controllers/nomdelelement/searchAction.php"
"/modules/citizenToolKit/controllers/nomdelelement/saveAction.php"
etc
## 2- Créer un nouveau modèle dans le module CitizenToolKit
Créer le fichier /modules/citizenToolKit/models/nomdelelement.php
```
<?php
class Nomdelelement {
const COLLECTION = "nomdelelement";
const CONTROLLER = "nomdelelement";
const ICON = "fa-rss";
const COLOR = "#F9B21A";
public static function nomdelafonction() {
}
}
```
## 3- Créer un nouveau controller dans le module CO2
Créer le fichier /modules/co2/controllers/NomdelelementController.php et le remplir comme dans l'exemple suivant :
```
<?php
class NomdelelementController extends CommunecterController {
protected function beforeAction($action) {
return parent::beforeAction($action);
}
public function actions()
{
return array(
'index' => 'citizenToolKit.controllers.nomdelelement.IndexAction',
'autre' => 'citizenToolKit.controllers.nomdelelement.AutreAction'
);
}
}
?>
```
L'array retourné par la fonction actions() contient l'essemble des pages qui seront traitées par les classes précédemment créées dans le module CitizenToolKit.
## 4- Créer les liens vers les actions
Dans /modules/co2/components/CommunecterController.php, il faut créer les liens vers les actions (qui afficheront les sous pages) dans l'array $pages :
```
"nomdelelement" => array(
"index" => array("href" => "/ph/communecter/nomdelelement/index", "public" => true),
"autre" => array("href" => "/ph/communecter/nomdelelement/autre", "public" => true)
),
```
## 5- Créer la vue
Elle est appelée par le contrôleur pour gérer l'affichage (code HTML, CSS, JS).
Créer le dossier /modules/co2/views/nomdelelement puis fichiers nommés en fonction du nom des actions :
- /modules/co2/views/nomdelelement/index.php
- /modules/co2/views/nomdelelement/autre.php
\ No newline at end of file