Como exibir segundos nos timestamps das postagens?

Procurei por isso, mas não encontrei nada - qual seria a maneira mais simples de mostrar a hora em que uma postagem foi feita até o segundo no popup de compartilhamento?

Cada postagem já tem o timestamp exato disponível no HTML, então essa informação certamente está presente, mas não tenho 100% de certeza qual seria a melhor maneira de atualizar este texto (que, infelizmente, parece ser codificado, não uma data formatada) para adicionar os segundos. Estou mais acostumado com CSS e não tanto com JavaScript (consigo ler e entender bem o suficiente, mas não sou experiente o suficiente para saber a maneira “correta” de sequer começar a tentar resolver isso [a maior parte da minha experiência de codificação é embarcada]), então estou realmente lutando para descobrir por onde começar a abordar isso no contexto do que poderia ser facilmente adicionado em um tema ou add-on leve semelhante.

Olá :wave:

Isso usa os seguintes formatos.


Você pode alterá-lo em /admin/customize/site_texts

Procure por estas duas strings.

dates.long_date_with_year
dates.long_date_without_year


dates.long_date_with_year

Padrão
MMM D, YYYY LT

Altere para
MMM D, YYYY LTS


dates.long_date_without_year

Padrão
MMM D, LT

Altere para
MMM D, LTS


:warning: Observação: Isso mudará em todos os lugares do seu site onde este formato de data é usado.

9 curtidas

Para completar a boa resposta do Don, se você quiser apenas neste modal de tópico de compartilhamento, você pode tentar este componente:

Configurações:

Resultado:

:+1:

6 curtidas

Ok, isso parece incrível

Mas

Recebemos um erro interno do servidor 500 ao tentar instalá-lo

Você, como autor, tem alguma dica sobre o que devo procurar para resolver isso?

Minha suposição é que seja porque estamos executando uma versão de um ano do branch estável do Discourse, e provavelmente algo que você fez não funciona bem com isso (pelo menos, assumindo que funciona para você na versão mais recente). Se você puder me apontar na direção vagamente correta sobre o que eu precisaria procurar em termos de diferenças, já que você parece muito mais familiarizado com tudo isso do que eu, ficaria mais do que feliz em fazer um fork do repositório e fazer o trabalho real de portar para trás eu mesmo, em vez de fazer você continuar trabalhando para mim.

Ao dar 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 o atualizei para isto:

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 isso eventualmente? Onde eu procuraria para descobrir o que toda essa coisa de API está fazendo?