Как сделать, чтобы временные метки постов отображали секунды?

Просмотрел всё вокруг, но ничего не нашёл — какой самый простой способ отобразить время публикации поста с точностью до секунды во всплывающем окне обмена?

У каждого поста уже есть точная временная метка в HTML, так что эта информация точно присутствует, но я не на 100% уверен, какой лучший способ обновить этот текст (который, к сожалению, кажется жёстко заданным, а не отформатированной датой), чтобы добавить секунды. Я в основном привык к CSS и не очень хорошо разбираюсь в JavaScript (я могу читать и понимать его достаточно хорошо, но не настолько, чтобы знать «правильный» способ даже начать решать эту задачу [большая часть моего опыта программирования связана с встроенными системами]), поэтому мне очень трудно понять, с чего вообще начать в контексте того, что можно легко добавить в тему или аналогичное лёгкое дополнение.

Привет :wave:

Здесь используются следующие форматы.


Вы можете изменить их в /admin/customize/site_texts.

Найдите эти две строки.

dates.long_date_with_year
dates.long_date_without_year


dates.long_date_with_year

По умолчанию
MMM D, YYYY LT

Измените на
MMM D, YYYY LTS


dates.long_date_without_year

По умолчанию
MMM D, LT

Измените на
MMM D, LTS


:warning: Примечание: Это изменит формат даты во всех местах вашего сайта, где он используется.

Чтобы дополнить ответ милого Донa, если вам нужен только этот модальный диалог для обсуждения темы, вы можете попробовать этот компонент:

Настройки:

Результат:

:+1:

Кажется, это невероятно

Но

При попытке установки мы получаем ошибку 500 Internal Server Error

Не могли бы вы, как автор, дать какие-то советы, на что стоит обратить внимание, чтобы решить эту проблему?

Я предполагаю, что дело в том, что мы используем стабильную ветку Discourse годичной давности, и, вероятно, что-то из сделанного вами несовместимо с ней (по крайней мере, если у вас на рабочей сборке всё работает). Если вы сможете указать мне хотя бы примерно правильное направление, на какие различия мне стоит обратить внимание, поскольку вы, кажется, гораздо лучше разбираетесь во всём этом, чем я, я с радостью сделаю форк репозитория и самостоятельно займусь портированием, чтобы не заставлять вас продолжать работать для меня.

Посмотрев на код, мне кажется, что API может работать иначе.

Я взял этот исходный код:

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

и обновил его до этого:

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

исходя из того, что я вижу в других компонентах темы.

Пока это не работает, но, возможно, я когда-нибудь разберусь? Где мне искать информацию о том, что делает весь этот API?