Wie man Zeitstempel von Beiträgen Sekunden anzeigen lässt?

Ich habe danach gesucht, aber nichts gefunden – was wäre der einfachste Weg, die Zeit, zu der ein Beitrag erstellt wurde, bis auf die Sekunde genau im Share-Popup anzuzeigen?

Jeder Beitrag hat bereits den genauen Zeitstempel im HTML verfügbar, daher sind diese Informationen sicherlich vorhanden, aber ich bin mir nicht zu 100 % sicher, wie man diesen Text (der leider fest codiert zu sein scheint und kein formatiertes Datum ist) am besten aktualisiert, um die Sekunden hinzuzufügen. Ich bin hauptsächlich mit CSS vertraut und nicht so sehr mit JavaScript (ich kann es gut genug lesen und verstehen, bin aber nicht erfahren genug, um den „richtigen“ Weg zu kennen, um überhaupt zu versuchen, dies zu lösen [die meiste meiner Programmiererfahrung ist Embedded]), daher fällt es mir wirklich schwer herauszufinden, wo ich überhaupt anfangen soll, dies im Kontext dessen anzugehen, was einfach in ein Theme oder ein ähnliches leichtgewichtiges Add-on aufgenommen werden könnte.

Hallo :wave:

Dies verwendet die folgenden Formate.


Sie können es unter /admin/customize/site_texts ändern

Suchen Sie nach diesen beiden Zeichenfolgen.

dates.long_date_with_year
dates.long_date_without_year


dates.long_date_with_year

Standard
MMM D, YYYY LT

Ändern Sie es zu
MMM D, YYYY LTS


dates.long_date_without_year

Standard
MMM D, LT

Ändern Sie es zu
MMM D, LTS


:warning: Hinweis: Dies ändert überall auf Ihrer Website, wo dieses Datumsformat verwendet wird.

9 „Gefällt mir“

Um die gute Antwort von Don zu vervollständigen, wenn Sie nur dieses Share-Topic-Modal wünschen, können Sie diese Komponente ausprobieren:

Einstellungen:

Ergebnis:

:+1:

6 „Gefällt mir“

Okay, das klingt unglaublich

Aber

Wir erhalten einen 500 Internal Server Error, wenn wir versuchen, es zu installieren

Ich nehme nicht an, dass Sie als Autor Tipps haben, wonach ich suchen sollte, um dies zu beheben?

Meine Annahme ist, dass es daran liegt, dass wir eine ein Jahr alte Stable-Branch-Version von Discourse verwenden und wahrscheinlich etwas, das Sie getan haben, nicht gut damit funktioniert (zumindest, wenn es bei Ihnen mit dem Live-Build funktioniert). Wenn Sie mich grob in die richtige Richtung weisen könnten, wonach ich in Bezug auf Unterschiede suchen müsste, da Sie damit viel vertrauter zu sein scheinen als ich, wäre ich mehr als glücklich, das Repository zu forken und die eigentliche Arbeit zu leisten, es selbst zurückzuportieren, anstatt Sie weiterhin für mich arbeiten zu lassen.

Ich schaue es mir an, und es scheint mir, dass die API anders funktionieren könnte

Ich habe diesen Originalcode genommen

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

und ihn zu diesem aktualisiert:

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

basierend auf dem, was ich in anderen Theme-Komponenten sehe, die wir haben

Es funktioniert noch nicht, aber vielleicht finde ich das irgendwann noch heraus? Wo könnte ich nachsehen, um herauszufinden, was diese ganze API-Sache macht?