¿Cómo hacer que las marcas de tiempo de las publicaciones muestren segundos?

Busqué esto pero no encontré nada: ¿cuál sería la forma más sencilla de mostrar la hora en que se hizo una publicación hasta el segundo en la ventana emergente de compartir?

Cada publicación ya tiene la marca de tiempo exacta disponible en el HTML, por lo que esta información ciertamente está presente, pero no estoy 100% seguro de cuál sería la mejor manera de actualizar este texto (que, lamentablemente, parece estar codificado, no una fecha formateada) para agregar los segundos. Estoy más familiarizado con CSS y no tanto con JavaScript (puedo leerlo y entenderlo lo suficientemente bien, pero no tengo la experiencia suficiente para saber la forma “correcta” de empezar a intentar resolver esto [la mayor parte de mi experiencia en codificación está integrada]), así que realmente me cuesta averiguar por dónde empezar a abordar esto en el contexto de lo que se podría agregar fácilmente en un tema o un complemento similar de peso ligero.

Hola :wave:

Esto utiliza los siguientes formatos.


Puedes cambiarlo en /admin/customize/site_texts

Busca estas dos cadenas.

dates.long_date_with_year
dates.long_date_without_year


dates.long_date_with_year

Por defecto
MMM D, YYYY LT

Cámbialo a
MMM D, YYYY LTS


dates.long_date_without_year

Por defecto
MMM D, LT

Cámbialo a
MMM D, LTS


:warning: Nota: Esto cambiará en todas partes de tu sitio donde se utilice este formato de fecha.

9 Me gusta

Para completar la buena respuesta de Don, si solo lo quieres en este modal de compartir tema, puedes probar este componente:

Configuración:

Resultado:

:+1:

6 Me gusta

Esto parece increíble

Pero

Obtenemos un error interno del servidor 500 cuando intentamos instalarlo

¿Supongo que usted, como autor, tiene algún consejo sobre qué debería buscar para resolver esto?

Mi suposición es que se debe a que estamos ejecutando una versión de Discourse de rama estable de un año y, probablemente, algo que usted ha hecho no funciona bien con eso (al menos, asumiendo que funciona para usted en la compilación en vivo). Si puede indicarme la dirección vagamente correcta en cuanto a qué necesitaría buscar en términos de diferencias, ya que parece que usted está mucho más familiarizado con todo esto que yo, estaría más que feliz de bifurcar el repositorio y hacer el trabajo real para adaptarlo yo mismo en lugar de hacer que usted continúe trabajando para mí.

Mirando, me parece que la API podría funcionar de manera diferente

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

y lo he actualizado a esto:

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

basándome en lo que veo en otros componentes de temas que tenemos

Todavía no funciona, pero ¿quizás eventualmente lo descubra? ¿Dónde podría buscar para averiguar qué está haciendo todo este asunto de la API?