CMS Automne
http://www.automne-cms.org/forum/

Au sujet du développement de modules PHP
http://www.automne-cms.org/forum/viewtopic.php?f=2&t=834
Page 1 sur 1

Auteur:  pdub75 [ Lun Mai 02, 2011 8:15 am ]
Sujet du message:  Au sujet du développement de modules PHP

Bonjour,

suite à une question de ma part, j'avais eu l'occasion de tester le mode d'emploi pour créer un module PHP et l'utiliser dans un block à l'intérieur d'une rangée de contenu.

Mais ce que j'aimerais maintenant c'est faire apparaître ce module PHP dans le panneau d'administration avec les autres modules (tel que Alias, par exemple). En prévoyant un lien du genre 'Gérer mon module' (qui devrait apparaître juste en dessous du nom du module) cela me permettrait d'ouvrir une fenêtre et d'y mettre tout ce qui peut être nécessaire à l'administration du module. Libre à moi d'y prévoir tout ce dont j'ai besoin, bien sûr. 8)

Pourriez-vous m'indiquer la marche à suivre SVP, sachant que ce genre de tuto, quoiqu'un peu technique, pourrait aussi donner l'envie à d'autres développeurs de créer et même vous proposer des modules PHP.

En tout cas merci d'avance pour les infos. :wink:

Auteur:  Sébastien [ Lun Mai 02, 2011 8:44 am ]
Sujet du message:  Re: Au sujet du développement de modules PHP

C'est une sacré question que tu pose là. Faire le tour de ce qu'il est possible de faire en PHP avec un module peut prendre des heures d'explications. Je vais commencer par te dire simplement comment créer un module basique qui offre un accès dans le panneau latéral. A toi ensuite de creuser (en te servant notamment des exemples de modules à télécharger) pour étendre les capacités de ce module.

Il te faut d'abord créer un module polymod via l'administration d'Automne. Libre à toi d'y créer ou pas des objets à l'intérieur ensuite. Note bien le codename que tu donnera à ton module, il te resservira ensuite.

Ensuite créé un répertoire /automne/admin/modules/CODENAME (ou CODENAME est à remplacer par le codename que tu aura donné à ton module. C'est valable à chaque fois que j'écrirai CODENAME plus bas.).

Puis créé le fichier /automne/classes/modules/CODENAME.php contenant le code suivant :
Code :
<?php
/**
  * Class CMS_module_**codename**
  *
  * Represent the **codename** module.
  *
  * @package CMS
  * @subpackage module
  * @author ...
  */

class CMS_module_**codename** extends CMS_polymod
{
   ...
}
?>


Cette classe te permettra d'étendre ton module polymod pour y ajouter des fonctions PHP qui te seront spécifiques.

On va ensuite y ajouter la fonction qui te permettra d'ajouter un élément dans le panneau latéral d'Automne :
Code :
/**
  * Return a list of objects infos to be displayed in module index according to user privileges
  *
  * @return string : HTML scripts infos
  * @access public
  */
function getObjectsInfos($user) {
   $objectsInfos = parent::getObjectsInfos($user); //get parent links details
   $cms_language = $user->getLanguage();
   //check user rights on module
   if ($user->hasModuleClearance($this->getCodename(), CLEARANCE_MODULE_EDIT)) {
      /*Add an element to the right panel*/
      $objectsInfos[] = array(
                  'label'         => 'Test',
                  'adminLabel'   => 'Test',
                  'description'   => 'Manage test element ...',
                  'objectId'      => 'object-test',
                  'url'         => PATH_ADMIN_MODULES_WR.'/'.$this->getCodename().'/test.php',
                  'module'      => $this->getCodename(),
                  'class'         => 'atm-elements',
                  'frame'         => true
               );
      /* ici il est possible d'ajouter d'autres éléments au panneau latéral via cette syntaxe :
      $objectsInfos[] = array(
                  'label'         => '...',               //Nom du lien
                  'adminLabel'   => '...',               //Nom de l'onglet
                  'description'   => '...',               //description de l'élément
                  'objectId'      => '...',               //identifiant unique du lien
                  'url'         => PATH_ADMIN_MODULES_WR.'/'.$this->getCodename().'/test.php', //url vers le fichier PHP à ouvrir dans l'onglet
                  'module'      => $this->getCodename(),   //codename du module
                  'class'         => 'atm-elements',         //icone dans le panneau latéral
                  'frame'         => true                //ouverture du fichier PHP dans une iframe
               );
      */
   }
   return $objectsInfos;
}


Cette fonction à ajouter dans la classe de ton module permet de déclarer les différents liens à ajouter dans le panneau latéral d'Automne. Ici ça ajoutera un simple lien de gestion d'un élément "Test" (modifie le code à ta convenance).

Ce lien te permettra d'ouvrir un fichier :
/automne/admin/modules/CODENAME/test.php dans une iframe. Libre à toi de mettre ce que tu veux ensuite dans ce fichier test.php.

Auteur:  pdub75 [ Lun Mai 02, 2011 1:00 pm ]
Sujet du message:  Re: Au sujet du développement de modules PHP

Merci Sébastien ! Super info :D

Je vais éplucher la question dès que possible, en espérant donner bientôt une bonne nouvelle.

Page 1 sur 1 Le fuseau horaire est UTC [Heure d’été]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/