Git Product home page Git Product logo

exampleplugin's Introduction

Ce repo est archivé, Il se trouve maintenant sur la page ITSM-NG

Développer un plugin ITSM-NG1.5

ITSM-NG est doté d'un puissant moteur de plugin qui permet de modifier la majorité des pages du logiciel et d'en créer. Les méthodes de création d'un plugin sont assez libre mais nécessite de suivre quelques standards. (Cette page est liée a un repo github contenant un exemple minimal)

L'arborescence

L'arborescence des plugins ITSM-NG se présente de la sorte:

MyPlugin/
┣ front/
┣ inc/
┣ locales/
┣ */
┣ hook.php
┗ setup.php

Les dossiers

  • front/ contient les fichiers contenant les pages et formulaires du plugin.
  • inc/ contient les fichier contenant les classes et la logique du plugin.
  • locales/ contient les fichier de traduction (*.po, *.mo).
  • Vous avez la liberté d'ajouter d'autres dossiers en veillant a garder l'arborescence compréhensible.

Les fichiers

setup.php

setup.php défini la fiche d'identité et les vérifications d'installation du plugin. il doit au moins contenir ces cinq fonctions ({MONPLUGIN} étant le nom de votre plugin):

hook.php

hook.php contient la définition des hooks du plugin. il doit au moins contenir ces deux fonctions ({MONPLUGIN} étant le nom de votre plugin):

Convention de nommage

Le système de plugin est sensible au nommage des fichier et des classes, ainsi, un fichier qui s'appelle {NOMDUFICHIER}.php ou {NOMDUFICHIER}.*.php doit contenir une classe qui se nomme Plugin{NOMDUPLUGIN}{NOMDUFICHIER} Sinon, elle ne sera pas detectée par le logiciel.

Les tables créées par le plugin doivent toutes avoir un nom commencant par glpi_plugin_{NOMDUPLUGIN}_

Configuration

Pour customiser le fil d'ariane et les boutons du header de chaque pages, il est possible d'ajouter dans leur header un fichier de configuration (/inc/config.class.php) Celui-ci peut aussi encapsuler le fichier front lors de l'ajout d'un champ dans la barre de navigation par exemple (comme ici)

Ce fichier contient en particulier la fonction getMenuContent qui retourne un objet contenant:

  • le titre de la page
  • la page a rediriger
  • l'icone a afficher dans le champ ou dans le fil d'ariane

Gestion des droits

Pour gérer les droits d'un plugin, celui-ci doit (créer une table de profile nommée glpi_plugin_{NOMDUPLUGIN}_profiles dans le fichier hook.php)[/hook.php#L38]. Le plugin doit aussi contenir un fichier (/inc/profile.class.php)[/inc/profile.class.php] qui contient la logique d'attribution des droits, le code dans le repo d'exemple donne les droit de modifications a celui qui installe le plugin, qu'il peut alors gérer dans la partie administration>profiles>{NOMDUPLUGIN} grâce aux fonctions:

  • (function getTabNameForItem(CommonGLPI $item, $withtemplate=0))[/inc/profile.class.php#L112]
  • (static function displayTabContentForItem(CommonGLPI $item, $tabnum=1, $withtemplate=0))[/inc/profile.class.php#L128]
  • (function showForm($profiles_id = 0, $openform = true, $closeform = true))[/inc/profile.class.php#L171]

Traduction

Les fichiers de traductions sont dans des fichiers .mo .po et .pot Cette partie peut être automatisé avec Poedit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.