Comment faire pour que les horodatages des messages affichent les secondes ?

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.

Bonjour :wave:

Ceci utilise les formats suivants.


Vous pouvez le modifier dans /admin/customize/site_texts

Recherchez ces deux chaînes.

dates.long_date_with_year
dates.long_date_without_year


dates.long_date_with_year

Par défaut
MMM D, YYYY LT

Modifiez-le en
MMM D, YYYY LTS


dates.long_date_without_year

Par défaut
MMM D, LT

Modifiez-le en
MMM D, LTS


:warning: Remarque : Cela changera partout sur votre site où ce format de date est utilisé.

9 « J'aime »

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 :

Paramètres :

Résultat :

:+1:

6 « J'aime »

C’est incroyable

Mais

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 ?