<= [[fr:plugin:struct|Extension Struct]] ====== Struct Plugin: Support développeur ====== L'extension Struct permet à d'autres développeurs d'extensions de s'appuyer sur ses fonctionnalités, en ajoutant des fonctionnalités supplémentaires. =====Inscription de nouveaux types===== L'extension signale l'événement ''PLUGIN_STRUCT_TYPECLASS_INIT'' qui peut être intercepté par l'[[devel:action_plugins|Action Plugins]]. Il n'y a pas d'action par défaut. Le ''$data'' passé est un tableau associatif répertoriant les [[fr:plugin:struct:type|Types]] disponibles et leurs classes respectives. Il ressemble à ceci: array( 'Checkbox' => 'dokuwiki\\plugin\\struct\\types\\Checkbox', 'Date' => 'dokuwiki\\plugin\\struct\\types\\Date', 'DateTime' => 'dokuwiki\\plugin\\struct\\types\\DateTime', 'Decimal' => 'dokuwiki\\plugin\\struct\\types\\Decimal', 'Dropdown' => 'dokuwiki\\plugin\\struct\\types\\Dropdown', 'Lookup' => 'dokuwiki\\plugin\\struct\\types\\Lookup', 'Mail' => 'dokuwiki\\plugin\\struct\\types\\Mail', 'Media' => 'dokuwiki\\plugin\\struct\\types\\Media', 'Page' => 'dokuwiki\\plugin\\struct\\types\\Page', 'Tag' => 'dokuwiki\\plugin\\struct\\types\\Tag', 'Text' => 'dokuwiki\\plugin\\struct\\types\\Text', 'Url' => 'dokuwiki\\plugin\\struct\\types\\Url', 'User' => 'dokuwiki\\plugin\\struct\\types\\User', 'Wiki' => 'dokuwiki\\plugin\\struct\\types\\Wiki', ); Les extensions peuvent ajouter leur propre paire ''Type'' => ''class'' à cet endroit. Le nom de la classe doit être entièrement qualifié et doit être chargé par l'[[devel: autoloader | Autoloader]] de DokuWiki. La classe doit hériter de l'[[https://github.com/cosmocode/dokuwiki-plugin-struct/blob/master/types/AbstractBaseType.php|AbstractBaseType]] ou d'une de ses sous-classes. Veuillez vous reporter au code source des types existants pour savoir comment implémenter votre propre type. Exemples d'extensions qui implémentent ceci: [[plugin:structstatus|structstatus Plugin]], [[plugin:structgroup|structgroup Plugin]], [[plugin:structjoin|structjoin Plugin]], [[plugin:structcombolookup|structcombolookup Plugin]] ===== Autoriser des clés de configuration supplémentaires ===== Lorsque vous écrivez une extension réalisant sa propre agrégation, vous pouvez vouloir réutiliser la classe ConfigParser. Par défaut, cette classe lance une exception lorsqu'une clé de configuration est rencontrée et qu'elle ne comprend pas. Vous pouvez gérer l'événement ''PLUGIN_STRUCT_CONFIGPARSER_UNKNOWNKEY'' et empêcher le comportement par défaut (lancement de l'exception). Vous pouvez ajouter votre propre configuration à la table ''config'' dans l'événement. array( 'config' => &$this->config, 'key' => 'the unknown config key', 'val' => 'the value for that key' ) Exemples d'extensions qui implémentent ceci: [[plugin:structgantt | l'extension structgantt]], [[plugin:structodt|structodt Plugin]] ===== Modifier le rendu des lignes dans les tableaux d’agrégation ===== L'événement ''PLUGIN_STRUCT_AGGREGATIONTABLE_RENDERRESULTROW'' est appelé chaque fois que le mécanisme d'agrégation rend une ligne dans un [[aggregation|tableau d'agrégation]]. Vous pouvez utiliser l'accroche (hook) ''BEFORE'' pour changer la procédure de rendu par défaut ou ''AFTER'' pour apporter quelques modifications à la ligne rendue. array( 'id' => $this->id, 'mode' => $this->mode, 'renderer' => $this->renderer, 'searchConfig' => $this->searchConfig, 'data' => $this->data, 'rownum' => &$rownum, 'row' => &$row, ) Les exemples d'extensions implémentant ce ci sont: [[plugin:structrowcolor|structrowcolor Plugin]]