J’ai cherché mais je n’ai rien trouvé - quelle serait la manière la plus simple d’afficher l’heure à laquelle un message a été publié, à la seconde près, dans la fenêtre contextuelle de partage ?
Chaque message a déjà l’horodatage exact disponible dans le HTML, donc cette information est certainement présente, mais je ne suis pas sûr à 100% de la meilleure façon de mettre à jour ce texte (qui, malheureusement, semble codé en dur, pas une date formatée) pour ajouter les secondes. Je suis surtout habitué au CSS et pas tellement au JavaScript (je peux le lire et le comprendre assez bien, mais je ne suis pas assez expérimenté pour connaître la manière « appropriée » de commencer à résoudre ce problème [la plupart de mon expérience en codage est embarquée]), donc j’ai vraiment du mal à trouver par où commencer pour aborder cela dans le contexte de ce qui pourrait être facilement ajouté dans un thème ou un module complémentaire léger similaire.
Pour compléter la réponse de Don, si vous ne voulez que cette fonctionnalité sur la fenêtre modale de partage de sujet, vous pouvez essayer ce composant :
Nous recevons une erreur interne du serveur 500 lorsque nous essayons de l’installer
Vous n’avez pas, en tant qu’auteur, quelques conseils sur ce que je devrais rechercher pour résoudre ce problème ?
Je suppose que c’est parce que nous utilisons une version d’un an de la branche stable de Discourse, et probablement que quelque chose que vous avez fait n’est pas compatible avec cela (du moins, en supposant que cela fonctionne pour vous sur la version live). Si vous pouvez m’orienter dans la bonne direction quant à ce que je devrais rechercher en termes de différences, puisque vous semblez beaucoup plus familier avec tout cela que moi, je serais plus qu’heureux de forker le dépôt et de faire le travail réel pour le rétroporter moi-même plutôt que de vous faire continuer à travailler pour moi.
En regardant, il me semble que l’API pourrait fonctionner différemment
J’ai pris ce code original
import { apiInitializer } from "discourse/lib/api";
import discourseComputed from "discourse-common/utils/decorators";
function longDateNoYearWithSeconds(dt) {
if (!dt) {
return;
}
if (new Date().getFullYear() !== dt.getFullYear()) {
return moment(dt).format(settings.share_topic_date_with_year_format);
} else {
return moment(dt).format(settings.share_topic_date_without_year_format);
}
}
export default apiInitializer("1.8.0", (api) => {
api.modifyClass("component:modal/share-topic", {
pluginId: "share-topic",
@discourseComputed("post.created_at", "post.wiki", "post.last_wiki_edit")
displayDate(createdAt, wiki, lastWikiEdit) {
const date = wiki && lastWikiEdit ? lastWikiEdit : createdAt;
return longDateNoYearWithSeconds(new Date(date));
},
});
});
et je l’ai mis à jour comme suit :
import { withPluginApi } from "discourse/lib/plugin-api";
import discourseComputed, { on } from "discourse-common/utils/decorators";
function longDateNoYearWithSeconds(dt) {
if (!dt) {
return;
}
if (new Date().getFullYear() !== dt.getFullYear()) {
return moment(dt).format(settings.share_topic_date_with_year_format);
} else {
return moment(dt).format(settings.share_topic_date_without_year_format);
}
}
export default {
name: "post-timestamp-mod",
initialize(container) {
withPluginApi("0.10.0", (api) => {
api.modifyClass("component:modal/share-topic", {
pluginId: "share-topic",
@discourseComputed("post.created_at", "post.wiki", "post.last_wiki_edit")
displayDate(createdAt, wiki, lastWikiEdit) {
const date = wiki && lastWikiEdit ? lastWikiEdit : createdAt;
return longDateNoYearWithSeconds(new Date(date));
},
});
});
}
}
en me basant sur ce que je vois dans d’autres composants de thème que nous avons.
Ça ne fonctionne pas encore, mais peut-être que je trouverai une solution éventuellement ? Où pourrais-je chercher pour comprendre ce que fait tout ce truc d’API ?