{"label":"Plugin","syntax":"php"} can('{{plugin}}','read')) return; $menuItems[] = array( 'sort'=>3, 'url'=>'index.php?module={{plugin}}', 'label'=>'{{plugin}}', 'icon'=> 'far fa-question-circle', 'color'=> '#3498db' ); } //Cette fonction va generer une page quand on clique sur {{plugin}} dans menu function {{plugin}}_page(){ global $_,$myUser; if(!isset($_['module']) || $_['module'] !='{{plugin}}') return; $page = !isset($_['page']) ? 'list.{{entity.readable}}' : $_['page']; $file = __DIR__.SLASH.'page.'.$page.'.php'; if(!file_exists($file)) throw new Exception("Page ".$page." inexistante"); require_once($file); } //Fonction executée lors de l'activation du plugin function {{plugin}}_install($id){ if($id != 'fr.idleman.{{plugin}}') return; Entity::install(__DIR__); } //Fonction executée lors de la désactivation du plugin function {{plugin}}_uninstall($id){ if($id != 'fr.idleman.{{plugin}}') return; Entity::uninstall(__DIR__); } //Déclaration des sections de droits du plugin function {{plugin}}_section(&$sections){ $sections['{{plugin}}'] = "Gestion des droits sur le plugin {{plugin}}"; // $sections['{{entity}}'] = "Gestion des droits sur l'entité {{entity}}"; } //cette fonction comprends toutes les actions du plugin qui ne nécessitent pas de vue html function {{plugin}}_action(){ require_once(__DIR__.SLASH.'action.php'); } {{~! Pas de page réglages }}//Déclaration du menu de réglages function {{plugin}}_menu_setting(&$settingMenu){ global $_, $myUser; if(!$myUser->can('{{plugin}}','configure')) return; $settingMenu[]= array( 'sort' =>1, 'url' => 'setting.php?section=global.{{plugin}}', 'icon' => 'fas fa-angle-right', 'label' => '{{plugin}} Général' ); $settingMenu[]= array( 'sort' =>1, 'url' => 'setting.php?section=list.{{plugin}}.{{entity.readable}}', 'icon' => 'fas fa-angle-right', 'label' => '{{plugin}}' ); } {{/~}} {{~! Pas de page réglages }}//Déclaration des pages de réglages function {{plugin}}_content_setting(){ global $_; if(file_exists(__DIR__.SLASH.'setting.'.$_['section'].'.php')) require_once(__DIR__.SLASH.'setting.'.$_['section'].'.php'); } {{/~}} {{~! Pas de page réglages }}//Déclaration des settings de base //Types possibles : text,select ( + "values"=> array('1'=>'Val 1'),password,checkbox. Un simple string définit une catégorie. Configuration::setting('{{plugin}}',array( "Général", '{{plugin}}_enable' => array("label"=>"Activer","type"=>"checkbox"), )); {{/~}} {{~ Widget de dashboard }} //Affichage du/des widget(s) function {{plugin}}_widget(&$widgets){ global $myUser; require_once(__DIR__.SLASH.'..'.SLASH.'dashboard'.SLASH.'DashboardWidget.class.php'); $modelWidget = new DashboardWidget(); $modelWidget->model = '{{plugin}}'; $modelWidget->title = '{{Plugin}}'; $modelWidget->icon = 'far fa-bookmark'; $modelWidget->background = '#273c75'; $modelWidget->load = 'action.php?action={{plugin}}_widget_load'; $modelWidget->js = [Plugin::url().'/js/widget.js?v=1']; $modelWidget->css = [Plugin::url().'/css/widget.css?v=2']; $modelWidget->description = "{{description}}"; $widgets[] = $modelWidget; } {{/~}} //Déclation des assets Plugin::addCss("/css/main.css"); Plugin::addJs("/js/main.js"); //Mapping hook / fonctions Plugin::addHook("install", "{{plugin}}_install"); Plugin::addHook("uninstall", "{{plugin}}_uninstall"); Plugin::addHook("section", "{{plugin}}_section"); Plugin::addHook("menu_main", "{{plugin}}_menu"); Plugin::addHook("page", "{{plugin}}_page"); Plugin::addHook("action", "{{plugin}}_action"); {{~! Pas de page réglages }}Plugin::addHook("menu_setting", "{{plugin}}_menu_setting");{{/~}} {{~! Pas de page réglages }}Plugin::addHook("content_setting", "{{plugin}}_content_setting");{{/~}} {{~ Widget de dashboard }}Plugin::addHook("widget", "{{plugin}}_widget");{{/~}} ?>