Personnaliser les boutons BBCode dans Kunena

Le mécanisme des surcharges de template avec Joomla! offre une très grande fléxibilité avec une relative aisance. Si vous avez déjà utiliser ce système, vous savez que ce n’est qu’une simple opération de copie de fichiers core dans le bon répertoire, dans le répertoire html de votre template.


Personnaliser les boutons BBCode dans Kunena Dans les deux premiers opus de cette série, nous avons discuté du public cible pour Joomla! 4 et au-delà et de la vision de l’utilisateur final. Le mécanisme des surcharges de template avec Joomla! avec Joomla! offre une très grande fléxibilité avec une relative aisance. Si vous avez déjà utiliser ce système, vous savez que ce n’est qu’une simple opération de copie de fichiers core dans le bon répertoire, dans le répertoire html de votre template.
Kunena ne fait pas exception, mais avec une petite différence. Si, par exemple, vous voulez adapter la page édition/réponse, vous devrez copier le fichier :
/components/com_kunena/template/blue_eagle/html/topic/edit.php
dans votre template :
/templates//html/com_kunena/topic/edit.php
Et faire les changements dans le nouveau fichier de votre template. Hormis la position du fichier original, le fichier core, c’est une procéure standard pour joomla!.
Mais supposons que vous souhaitiez supprimiez plusieurs boutons dans la barre d’outils de l’éditeur BBCode. Lorsque vous regardez le code dans le fichier « edit.php » vous trouverez que ces boutons sont définis de telle manière que vous serez tenté de personnaliser certains fichiers de base de Kunena. Comme d’habitude, le but est de tout faire pour éviter cela cela. Voici comment :
Les boutons Kunena que nous souhaitons supprimer
Note : Si vous débuter avec ce forum, vous pouvez consulter le Tutoriel Kunena.

Dans l’ordre ce sont les boutons « Spoiler », « cacher le texte aux invités », « eBay », « Video », « Carte » et « Aide ».Nous avons de la chance avec « Spoiler », « eBay » et « Video ». On peut les mettre hors service dans Configuration >  BBCode dans l’administration Kunena. Pas de problème. Par contre, les trois autres sont codés en dur dans Kunena sans options de configuration.
Vous trouverez les définitions de ces boutons dans le fichier « /libraries/kunena/bbcode/editor.xml ». La chose la plus simple à faire est de supprimer les boutons que l’on veut à partir de ce fichier. Mais il n’est pas très propre de faire ces modifications dans le fichier core.
Pour rester fidèle aux bons principes, je vous propose la solution (peu orthodoxe) suivante : Préparation de la surcharger une classe core
Si nous regardons presque tout en haut du fichier « edit.php » que nous avons copié dans votre template, nous trouvons ces deux lignes :
$editor = KunenaBbcodeEditor::getInstance();
$editor->initialize(‘id’);
C’est dans la méthode d’initialisation où le fichier est lu et les boutons affichés. Alors pourquoi ne pas créer notre porpre fichier de class KunenaBbcodeEditor afin que nous puissions utiliser notre propre fichier xml personnalisé ?
Copiez le fichier xml dans le même dossier que le fichier « edit.php » cité précédement :/bibliothèque/kunena/bbcode/editor.xml ==> /templates//html/com_kunena/sujet/cuseditor.xml
Ensuite créez un nouveau fichier php dans ce répertoire nommé cuseditor.php. Votre répertoire devrait ressembler à ceci :

Le fichier cuseditor.php est là pour créer notre propre version de la class editor comme cela :
defined(‘_JEXEC’) or die(); class CusBbcodeEditor extends KunenaBbcodeEditor {}
Il exsite deux méthodes pour modifier nos choix. En premier, la méthode ::getinstance(). Copier le code à partir de la class originale en utilisant notre nouveau nom de class pour l’instance :
public static function getInstance($config = array()) {
static $instance = false;
if (!$instance) {
$instance = new CusBbcodeEditor($config);
}
return $instance;
}
Notez que le seul changement opéré est la déclaration de notre nouvel objet de class CusBbcodeEditor.
La méthode préférée est la méthode d’initialisation qui lit les définitions xml du bouton. Encore une fois, copiez le code depuis l’original et faites un seul petit changement pour charger la copie de notre version.
{codecitation width= »650px »} public function initialize($identifier=’class’) { $js = « window.addEvent(‘domready’, function() { kbbcode = new kbbcode(‘kbbcode-message’, ‘kbbcode-toolbar’, { dispatchChangeEvent: true, changeEventDelay: 1000, interceptTab: true });\n »; $xml_file = simplexml_load_file(dirname(__FILE__).’/cuseditor.xml’); $this->editor_elements = self::parseXML($xml_file); //Hook to manipulate the Editor XML like adding buttons $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin(‘kunena’); $dispatcher->trigger( ‘onKunenaBbcodeEditorInit’, array ( $this ) ); foreach ($this->editor_elements as $item) { $js .= $item->generateJs($identifier); } $js .= « });\n »; $template = KunenaTemplate::getInstance(); $template->addScript(‘js/editor.js’); JFactory::getDocument()->addScriptDeclaration( « // « ); } {/codecitation}
Notez à nouveau un seul petit changement pour lire le fichier xml renommé depuis le même répertoire que notre nouveau cuseditor.php.
La prochaine et dernière étape est de surcharger le template en utilisant notre nouvelle class. Dans l’édition du fichier de surcharge du template, remplacez cette ligne :
$editor = KunenaBbcodeEditor::getInstance();
par ces deux lignes :
require_once __DIR__ . ‘/cuseditor.php’;
$editor = CusBbcodeEditor::getInstance();
Vous utilisez maintenant votre propre version customisée de l’éditeur de BBCode de Kunena avec un minimum de modifications sans toucher aux fichiers core.
Bien évidemment, le but de cet exercice etait de supprimer certains boutons en dur. Pour supprimer ces trois boutons, « Masquer le texte », « Plan » et « Aide », supprimez les lignes appropriées de votre fichier « cuseditor.xml ».
<button name= »hide » title= »COM_KUNENA_EDITOR_HIDE »>
et par la suite :
<button name= »map » title= »COM_KUNENA_EDITOR_MAP »></button>
<button name= »help » title= »COM_KUNENA_EDITOR_HELP »></button>
Un dernier coup de balai pour griser les deux boutons « eBay » et « Video ». Il y a un séparateur en trop à la fin de la barre d’outils. C’est une simple modification pour supprimer l’étiquette du séparateur approprié dans le fichier xml.
Ce texte est une traduction de l’article Customizing Kunena BBCode buttons Crédits photo
Image by Free-Photos from Pixabay