Come far apparire i secondi nei timestamp dei post?

Ho cercato ma non ho trovato nulla: qual è il modo più semplice per mostrare l’ora in cui è stato pubblicato un post fino al secondo nel popup di condivisione?

Ogni post ha già il timestamp esatto disponibile nell’HTML, quindi queste informazioni sono certamente presenti, ma non sono sicuro al 100% quale sia il modo migliore per aggiornare questo testo (che, purtroppo, sembra essere codificato in modo fisso, non una data formattata) per aggiungere i secondi. Ho più familiarità con CSS e non tanto con JavaScript (posso leggerlo e capirlo abbastanza bene, ma non sono abbastanza esperto da conoscere il modo “corretto” per iniziare ad affrontare questo problema [la maggior parte della mia esperienza di codifica è embedded]), quindi sto davvero lottando per capire da dove iniziare ad affrontare questo problema nel contesto di ciò che potrebbe essere facilmente aggiunto in un tema o in un add-on simile e leggero.

Ciao :wave:

Questo utilizza i seguenti formati.


Puoi cambiarlo in /admin/customize/site_texts

Cerca queste due stringhe.

dates.long_date_with_year
dates.long_date_without_year


dates.long_date_with_year

Predefinito
MMM D, YYYY LT

Cambialo in
MMM D, YYYY LTS


dates.long_date_without_year

Predefinito
MMM D, LT

Cambialo in
MMM D, LTS


:warning: Nota: questo cambierà ovunque sul tuo sito in cui viene utilizzato questo formato di data.

9 Mi Piace

Per completare la risposta del buon Don, se vuoi solo su questa modale di condivisione argomento, puoi provare questo componente:

Impostazioni:

Risultato:

:+1:

6 Mi Piace

Sembra incredibile

Ma

Riceviamo un errore interno del server 500 quando proviamo a installarlo

Non suppongo che tu, in quanto autore, abbia qualche consiglio su cosa dovrei cercare per risolvere questo problema?

La mia ipotesi è che sia dovuto al fatto che stiamo eseguendo una versione di Discourse di un anno fa del ramo stabile, e probabilmente qualcosa che hai fatto non funziona bene con quella (almeno, supponendo che funzioni per te sulla build live). Se puoi indicarmi la direzione vagamente corretta per quanto riguarda ciò che dovrei cercare in termini di differenze, dato che sembri molto più familiare con tutto questo di me, sarei più che felice di fare un fork del repository e fare il lavoro effettivo per eseguirne il backport io stesso piuttosto che farti continuare a lavorare per me.

Dando uma olhada, parece que a API pode funcionar de forma diferente

Peguei este código 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));
    },
  });
});

e atualizei para este:

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));
        },
      });
    });
  }
}

com base no que estou vendo em outros componentes de tema que temos

Ainda não funciona, mas talvez eu descubra eventualmente? Onde eu procuraria para descobrir o que toda essa coisa de API está fazendo?