Canapin
(Coin-coin le Canapin)
17 Septiembre, 2020 13:46
1
¡Hola!
Me gustaría intentar modificar la función buildQuote para que añada una nueva línea antes de la etiqueta de apertura [quote].
Básicamente, modificando esto:
return `[quote="${params.join(", ")}"]\n${contents.trim()}\n[/quote]\n\n`;
a esto:
return `\n[quote="${params.join(", ")}"]\n${contents.trim()}\n[/quote]\n\n`;
¿Es posible hacer algo así con un componente de tema? ¿Cómo puedo sobrescribir esta función?
Canapin
(Coin-coin le Canapin)
17 Septiembre, 2020 16:03
2
He logrado hacerlo, pero ¿hay una solución más elegante?
<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 no hay publicación actual, usa el ID de la primera publicación del flujo
if (!postId && postStream) {
postId = postStream.get("stream.firstObject");
}
// Si estamos editando una publicación, obtén la respuesta al importar una cita
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 Me gusta
asc
27 Febrero, 2023 23:10
3
Disculpa por revivir un tema antiguo, pero ¿esto todavía te funciona/has tenido que actualizarlo? He estado intentando que esto funcione y no consigo que se active en absoluto, pero he tenido un tiempo terrible con cualquier cosa relacionada con modifyClass.
Canapin
(Coin-coin le Canapin)
28 Febrero, 2023 08:05
4
Lo acabo de probar y todavía funciona
Literalmente lo copié y pegué en mi tema y funcionó sin ninguna modificación.
1 me gusta
asc
28 Febrero, 2023 14:10
6
Gracias @merefield y @Canapin . He estado intentando aprender la API de plugins de Discourse jugando con lo que parece que deberían ser cosas sencillas como esta, pero modifyClass es muy inconsistente en cuanto a cuándo funcionará y cuándo no. Tengo un pequeño componente temático (ese en el que te mencionaron @merefield ) donde dos llamadas a modifyClass funcionan, pero una tercera no, es muy frustrante intentar averiguar si he hecho algo mal o si es solo modifyClass.
Disculpa el off-topic en tu tema y gracias por la rápida respuesta @Canapin .
Actualización:
1 me gusta
Canapin
(Coin-coin le Canapin)
28 Febrero, 2023 14:16
7
No te preocupes, no sé qué significa off-topic ¡pero estamos aquí para ayudar!
1 me gusta
Canapin
(Coin-coin le Canapin)
Cerrado
30 Marzo, 2023 14:16
8
Este tema se cerró automáticamente 30 días después de la última respuesta. Ya no se permiten nuevas respuestas.