Canapin
(Coin-coin le Canapin)
Septembre 17, 2020, 1:46
1
Bonjour !
J’aimerais essayer de modifier la fonction buildQuote afin qu’elle ajoute une nouvelle ligne avant la balise d’ouverture [quote].
En gros, passer de ceci :
return `[quote="${params.join(", ")}"]\n${contents.trim()}\n[/quote]\n\n`;
à ceci :
return `\n[quote="${params.join(", ")}"]\n${contents.trim()}\n[/quote]\n\n`;
Est-il possible de faire cela avec un composant de thème ? Comment puis-je remplacer cette fonction ?
Canapin
(Coin-coin le Canapin)
Septembre 17, 2020, 4:03
2
J’ai réussi à y parvenir, mais existe-t-il une solution plus élégante ?
<script type="text/discourse-plugin" version="0.8.23">
function buildQuote(post, contents, opts = {}) {
if (!post || !contents) {
return "";
}
const params = [
opts.username || post.username,
`post:${opts.post || post.post_number}`,
`topic:${opts.topic || post.topic_id}`
];
if (opts.full) params.push("full:true");
return `\n[quote="${params.join(", ")}"]\n${contents.trim()}\n[/quote]\n\n`;
}
api.modifyClass('controller:composer', {
actions: {
importQuote(toolbarEvent) {
const postStream = this.get("topic.postStream");
let postId = this.get("model.post.id");
// Si aucun post actuel n'existe, utilisez le premier ID de post du flux
if (!postId && postStream) {
postId = postStream.get("stream.firstObject");
}
// Si nous modifions un post, récupérez la réponse lors de l'importation d'une citation
if (this.get("model.editingPost")) {
const replyToPostNumber = this.get("model.post.reply_to_post_number");
if (replyToPostNumber) {
const replyPost = postStream.posts.findBy(
"post_number",
replyToPostNumber
);
if (replyPost) {
postId = replyPost.id;
}
}
}
if (postId) {
this.set("model.loading", true);
return this.store.find("post", postId).then(post => {
const quote = buildQuote(post, post.raw, {
full: true
});
toolbarEvent.addText(quote);
this.set("model.loading", false);
});
}
}
}
});
</script>
2 « J'aime »
asc
Février 27, 2023, 11:10
3
Désolé de déterrer un vieux sujet, mais est-ce que cela fonctionne toujours pour vous / avez-vous dû le mettre à jour ? J’ai essayé de faire fonctionner cela et je n’arrive pas à le déclencher du tout, mais j’ai eu un très mauvais moment avec tout ce qui concerne modifyClass.
Canapin
(Coin-coin le Canapin)
Février 28, 2023, 8:05
4
Je viens de l’essayer, et cela fonctionne toujours
Je l’ai littéralement copié-collé dans mon thème, et cela a fonctionné sans aucune modification.
1 « J'aime »
asc
Février 28, 2023, 2:10
6
Merci @merefield et @Canapin . J’ai essayé d’apprendre l’API des plugins Discourse en trifouillant ce qui me semble être des choses simples comme celle-ci, mais modifyClass est tellement incohérent quant à son fonctionnement. J’ai un petit composant de thème (celui que vous avez mentionné @merefield ) où deux appels à modifyClass fonctionnent mais un troisième ne fonctionne pas, c’est très frustrant d’essayer de comprendre si j’ai fait quelque chose de mal ou si c’est juste modifyClass.
Désolé pour le hors-sujet sur votre topic et merci pour la réponse rapide @Canapin .
Mise à jour :
1 « J'aime »
Canapin
(Coin-coin le Canapin)
Février 28, 2023, 2:16
7
Ne t’inquiète pas, je ne sais pas ce que signifie HS mais nous sommes là pour aider !
1 « J'aime »
Canapin
(Coin-coin le Canapin)
A fermé ce sujet ()
Mars 30, 2023, 2:16
8
Ce sujet a été automatiquement fermé 30 jours après la dernière réponse. Les nouvelles réponses ne sont plus autorisées.