Détail du message 47628.2

Message numéro 2 dans le sujet Editer les actions possibles sur les richText.

  • 47628.2 en réponse à 47628.1 écrit par Mathias

    05/12/2011 16:27


    Gaël Port
    Titre : Développeur RBS Change
    Rang : Expert
    Bonjour,

    Concernant la bbcodes, à partir de la version 3.5, cela se passe pour la majeure partie dans modules/website/lib/bbcode/BBCodeParser.class.php et pour la partie configuration, plus précisément dans la classe website_BBCodeProfile.

    Il y a trois niveaux de spécialisations possibles :

    1) Ajouter des bbcodes spécifiques dans un projet : il suffit de les déclarer dans le project.xml, dans la section modules/website/bbcodes. Par exemple :
    <modules>
    	<website>
    		<bbcodes>
    			<entry name="1">forumsextended_BBCodeTagInfoSpoiler</entry>
    			<entry name="2">forumsextended_BBCodeTagInfoNote</entry>
    		</bbcodes>
    	</website>
    </modules>
    Et d'écrire les classes forumsextended_BBCodeTagInfoSpoiler et forumsextended_BBCodeTagInfoNote afin qu'elles décrivent le fonctionnement du bbcode. Ces classes doivent étendre website_BBCodeTagInfo. Vous trouverez les implémentations des balises BBCodes standard dans le fichier indiqué plus haut, ce qui fournit un certain nombre d'exemples.



    2) Retirer des balises pour l'ensemble du projet : vous pouvez pour cela définir une classe website_BBCodeProfileDefault étendant website_BBCodeProfile et dont le constructeur reprendra uniquement les balises que vous voulez utiliser. Par exemple pour n'autoriser que le gras et l'italique :
    class website_BBCodeProfileDefault extends website_BBCodeProfile
    {
    	/**
    	 * @var string
    	 */
    	protected $name = 'default';
    	
    	/**
    	 * @param website_BBCodeParser $bbcodeParser
    	 */
    	public function __construct($bbcodeParser)
    	{
    		$bbcodeParser->addTagInfo(new website_BBCodeTagInfo('b', 'strong', 'richtext/bold'));
    		$bbcodeParser->addTagInfo(new website_BBCodeTagInfo('i', 'em', 'richtext/italic'));
    		$this->addProjectConfig($bbcodeParser);
    	}
    }


    3) Enfin il est possible de spécialiser les bbcodes autorisés par module : pour cela il suffit d'une part de créer vos différents profils (comme au point 2) mais en les nommant autrement que default), de les déclarer dans le project.xml, dans la section modules/website/bbcodeProfiles :
    <modules>
    	<website>
    		<bbcodeProfiles>
    			<entry name="1">default</entry>
    			<entry name="2">test</entry>
    		</bbcodeProfiles>
    	</website>
    </modules>
    À partir de là vous pouvez indiquer module par module quel profil est utilisé (par défaut chacun prendra le profil "default"). Ça se passe toujours dans le project.xml, dans la section modules/<moduleName>, déclarer la clé bbcodeProfile. Par exemple :
    <modules>
    	<forums>
    		<entry name="bbcodeProfile">test</entry>
    	</forums>
    </modules>
    Qui affectera le profil "test" au module forums.



    Dans tous les cas, après ces modification il faudra lancer un compile-config et un website.compile-bbcodes. Cette dernière commande va générer le fichier build/<projectProfile>/modules/website/lib/bbcode/BBCodeEditor.js qui se charge de générer la barre de boutons dans les formulaires à partir du template modules/website/templates/builder/bbcodes/BBCodeEditor.js (qui peut être au besoin surchargé dans override si vous voulez spécialiser le markup des boutons ou le javascript associé).
 
1378 membres
Aucun membre connecté