Personnaliser les boutons BBCode dans Kunena

KunenaLe 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/<VOTRETEMPLATE>/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.

image0

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é ?

Cpoiez le fichier xml dans le même dossier que le fichier "edit.php" cité précédement :
/bibliothèque/kunena/bbcode/editor.xml ==> /templates/<VOTRETEMPLATE>/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 :

image2

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 boutique

Joomla! 3 Le livre pour tousJoomla! 3 Le Livre Pour Tous
est écrit pour toutes les personnes qui débutent avec Joomla!, ou qui possèdent déjà quelques connaissances avec les versions précédentes, et qui souhaitent construire et entretenir un site web sans avoir à entrer dans le code.

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 tag="hide" name="hide" title="COM_KUNENA_EDITOR_HIDE" alt="COM_KUNENA_EDITOR_HELPLINE_HIDE">
         <wrap-selection />
     </button>

et par la suite :

   <button tag="map" name="map" title="COM_KUNENA_EDITOR_MAP" alt="COM_KUNENA_EDITOR_HELPLINE_MAP">
         <wrap-selection />
     </button>
    <separator name="misc" />
    <button name="help" title="COM_KUNENA_EDITOR_HELP" alt="COM_KUNENA_EDITOR_HELPLINE_HELP">
         <link url="http://docs.kunena.org/index.php/bbcode" />
     </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

Notez cet article:
3
Construction de page Joomla! par drag & Drop avec ...
Mise à jour de Joomla 3.x vers Joomla 3.4

Articles en relation

Commentaires

 
Pas encore de commentaire
Déjà inscrit ? Connectez-vous ici
Guest
mardi 27 juin 2017
Si vous souhaitez vous inscrire, veuillez saisir un nom d'utilisateur, mot de passe et nom.

Image Captcha

Sur ce site, nous utilisons des cookies.