Ajouter son propre bouton au plugin
Voici un petit guide pour ajouter son propre bouton sur la toolbar de votre forum.
Il vous faudra tout d’abord un compte GitHub.com (un compte gratuit suffira), une fois votre compte validé, allez sur la page du plugin Formatting Toolbar : https://github.com/iunctis/discourse-formatting-toolbar et cliquez sur le bouton Fork en haut à droite :
Ceci vous permettra de copier le plugin sur votre compte. Allez sur votre compte, puis dans la page Repositories et ouvrez le plugin discourse-formatting-toolbar.
Le plugin est sur votre compte et vous pouvez à présent le modifier à votre guise, ça n’affectera pas le plugin utilisé sur mon compte.
Pour ajouter un bouton il y a au minimum deux fichiers à modifier :
/assets/javascripts/discourse/initializers/formattingtlb-ui.js.es6
/config/locales/client.fr.yml
Si vous êtes pointilleux, vous pouvez ajouter
/config/locales/client.en.yml
Et enfin si votre bouton nécessite l’ajout d’un BBCode :
/assets/javascripts/lib/discourse-markdown/formatting_bbcode.js.es6
Pour modifier un fichier, allez vers le fichier en question, ouvrez-le et cliquez sur l’icône en forme de crayon à droite :
Modifier le fichier formattingtlb-ui.js.es6
-
Le fichier
/assets/javascripts/discourse/initializers/formattingtlb-ui.js.es6
gère l’intégration du bouton sur la toolbar. Vous noterez un pattern dans ce fichier, un bouton représente un bloc de 8 lignes :api.onToolbarCreate(toolbar => { toolbar.addButton({ id: "justify_ui_button", group: "extras", icon: "align-justify", perform: e => e.applySurround('[justify]', '[/justify]', 'justify_ui_default_text') }); });
Copiez ce bloc, passez une ligne après });
et modifiez le code à partir de la troisième ligne :
-
id:
représente le nom de code que vous donnerez au bouton. Cet élément va être utile plus bas et dans le fichier de langue. -
group:
est l’endroit où sera situé le bouton. Il existe trois groupes :fontStyles
placera le bouton après les gras, italique (et souligner) /insertions
pour le placer après le bouton d’upload d’images et de fichiers /extras
pour placer le bouton après le bouton d’emoji. -
icon:
est l’icône FontAwesome qui donnera au bouton son visuel. Pour avoir les codes rendez-vous sur la page de la police FontAwesome. Exemple pour avoir un bouton avec l’image de l’ancre, utilisez le codeanchor
-
perform:
dans la parenthèse, trois éléments sont à modifier, les deux premiers concernent le code qui sera généré en appuyant sur le bouton, le troisième fait appel au texte qui apparaît en passant la souris sur le bouton. Le premier mot doit être identique au premier mot de la partie id vue plus haut.
[url][/url]
. Le code pour la langue et l’id du bouton sera lien
et je veux que le bouton ait cette icône : http://fontawesome.io/icon/external-link/
api.onToolbarCreate(toolbar => {
toolbar.addButton({
id: "justify_ui_button",
group: "extras",
icon: "align-justify",
perform: e => e.applySurround('[justify]', '[/justify]', 'justify_ui_default_text')
});
});
api.onToolbarCreate(toolbar => {
toolbar.addButton({
id: "lien_ui_button",
group: "extras",
icon: "external-link ",
perform: e => e.applySurround('[url]', '[/url]', 'lien_ui_default_text')
});
});
Validez vos changements en cliquant sur le bouton vers Commit changes.
Modifier le fichier client.fr.yml
http://
entre les boutons [url]
et [/url]
:justify_ui_button_title: "Justifier votre texte"
justify_ui_default_text: "Texte"
lien_ui_button_title: "Ajouter un lien"
lien_ui_default_text: "http://"
Sauvegardez et votre bouton sera ajouté et le texte y sera associé !
Je n’évoque pas dans ce mini-guide la création d’un nouveau BBCode en plus d’un bouton, il faut ajouter du code dans le fichier /assets/javascripts/lib/discourse-markdown/formatting_bbcode.js.es6
mais cela s’avère plus complexe.